Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.