Поделиться через


Параметры

Параметры используются для защиты от атак SQL-инъекций. Вместо объединения входных данных пользователя с инструкциями SQL используйте параметры, чтобы гарантировать, что входные данные рассматриваются только как литеральное значение и никогда не выполняются. В SQLite параметры обычно допускаются в любом месте, где разрешен литерал в инструкциях SQL.

Параметры можно префиксировать с помощью :либо , @либо $.

command.CommandText = "INSERT INTO user (name) VALUES ($name)";
command.Parameters.AddWithValue("$name", name);

Сведения о сопоставлении значений .NET со значениями SQLite см. в разделе "Типы данных ".

Усечение

Используйте свойство Size для усечения значений TEXT и BLOB.

// Truncate name to 30 characters
command.Parameters.AddWithValue("$name", name).Size = 30;

Альтернативные типы

Иногда может потребоваться использовать альтернативный тип SQLite. Сделайте это, установив свойство SqliteType.

Можно использовать следующие сопоставления альтернативных типов. Сопоставления по умолчанию см. в разделе "Типы данных".

Ценность тип Sqlite Замечания
Уголь Целое число UTF-16
ТолькоДата Реальный Значение дня Джулиана
дата и время Реальный Значение дня Джулиана
DateTimeOffset (смещение даты и времени) Реальный Значение дня Джулиана
Гид блоб
TimeOnly Реальный В днях
Интервал времени Реальный В днях
command.CommandText =
@"
    SELECT count(*)
    FROM task
    WHERE finished IS NULL
        AND julianday('now') - julianday(started) > $expected
";
// Convert TimeSpan to days instead of text
command.Parameters.AddWithValue("$expected", expected).SqliteType = SqliteType.Real;

Выходные параметры

SQLite не поддерживает выходные параметры. Вместо этого возвращают значения в результатах запроса.

См. также