Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
SQLite possède uniquement quatre types de données primitifs : INTEGER, REAL, TEXT et BLOB. Les API qui retournent des valeurs de base de données en tant que object
seules ne retourneront jamais l’un de ces quatre types. D’autres types .NET sont pris en charge par Microsoft.Data.Sqlite, mais les valeurs sont finalement coercées entre ces types et l’un des quatre types primitifs.
.FILET | SQLite | Remarques |
---|---|---|
Booléen | ENTIER |
0 ou 1 |
Octet | ENTIER | |
Octet[] | Objet Binaire de Grande Taille (BLOB) | |
Carboniser | SMS | UTF-8 |
DateOnly | SMS | aaaa-MM-jj |
Date et heure | SMS | aaaa-MM-jj HH :mm :ss. FFFFFFF |
DateTimeOffset | SMS | aaaa-MM-jj HH :mm :ss. FFFFFFFzzz |
Décimal | SMS |
0.0########################### format. REAL serait perdu. |
Double | RÉEL | |
Guide | SMS | 00000000-0000-0000-0000-000000000000 |
Int16 | ENTIER | |
Int32 | ENTIER | |
Int64 | ENTIER | |
SByte | ENTIER | |
Célibataire | RÉEL | |
Chaîne | SMS | UTF-8 |
TimeOnly | SMS | HH :mm :ss.fffffff |
TimeSpan | SMS | d.hh :mm :ss.fffffff |
UInt16 | ENTIER | |
UInt32 | ENTIER | |
UInt64 | ENTIER | Dépassement de capacité des valeurs volumineuses |
Autres types
Certains types .NET peuvent être lus à partir d’autres types SQLite. Les paramètres peuvent également être configurés pour utiliser ces types alternatifs. Pour plus d’informations, consultez Paramètres.
.FILET | SQLite | Remarques |
---|---|---|
Carboniser | ENTIER | UTF-16 |
DateOnly | RÉEL | Valeur de jour du calendrier julien |
Date et heure | RÉEL | Valeur de jour du calendrier julien |
DateTimeOffset | RÉEL | Valeur de jour du calendrier julien |
Guide | Objet Binaire de Grande Taille (BLOB) | |
TimeOnly | RÉEL | En jours |
TimeSpan | RÉEL | En jours |
Par exemple, la requête suivante lit une valeur TimeSpan à partir d’une colonne REAL dans le jeu de résultats.
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}.");
}
}
Types de colonnes
SQLite utilise un système de type dynamique où le type d’une valeur est associé à la valeur elle-même et non à la colonne où elle est stockée. Vous êtes libre d’utiliser le nom de type de colonne souhaité. Microsoft.Data.Sqlite n’applique aucune sémantique supplémentaire à ces noms.
Le nom du type de colonne a un impact sur l’affinité de type. Un gotcha courant est que l’utilisation d’un type de colonne string essaie de convertir des valeurs en INTEGER ou REAL, ce qui peut entraîner des résultats inattendus. Nous vous recommandons d’utiliser uniquement les quatre noms de type SQLite primitifs : INTEGER, REAL, TEXT et BLOB.
SQLite vous permet de spécifier des facettes de type telles que la longueur, la précision et l’échelle, mais elles ne sont pas appliquées par le moteur de base de données. Votre application est chargée de les appliquer.