Parâmetros
Os parâmetros são usados para proteção contra ataques de injeção de SQL. Em vez de concatenar a entrada do usuário com instruções SQL, use parâmetros para garantir que a entrada só seja tratada como um valor literal, não sendo nunca executada. No SQLite, os parâmetros normalmente são permitidos em qualquer lugar em que um literal é permitido em instruções SQL.
Os parâmetros podem ser prefixados com :
, @
ou $
.
command.CommandText =
@"
INSERT INTO user (name)
VALUES ($name)
";
command.Parameters.AddWithValue("$name", name);
Confira Tipos de dados para detalhes sobre como os valores .NET são mapeados para valores SQLite.
Truncation
Use a propriedade Size para truncar valores TEXT e BLOB.
// Truncate name to 30 characters
command.Parameters.AddWithValue("$name", name).Size = 30;
Tipos alternativos
Às vezes pode ser útil usar um tipo de SQLite alternativo. Faça isso definindo a propriedade SqliteType.
Os mapeamentos de tipo alternativo a seguir podem ser usados. Para os mapeamentos padrão, confira Tipos de dados.
Valor | SqliteType | Comentários |
---|---|---|
Char | Integer | UTF-16 |
DateOnly | Real | Valor do dia de Julian |
Datetime | Real | Valor do dia de Julian |
DateTimeOffset | Real | Valor do dia de Julian |
Guid | Blob | |
TimeOnly | Real | Em dias |
TimeSpan | Real | Em dias |
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;
Parâmetros de saída
O SQLite não dá suporte a parâmetros de saída. Retorne os valores nos resultados da consulta, em vez disso.