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


Параметры

Параметры используются для защиты от атак путем внедрения кода 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.

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

Значение SqliteType Замечания
Char Целое UTF-16
DateOnly Вещественное число Значение дня по юлианскому календарю
Дата/время Вещественное число Значение дня по юлианскому календарю
DateTimeOffset Вещественное число Значение дня по юлианскому календарю
GUID BLOB-объект
TimeOnly Вещественное число В днях
TimeSpan Вещественное число В днях
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 не поддерживает выходные параметры. Вместо этого используются возвращаемые значения в результатах запроса.

См. также