参数

参数用于防范 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 注解
字符型 整数 UTF-16
DateOnly 真正 儒略日值
DateTime 真正 儒略日值
日期时间偏移 (DateTimeOffset) 真正 儒略日值
Guid 团块
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 不支持输出参数。 而是返回查询结果中的值。

另请参阅