Parameter
Parameter werden zum Schutz vor Angriffen durch Einschleusung von SQL-Befehlen verwendet. Anstatt Benutzereingaben mit SQL-Anweisungen zu verketten, stellen Sie mithilfe von Parametern sicher, dass Eingaben nur als Literalwert behandelt und nie ausgeführt werden. In SQLite sind Parameter in der Regel überall dort zulässig, wo in SQL-Anweisungen Literalwerte zulässig sind.
Parametern können die Präfixe :
, @
oder $
vorangestellt werden.
command.CommandText =
@"
INSERT INTO user (name)
VALUES ($name)
";
command.Parameters.AddWithValue("$name", name);
Weitere Informationen zur Zuordnung von .NET-Werten zu SQLite-Werten finden Sie unter Datentypen.
Abschneiden
Verwenden Sie zum Abschneiden von TEXT- und BLOB-Werten die Eigenschaft Size.
// Truncate name to 30 characters
command.Parameters.AddWithValue("$name", name).Size = 30;
Alternative Typen
Möglicherweise sollten Sie ab und zu einen alternativen SQLite-Typ verwenden. Legen Sie dazu die Eigenschaft SqliteType fest.
Die folgende Zuordnung von alternativen Datentypen ist hierbei nützlich. Die Standardzuordnungen finden Sie unter Datentypen.
Wert | SQLite-Typ | Hinweise |
---|---|---|
Char | Ganze Zahl | UTF-16 |
DateOnly | Real | Wert für julianischen Tag |
DateTime | Real | Wert für julianischen Tag |
DateTimeOffset | Real | Wert für julianischen Tag |
GUID | Blob | |
TimeOnly | Real | In Tagen |
TimeSpan | Real | In Tagen |
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;
Ausgabeparameter
Ausgabeparameter werden von SQLite nicht unterstützt. Geben Sie stattdessen Werte in den Abfrageergebnissen zurück.