Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
SQLite solo tiene cuatro tipos de datos primitivos: INTEGER, REAL, TEXT y BLOB. Las API que devuelven valores de base de datos como object
solo devolverán uno de estos cuatro tipos. Microsoft.Data.SQLite admite tipos de .NET adicionales, pero los valores se convierten en última instancia entre estos tipos y uno de los cuatro tipos primitivos.
.RED | SQLite | Observaciones |
---|---|---|
Booleano | ENTERO |
0 o 1 |
byte | ENTERO | |
Byte[] | BLOB | |
Carbón | Mensaje de texto | UTF-8 |
DateOnly | Mensaje de texto | aaaa-MM-dd |
Fecha y hora | Mensaje de texto | aaaa-MM-dd HH:mm:ss.FFFFFFF |
Desplazamiento de Fecha y Hora | Mensaje de texto | aaaa-MM-dd HH:mm:ss.FFFFFFFzzz |
Decimal | Mensaje de texto | Formato 0.0########################### . REAL tendría pérdidas. |
Doble | REAL | |
GUID | Mensaje de texto | 00000000-0000-0000-0000-000000000000 |
Int16 | ENTERO | |
Int32 | ENTERO | |
Int64 | ENTERO | |
SByte | ENTERO | |
Soltero | REAL | |
Cuerda | Mensaje de texto | UTF-8 |
TimeOnly | Mensaje de texto | HH:mm:ss.fffffff |
TimeSpan | Mensaje de texto | d.hh:mm:ss.fffffff |
UInt16 | ENTERO | |
UInt32 | ENTERO | |
UInt64 | ENTERO | Desbordamiento de valores grandes |
Tipos alternativos
Algunos tipos de .NET se pueden leer desde tipos de SQLite alternativos. Los parámetros también se pueden configurar para usar estos tipos alternativos. Para obtener más información, vea Parámetros.
.RED | SQLite | Observaciones |
---|---|---|
Carbón | ENTERO | UTF-16 |
DateOnly | REAL | Valor del día juliano |
Fecha y hora | REAL | Valor del día juliano |
Desplazamiento de Fecha y Hora | REAL | Valor del día juliano |
GUID | BLOB | |
TimeOnly | REAL | En días |
TimeSpan | REAL | En días |
Por ejemplo, la consulta siguiente lee un valor TimeSpan de una columna REAL en el conjunto de resultados.
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}.");
}
}
Tipos de columna
SQLite usa un sistema de tipos dinámicos en el que el tipo de un valor está asociado al propio valor y no a la columna donde se almacena. Puede usar el nombre de tipo de columna que desee. Microsoft.Data.Sqlite no aplicará ninguna semántica adicional a estos nombres.
El nombre del tipo de columna tiene un impacto en la afinidad de tipo. Un gotcha común es que el uso de un tipo de columna de STRING intentará convertir valores en INTEGER o REAL, lo que puede provocar resultados inesperados. Solo se recomienda usar los cuatro nombres primitivos de tipo SQLite: INTEGER, REAL, TEXT y BLOB.
SQLite permite especificar facetas de tipo como longitud, precisión y escala, pero el motor de base de datos no las aplica. Tu aplicación es responsable de aplicarlas.