Paramètres
Les paramètres sont utilisés pour se protéger contre les attaques par injection SQL. Au lieu de concaténer l’entrée utilisateur avec des instructions SQL, utilisez des paramètres pour vous assurer que l’entrée n’est jamais traitée comme une valeur littérale et jamais exécutée. Dans SQLite, les paramètres sont généralement autorisés partout où un littéral est autorisé dans les instructions SQL.
Les paramètres peuvent être préfixés avec :
, @
ou $
.
command.CommandText =
@"
INSERT INTO user (name)
VALUES ($name)
";
command.Parameters.AddWithValue("$name", name);
Pour plus d’informations sur la façon dont les valeurs .NET sont mappées aux valeurs SQLite, consultez Types de données.
Troncation
Utilisez la propriété Size pour tronquer les valeurs TEXT et BLOB.
// Truncate name to 30 characters
command.Parameters.AddWithValue("$name", name).Size = 30;
Autres types
Parfois, vous souhaiterez peut-être utiliser un autre type SQLite. Pour ce faire, définissez la propriété SqliteType.
Vous pouvez utiliser les mappages de types alternatifs suivants. Pour connaître les mappages par défaut, consultez Types de données.
Valeur | SqliteType | Notes |
---|---|---|
Char | Integer | UTF-16 |
DateOnly | Real | Valeur du jour julian |
DateTime | Real | Valeur du jour julian |
DateTimeOffset | Real | Valeur du jour julian |
Guid | Objet blob | |
TimeOnly | Real | En jours |
TimeSpan | Real | En jours |
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;
Paramètres de sortie
SQLite ne prend pas en charge les paramètres de sortie. Retournez plutôt des valeurs dans les résultats de la requête.