參數

參數可用來防範 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 Real 凱撒曆日期值
Datetime Real 凱撒曆日期值
DateTimeOffset Real 凱撒曆日期值
GUID Blob
TimeOnly Real 以天為單位
TimeSpan Real 以天為單位
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 不支援輸出參數。 改為傳回查詢結果中的值。

另請參閱