Parametrar
Parametrar används för att skydda mot SQL-inmatningsattacker. I stället för att sammanfoga användarindata med SQL-instruktioner använder du parametrar för att säkerställa att indata bara behandlas som ett literalvärde och aldrig körs. I SQLite tillåts parametrar vanligtvis var som helst där en literal tillåts i SQL-instruktioner.
Parametrar kan prefixeras med antingen :
, @
eller $
.
command.CommandText =
@"
INSERT INTO user (name)
VALUES ($name)
";
command.Parameters.AddWithValue("$name", name);
Mer information om hur .NET-värden mappas till SQLite-värden finns i Datatyper .
Trunkering
Använd egenskapen Size för att trunkera TEXT- och BLOB-värden.
// Truncate name to 30 characters
command.Parameters.AddWithValue("$name", name).Size = 30;
Alternativa typer
Ibland kanske du vill använda en alternativ SQLite-typ. Gör detta genom att ange egenskapen SqliteType .
Följande alternativa typmappningar kan användas. Standardmappningar finns i Datatyper.
Värde | SqliteType | Kommentarer |
---|---|---|
Char | Integer | UTF-16 |
DateOnly | Real | Julians dagvärde |
Datum/tid | Real | Julians dagvärde |
DateTimeOffset | Real | Julians dagvärde |
GUID | Blob | |
TimeOnly | Real | I dagar |
TimeSpan | Real | I dagar |
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;
Utdataparametrar
SQLite stöder inte utdataparametrar. Returnera värden i frågeresultatet i stället.