Udostępnij za pośrednictwem


Parametry

Parametry są używane do ochrony przed atakami polegającymi na wstrzyknięciu kodu SQL. Zamiast łączyć dane wejściowe użytkownika z instrukcjami SQL, użyj parametrów, aby upewnić się, że dane wejściowe są traktowane tylko jako wartość literału i nigdy nie są wykonywane. W programie SQLite parametry są zwykle dozwolone w dowolnym miejscu, w których literał jest dozwolony w instrukcjach SQL.

Parametry mogą być poprzedzone prefiksem , :@lub $.

command.CommandText =
@"
    INSERT INTO user (name)
    VALUES ($name)
";
command.Parameters.AddWithValue("$name", name);

Zobacz Typy danych, aby uzyskać szczegółowe informacje na temat sposobu mapowania wartości platformy .NET na wartości SQLite.

Obcinania

Size Użyj właściwości , aby obcinać wartości TEXT i BLOB.

// Truncate name to 30 characters
command.Parameters.AddWithValue("$name", name).Size = 30;

Typy alternatywne

Czasami warto użyć alternatywnego typu SQLite. W tym celu należy ustawić SqliteType właściwość .

Można użyć następujących mapowań typów alternatywnych. Aby zapoznać się z domyślnymi mapowaniami, zobacz Typy danych.

Wartość SqliteType Uwagi
Char Integer UTF-16
DateOnly Rzeczywista Wartość dnia juliana
DateTime Rzeczywista Wartość dnia juliana
DateTimeOffset Rzeczywista Wartość dnia juliana
Identyfikator GUID Obiekt blob
TimeOnly Rzeczywista W dniach
przedział_czasu Rzeczywista W dniach
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;

Parametry wyjściowe

SqLite nie obsługuje parametrów wyjściowych. Zamiast tego zwracaj wartości w wynikach zapytania.

Zobacz też