Partager via


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.

Voir aussi