sqlite 数据类型与 C# 类型的对应参考

2022年10月22日 | [sqlite] csharp


sqlite 中的类型

存储类型(Storage Classes),在 sqlite 中一个值的类型与值本身相关,并不与所在“容器”相关。

存储类型 说明
NULL NULL值
INTEGER 一个带符号的整数,根据值的大小存储在 1、2、3、4、6 或 8 字节中。
REAL 一个浮点值,存储为 8 字节的 IEEE 浮点数字。
TEXT 一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储。
BLOB 一个 blob 数据,完全根据它的输入存储。

亲和类型(Type Affinity) 为了最大化保证 SQLite与其他数据库的兼容性,SQLite 可以使用其他关系数据库的类型,如下所示:

CREATE TABLE t1(a INT, b VARCHAR(10));
INSERT INTO t1(a,b) VALUES('123',456);

SQLite 在列上支持“类型亲和”的概念,列的亲和类型是该列数据的推荐类型。这里的重要思想是该类型是推荐的,而不是必需的。列仍然可以存储任何类型的数据。 只是对于某些列,会更喜欢使用一个存储类而不是另一个。 列的首选存储类称为“亲和类型”。 下表显示了当你指定某些类型时候,列对应的亲和类型:

C#类型 sqlite类型,创建表时可指定的类型 亲和类型/Type Affinity(存储类型)
Int32
Int64
INT
INTEGER
TINYINT
SMALLINT
MEDIUMINT
BIGINT
UNSIGNED BIG INT
INT2
INT8
INTEGER
String CHARACTER(20)
VARCHAR(255)
VARYING CHARACTER(255)
NCHAR(55)
NATIVE CHARACTER(70)
NVARCHAR(100)
TEXT
CLOB
TEXT
Binary BLOB
未指定类型
BLOB
Double
Float
REAL
DOUBLE
DOUBLE PRECISION
FLOAT
REAL
DateTime
Boolean
NUMERIC
DECIMAL(10,5)
BOOLEAN
DATE
DATETIME
NUMERIC

官方文档 Microsoft.Data.Sqlite 文档