SQLite C#查询没有';不起作用

本文关键字:不起作用 查询 SQLite | 更新日期: 2023-09-27 18:00:18

我在执行从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格式吗?

SQLite C#查询没有';不起作用

使用TEXT

根据手册,

TEXT-该值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE或UTF-16LE)存储。

  • SQLite数据类型

SQLite在声明varchar类型时不使用大小。

来自常见问题

(9) SQLite中VARCHAR的最大大小是多少?

SQLite不强制VARCHAR的长度。您可以申报VARCHAR(10)和SQLite将很乐意让您在它将保持所有500个字符的完整性-它从不截断。

您可以使用TEXT类型而不是。请从此处查看

文本。该值是一个文本字符串,使用数据库编码存储(UTF-8、UTF-16BE或UTF-16LE)。

SQLite中只有5种数据类型。

当你使用这些

CHARACTER(20)
VARCHAR(255)
VARYING CHARACTER(255)
NCHAR(55)
NATIVE CHARACTER(70)
NVARCHAR(100)
TEXT
CLOB

在create table语句中,SQLite将其转换为Text

还有

请注意,类型后面的括号中的数字参数名称(例如:"VARCHAR(255)")被SQLite忽略-SQLite不会施加任何长度限制(除了大型全局SQLITE_MAX_LENGTH限制)价值观

SQLite数据类型

使用TEXT!您可以在这里阅读更多关于sqlite数据类型的信息

TEXT=>该值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE或UTF-16LE)存储。

SQLite使用更通用的动态类型系统。在SQLite中值的数据类型与值本身相关,而不是与其容器SQLite的动态类型系统向后兼容中其他数据库引擎的更常见的静态类型系统在静态类型数据库上工作的SQL语句在SQLite中应该以相同的方式工作。但是SQLite允许它做传统中不可能做的事情严格类型的数据库。

注意:

SQLite不施加任何长度限制(除了全局SQLITE_MAX_LENGTH限制)数值。

最后:

字符串或BLOB 的最大长度

SQLite中的字符串或BLOB中的最大字节数已定义MAX_ LENGTH。此的默认值宏观是10亿(10亿或10亿)。你可以在编译时使用命令行选项提高或降低此值像这样:

-DSQLITE_MAX_LENGTH=123456789当前实现将仅支持长度不超过231-1或2147483647的字符串或BLOB。还有一些诸如hex()之类的内置函数可能早在这一点之前就失败了。在里面安全敏感的应用程序最好不要试图增加最大字符串和blob长度。事实上,你最好降低字符串和blob的最大长度在如果可能的话,只有几百万。

在SQLite的INSERT和SELECT处理过程中数据库中每一行的内容都被编码为单个BLOB。所以SQLITE_MAX_LENGTH参数还确定一行中的字节。

可以在运行时使用sqlite3_limit(数据库,SQLITE_limit_LENGTH,大小)接口。