Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
SQLite hanya memiliki empat jenis data primitif: INTEGER, , REALTEXT, 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 | Komentar |
|---|---|---|
| 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.FFFFFFFzzz |
| Decimal | TEXT |
0.0########################### format.
REAL akan rugi. |
| 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 | Nilai besar meluap |
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 | Komentar |
|---|---|---|
| Char | INTEGER | UTF-16 |
| DateOnly | REAL | Nilai Hari Julian |
| DateTime | REAL | Nilai Hari Julian |
| DateTimeOffset | REAL | Nilai Hari Julian |
| Guid | BLOB | |
| TimeOnly | REAL | Dalam hari |
| TimeSpan | REAL | Dalam hari |
Misalnya, kueri berikut membaca nilai TimeSpan dari REAL kolom dalam kumpulan 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 ke INTEGER atau REAL, yang dapat menyebabkan hasil yang tidak terduga. Sebaiknya hanya gunakan empat nama jenis SQLite primitif: INTEGER, , REALTEXT, 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.