Freigeben über


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.

Siehe auch