Cursos
Módulo
Elección del tipo de datos correcto en el código de C# - Training
Elija el tipo de datos correcto para el código de varios tipos básicos usados en C#.
Este explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
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.
.NET | SQLite | Comentarios |
---|---|---|
Booleano | INTEGER | 0 o 1 |
Byte | INTEGER | |
Byte[] | BLOB | |
Char | TEXT | UTF-8 |
DateOnly | TEXT | yyyy-MM-dd |
DateTime | TEXT | aaaa-MM-dd HH:mm:ss.FFFFFFF |
DateTimeOffset | TEXT | aaaa-MM-dd HH:mm:ss.FFFFFFFzzz |
Decimal | TEXT | Formato 0.0########################### . REAL tendría pérdidas. |
Doble | 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 | Desbordamiento de valores grandes |
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.
.NET | SQLite | Comentarios |
---|---|---|
Char | INTEGER | UTF-16 |
DateOnly | real | Valor de día juliano |
DateTime | real | Valor de día juliano |
DateTimeOffset | real | Valor de día juliano |
GUID | BLOB | |
TimeOnly | real | En días |
TimeSpan | real | En días |
Por ejemplo, en la consulta siguiente se lee un valor TimeSpan de una columna REAL del 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}.");
}
}
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 en la que se almacena. Puede usar cualquier nombre de tipo de columna que quiera. Microsoft.Data.SQLite no aplicará ninguna semántica adicional a estos nombres.
El nombre del tipo de columna afecta a la afinidad de tipos. Un problema común es que el uso de un tipo de columna STRING intentará convertir valores en INTEGER o REAL, lo que puede dar lugar a resultados inesperados. Se recomienda usar solo los cuatro nombres de tipo de SQLite primitivos: INTEGER, REAL, TEXT y BLOB.
SQLite permite especificar facetas como la longitud, la precisión y la escala, pero el motor de base de datos no las exige. La aplicación es responsable de aplicarlas.
Comentarios de .NET
.NET es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios:
Cursos
Módulo
Elección del tipo de datos correcto en el código de C# - Training
Elija el tipo de datos correcto para el código de varios tipos básicos usados en C#.