Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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, gdzie literał jest dozwolony w poleceniach 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.
Przycinanie
Użyj właściwości Size do skrócenia 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. Aby to zrobić, ustaw właściwość SqliteType.
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 | Liczba całkowita | UTF-16 |
| DataTylko | Rzeczywisty | Wartość dnia juliańskiego |
| Data i Czas | Rzeczywisty | Wartość dnia juliańskiego |
| PrzesunięcieDatyICzasu | Rzeczywisty | Wartość dnia juliańskiego |
| Przewodnik | Blob | |
| TimeOnly | Rzeczywisty | W dniach |
| Przedział czasu | Rzeczywisty | 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.