Bagikan melalui


Jenis data

SQLite hanya memiliki empat jenis data primitif: INTEGER, REAL, TEXT, dan BLOB. API yang mengembalikan nilai database sebagai object hanya akan mengembalikan salah satu dari empat jenis ini. Jenis .NET tambahan didukung oleh Microsoft.Data.Sqlite, tetapi nilai pada akhirnya dikoerasi antara jenis ini dan salah satu dari empat jenis primitif.

.NET SQLite Keterangan
Boolean INTEGER 0 atau 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. FFFFFFF
Decimal TEXT 0.0########################### format. REAL akan rugi.
Laju REAL
Guid TEXT 00000000-0000-0000-0000-000000000000
Int16 INTEGER
Int32 INTEGER
Int64 INTEGER
SByte INTEGER
Tunggal REAL
String TEXT UTF-8
TimeOnly TEXT HH:mm:ss.fffffff
TimeSpan TEXT d.hh:mm:ss.fffffff
UInt16 INTEGER
UInt32 INTEGER
UInt64 INTEGER Luapan nilai besar

Jenis alternatif

Beberapa jenis .NET dapat dibaca dari jenis SQLite alternatif. Parameter juga dapat dikonfigurasi untuk menggunakan jenis alternatif ini. Untuk informasi selengkapnya, lihat Parameter.

.NET SQLite Keterangan
Char INTEGER UTF-16
DateOnly REAL Nilai hari Julian
DateTime REAL Nilai hari Julian
DateTimeOffset REAL Nilai hari Julian
Guid BLOB
TimeOnly REAL Selama beberapa hari
TimeSpan REAL Selama beberapa hari

Misalnya, kueri berikut membaca nilai TimeSpan dari kolom REAL dalam tataan hasil.

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

Jenis kolom

SQLite menggunakan sistem jenis dinamis di mana jenis nilai dikaitkan dengan nilai itu sendiri dan bukan kolom tempat nilai disimpan. Anda bebas menggunakan nama jenis kolom apa pun yang Anda inginkan. Microsoft.Data.Sqlite tidak akan menerapkan semantik tambahan apa pun ke nama-nama ini.

Nama jenis kolom memang berdampak pada afinitas jenis. Salah satu gotcha umum adalah bahwa menggunakan jenis kolom STRING akan mencoba mengonversi nilai menjadi INTEGER atau REAL, yang dapat menyebabkan hasil yang tidak terduga. Sebaiknya hanya gunakan empat nama jenis SQLite primitif: INTEGER, REAL, TEXT, dan BLOB.

SQLite memungkinkan Anda menentukan faset jenis seperti panjang, presisi, dan skala, tetapi tidak diberlakukan oleh mesin database. Aplikasi Anda bertanggung jawab untuk memberlakukan ini.

Lihat juga