Aracılığıyla paylaş


Veri türleri

SQLite yalnızca dört temel veri türüne sahiptir: INTEGER, REAL, TEXTve BLOB. Veritabanı değerlerini olarak object döndüren API'ler bu dört türden yalnızca birini döndürür. Ek .NET türleri Microsoft.Data.Sqlite tarafından desteklenir, ancak değerler sonuçta bu türlerle dört temel türden biri arasında zorunlu kalır.

.NET SQLite Açıklamalar
Boolean INTEGER 0 veya 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########################### biçim. REAL kaybeden olurdu.
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 SS:mm:ss.fffffff
TimeSpan TEXT d.hh:mm:ss.fffffff
UInt16 INTEGER
UInt32 INTEGER
UInt64 INTEGER Büyük değerler taşması

Alternatif türler

Bazı .NET türleri alternatif SQLite türlerinden okunabilir. Parametreler bu alternatif türleri kullanacak şekilde de yapılandırılabilir. Daha fazla bilgi için bkz . Parametreler.

.NET SQLite Açıklamalar
Char INTEGER UTF-16
DateOnly REAL Jülyen gün değeri
DateTime REAL Jülyen gün değeri
DateTimeOffset REAL Jülyen gün değeri
Guid BLOB
TimeOnly REAL Gün olarak
TimeSpan REAL Gün olarak

Örneğin, aşağıdaki sorgu sonuç kümesindeki bir REAL sütundan TimeSpan değerini okur.

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}.");
    }
}

Sütun türleri

SQLite, bir değerin türünün depolandığı sütunla değil değerle ilişkilendirildiği dinamik bir tür sistemi kullanır. İstediğiniz sütun türü adını kullanabilirsiniz. Microsoft.Data.Sqlite bu adlara ek semantik uygulamaz.

Sütun türü adı, tür bağımlılığı üzerinde bir etki yapar. Sık karşılaşılan bir sorun, STRING sütun türü kullanıldığında değerleri INTEGER veya REALdeğerine dönüştürmeyi deneyerek beklenmeyen sonuçlara yol açabilmesidir. Yalnızca dört temel SQLite türü adı kullanmanızı öneririz: INTEGER, REAL, TEXTve BLOB.

SQLite uzunluk, duyarlık ve ölçek gibi tür modellerini belirtmenize olanak tanır, ancak veritabanı altyapısı tarafından uygulanmaz. Uygulamanız bunları zorunlu tutmaktan sorumludur.

Ayrıca bakınız