我在执行从C#到SQLite DB的查询时遇到问题,我使用以下查询,它给出了错误:“max”。
create table ClockMessages (ID int identity(1, 1) primary key, InsertDateTime DateTime not null, SendDateTime DateTime, Data nvarchar(max));
我不能使用nvarchar
格式,我应该使用TEXT
吗?
答案 0 :(得分:1)
答案 1 :(得分:1)
varchar
类型时,SQLite 不使用大小。
来自 FAQ
(9)SQLite中VARCHAR的最大大小是多少?
SQLite 不会强制使用VARCHAR的长度。你可以声明一个 VARCHAR(10),SQLite很乐意让你输入500个字符 它。并且它将保持所有500个字符完整 - 它永远不会截断。
您可以使用TEXT
类型代替。查看 here 。
TEXT。该值是使用数据库编码存储的文本字符串 (UTF-8,UTF-16BE或UTF-16LE)。
答案 2 :(得分:1)
SQLite中只有5种数据类型。
当你使用其中一些
时CHARACTER(20)
VARCHAR(255)
VARYING CHARACTER(255)
NCHAR(55)
NATIVE CHARACTER(70)
NVARCHAR(100)
TEXT
CLOB
在create table语句中,SQLite将其转换为Text
也
请注意类型后面的括号中的数字参数 SQLite忽略了name(例如:“VARCHAR(255)”) - SQLite没有 施加任何长度限制(除了大的全球 SQLITE_MAX_LENGTH limit)对字符串,BLOB或数字的长度 值。
答案 3 :(得分:0)
使用TEXT! 您可以阅读here有关sqlite数据类型的更多信息
TEXT =>该值是一个文本字符串,使用数据库编码(UTF-8,UTF-16BE或UTF-16LE)存储。
SQLite使用更通用的动态类型系统。在SQLite中 值的数据类型与值本身相关联,而不是与其相关联 容器。 SQLite的动态类型系统是向后兼容的 与其他数据库引擎的更常见的静态类型系统 在静态类型数据库上工作的SQL语句的意义 应该在SQLite中以相同的方式工作。但是,动态输入 SQLite允许它做传统中不可能的事情 严格类型化的数据库。
注意到:
SQLite不会施加任何长度限制(除了大的 全局SQLITE_MAX_LENGTH限制)关于字符串,BLOB或的长度 数值。
<强>最后:强>
字符串或BLOB的最大长度
定义字符串中的最大字节数或SQLite中的BLOB 由预处理器宏SQLITE_MAX_LENGTH。默认值 宏观是10亿(10亿或1,000,000,000)。您可以 使用命令行选项在编译时提高或降低此值 像这样:
-DSQLITE_MAX_LENGTH = 123456789目前的实施只会 支持字符串或BLOB长度最大为231-1或2147483647.还有一些 在此之前,内置函数(如hex())可能会失败。在 安全敏感的应用程序最好不要尝试增加 最大字符串和blob长度。事实上,你可能会做得更好 最大字符串和blob长度到a的范围内 如果可能的话,几百万。
在SQLite的INSERT和SELECT处理过程中,完成了 数据库中每行的内容被编码为单个BLOB。所以 SQLITE_MAX_LENGTH参数也决定了最大数量 连续的字节。
使用时可以在运行时降低最大字符串或BLOB长度 sqlite3_limit(db,SQLITE_LIMIT_LENGTH,size)接口。