Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
SQLite má pouze čtyři primitivní datové typy: INTEGER, REAL, TEXTa BLOB. Rozhraní API, která vracejí hodnoty databáze jako object, vždy vrátí pouze jeden 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í.
| platforma .NET | SQLite | Poznámky |
|---|---|---|
| Boolean | INTEGER |
0 nebo 1 |
| Byte | INTEGER | |
| Byte[] | 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 |
| Decimal | TEXT |
0.0########################### formát.
REAL by bylo ztrátové. |
| Double | REAL | |
| Guid | TEXT | 00000000-0000-0000-0000-000000000000 |
| Int16 | INTEGER | |
| Int32 | INTEGER | |
| Int64 | INTEGER | |
| SByte | INTEGER | |
| Single | REAL | |
| String | TEXT | UTF-8 |
| TimeOnly | TEXT | HH:mm:ss.fffffff |
| TimeSpan | TEXT | d.hh:mm:ss.fffffff |
| UInt16 | INTEGER | |
| UInt32 | INTEGER | |
| UInt64 | INTEGER | 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.
| platforma .NET | SQLite | Poznámky |
|---|---|---|
| Char | INTEGER | UTF-16 |
| DateOnly | REAL | Hodnota julianského dne |
| DateTime | REAL | Hodnota julianského dne |
| DateTimeOffset | REAL | Hodnota julianského dne |
| Guid | BLOB | |
| TimeOnly | REAL | Ve dnech |
| TimeSpan | REAL | Ve dnech |
Například následující dotaz načte hodnotu TimeSpan ze REAL sloupce 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žít 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.