Udostępnij za pośrednictwem


Typy danych

SqLite ma tylko cztery pierwotne typy danych: INTEGER, REAL, TEXT i BLOB. Interfejsy API, które zwracają wartości bazy danych jako object, będą zwracać tylko jeden z tych czterech typów. Dodatkowe typy .NET są obsługiwane przez bibliotekę Microsoft.Data.Sqlite, ale wartości są ostatecznie konwertowane między tymi typami a jednym z czterech typów pierwotnych.

.SIEĆ SQLite Uwagi
boolean LICZBA CAŁKOWITA 0 lub 1
Bajt LICZBA CAŁKOWITA
Bajt[] BLOB (Baza Danych Obiektów Binarowych)
Char TEKST UTF-8
DataTylko TEKST yyyy-MM-dd
Data i Czas TEKST rrrr-MM-dd HH:mm:ss. FFFFFFF
PrzesunięcieDatyICzasu TEKST rrrr-MM-dd HH:mm:ss. FFFFFFFzzz
Liczba dziesiętna TEKST 0.0########################### format. REAL byłby stratą.
Podwójny PRAWDZIWY
Przewodnik TEKST 00000000-0000-0000-0000-000000000000
Int16 LICZBA CAŁKOWITA
Int32 LICZBA CAŁKOWITA
Int64 LICZBA CAŁKOWITA
SByte LICZBA CAŁKOWITA
Singiel PRAWDZIWY
Sznurek TEKST UTF-8
TimeOnly TEKST HH:mm:ss.fffffff
Przedział czasu TEKST d.hh:mm:ss.fffffff
UInt16 LICZBA CAŁKOWITA
UInt32 LICZBA CAŁKOWITA
UInt64 LICZBA CAŁKOWITA Duże wartości prowadzą do przepełnienia

Typy alternatywne

Niektóre typy platformy .NET można odczytać z alternatywnych typów SQLite. Parametry można również skonfigurować do używania tych typów alternatywnych. Aby uzyskać więcej informacji, zobacz Parametry.

.SIEĆ SQLite Uwagi
Char LICZBA CAŁKOWITA UTF-16
DataTylko PRAWDZIWY Wartość dnia juliańskiego
Data i Czas PRAWDZIWY Wartość dnia juliańskiego
PrzesunięcieDatyICzasu PRAWDZIWY Wartość dnia juliańskiego
Przewodnik BLOB (Baza Danych Obiektów Binarowych)
TimeOnly PRAWDZIWY W dniach
Przedział czasu PRAWDZIWY W dniach

Na przykład następujące zapytanie odczytuje wartość TimeSpan z kolumny REAL w zestawie wyników.

command.CommandText =
@"
    SELECT name, julianday(finished) - julianday(started) AS length
    FROM task
    WHERE finished IS NOT NULL
";
using (var reader = command.ExecuteReader())
{
    while (reader.Read())
    {
        var name = reader.GetString(0);
        var length = reader.GetTimeSpan(1);

        Console.WriteLine($"'{name}' took {length}.");
    }
}

Typy kolumn

SqLite używa dynamicznego systemu typów, w którym typ wartości jest skojarzony z samą wartością, a nie z kolumną, w której jest przechowywany. Możesz używać dowolnej nazwy typu kolumny. Microsoft.Data.Sqlite nie będzie stosować żadnych dodatkowych semantyki do tych nazw.

Nazwa typu kolumny faktycznie ma wpływ na powiązanie typu. Jedną z typowych pułapek jest to, że użycie typu kolumny STRING spowoduje próbę konwersji wartości na INTEGER lub REAL, co może prowadzić do nieoczekiwanych wyników. Zalecamy używanie tylko czterech pierwotnych nazw typów SQLite: INTEGER, REAL, TEXT i BLOB.

SQLite umożliwia określenie aspektów typu, takich jak długość, precyzja i skala, ale nie są one wymuszane przez silnik bazy danych. Aplikacja jest odpowiedzialna za wymuszanie tych czynności.

Zobacz także