參數
參數可用來防範 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 不支援輸出參數。 改為傳回查詢結果中的值。