Sdílet prostřednictvím


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.

Viz také