Datové typy
SQLite má pouze čtyři primitivní datové typy: INTEGER, REAL, TEXT a BLOB. Rozhraní API, která vracejí hodnoty databáze jako object
jedno z těchto čtyř typů, vrátí pouze jednu z těchto čtyř typů. Microsoft.Data.Sqlite podporuje další typy .NET, ale hodnoty se nakonec mezi těmito typy a jedním ze čtyř primitivních typů přetěžují.
.NET | SQLite | Poznámky |
---|---|---|
Logická hodnota | CELÉ ČÍSLO | 0 nebo 1 |
Byte | CELÉ ČÍSLO | |
Bajt[] | BLOB | |
Char | TEXT | UTF-8 |
DateOnly | TEXT | yyyy-MM-dd |
DateTime | TEXT | yyyy-MM-dd HH:mm:ss. FFFFFFF |
DateTimeOffset | TEXT | yyyy-MM-dd HH:mm:ss. FFFFFFFzzz |
Desetinné číslo | TEXT | 0.0########################### Formát. REAL by bylo ztráta. |
Hodnota s dvojitou přesností | SKUTEČNÉ | |
Guid | TEXT | 00000000-0000-0000-0000-000000000000 |
Int16 | CELÉ ČÍSLO | |
Int32 | CELÉ ČÍSLO | |
Int64 | CELÉ ČÍSLO | |
SByte | CELÉ ČÍSLO | |
Jeden | SKUTEČNÉ | |
String | TEXT | UTF-8 |
TimeOnly | TEXT | HH:mm:ss.fffffff |
TimeSpan | TEXT | d.hh:mm:ss.fffffff |
UInt16 | CELÉ ČÍSLO | |
UInt32 | CELÉ ČÍSLO | |
UInt64 | CELÉ ČÍSLO | Přetečení velkých hodnot |
Alternativní typy
Některé typy .NET lze číst z alternativních typů SQLite. Parametry lze také nakonfigurovat tak, aby používaly tyto alternativní typy. Další informace najdete v tématu Parametry.
.NET | SQLite | Poznámky |
---|---|---|
Char | CELÉ ČÍSLO | UTF-16 |
DateOnly | SKUTEČNÉ | Hodnota julianského dne |
DateTime | SKUTEČNÉ | Hodnota julianského dne |
DateTimeOffset | SKUTEČNÉ | Hodnota julianského dne |
Guid | BLOB | |
TimeOnly | SKUTEČNÉ | Ve dnech |
TimeSpan | SKUTEČNÉ | Ve dnech |
Například následující dotaz načte hodnotu TimeSpan ze sloupce REAL v sadě výsledků.
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 sloupců
SQLite používá systém dynamického typu, ve kterém je typ hodnoty přidružený k samotné hodnotě, a ne sloupec, ve kterém je uložen. Můžete použít jakýkoli název typu sloupce, který chcete použít. Microsoft.Data.Sqlite na tyto názvy nepoužije žádnou další sémantiku.
Název typu sloupce má vliv na spřažení typu. Jedním z běžných potíží je, že použití typu sloupce STRING se pokusí převést hodnoty na INTEGER nebo REAL, což může vést k neočekávaným výsledkům. Doporučujeme používat pouze čtyři primitivní názvy typů SQLite: INTEGER, REAL, TEXT a BLOB.
SQLite umožňuje zadat omezující vlastnosti typu, jako je délka, přesnost a měřítko, ale databázový stroj je nevynucuje. Vaše aplikace zodpovídá za vynucování těchto práv.