Parametri
I parametri vengono usati per proteggersi da attacchi SQL injection. Anziché concatenare l'input utente con istruzioni SQL, usare i parametri per garantire che l'input venga considerato solo come valore letterale e mai eseguito. In SQLite, i parametri in genere sono consentiti ovunque sia consentito un valore letterale nelle istruzioni SQL.
I parametri possono essere preceduti da :
, @
o $
.
command.CommandText =
@"
INSERT INTO user (name)
VALUES ($name)
";
command.Parameters.AddWithValue("$name", name);
Per informazioni dettagliate sul mapping dei valori .NET ai valori SQLite, vedere Tipi di dati.
Troncamento
Usare la proprietà Size per troncare i valori TEXT e BLOB.
// Truncate name to 30 characters
command.Parameters.AddWithValue("$name", name).Size = 30;
Tipi alternativi
In alcuni casi, è possibile usare un tipo SQLite alternativo. A tale fine, impostare la proprietà SqliteType.
È possibile usare i mapping dei tipi alternativi seguenti. Per i mapping predefiniti, vedere Tipi di dati.
Valore | SqliteType | Osservazioni: |
---|---|---|
Char | Intero | UTF-16 |
DateOnly | Reale | Valore del giorno Julian |
Data/Ora | Reale | Valore del giorno Julian |
DateTimeOffset | Reale | Valore del giorno Julian |
GUID | BLOB | |
TimeOnly | Reale | In giorni |
TimeSpan | Reale | In giorni |
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;
Parametri di output
SQLite non supporta i parametri di output. Restituisce invece i valori nei risultati della query.