C# SQLite C查询不起作用

C# SQLite C查询不起作用,c#,sql,sqlite,nvarchar,C#,Sql,Sqlite,Nvarchar,我在执行从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-该值是一个文本字符

我在执行从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-该值是一个文本字符串,使用数据库编码UTF-8、UTF-16BE或UTF-16LE存储

使用文本! 您可以阅读有关sqlite数据类型的更多信息

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

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

该报告指出:

SQLite不施加任何长度限制,除了大的 字符串、BLOB或字符串长度的全局SQLITE_MAX_长度限制 数值

最后:

字符串或BLOB的最大长度

定义了SQLite中字符串或BLOB的最大字节数 由预处理器宏SQLITE_MAX_LENGTH执行。此参数的默认值 宏是10亿、10亿或100000000。你可以 在编译时使用命令行选项提高或降低此值 像这样:

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

在SQLite的部分插入和选择处理过程中,完成 数据库中每一行的内容都编码为单个BLOB。所以 SQLITE_MAX_LENGTH参数还确定 一行中的字节数

可以在运行时使用 sqlite3\u limitdb、SQLITE\u LIMIT\u长度、大小接口

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

9 SQLite中VARCHAR的最大大小是多少

SQLite不强制执行VARCHAR的长度。你可以申报 VARCHAR10和SQLite很乐意让您输入500个字符 信息技术它将保持所有500个字符的完整性-它从不截断

您可以使用文本类型而不是。退房

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


SQLite中只有5种数据类型

当你使用这些东西的时候

CHARACTER(20)
VARCHAR(255)
VARYING CHARACTER(255)
NCHAR(55)
NATIVE CHARACTER(70)
NVARCHAR(100)
TEXT
CLOB
在CREATETABLE语句中,SQLite将其转换为文本

请注意,类型后面的括号中的数值参数 name ex:VARCHAR255被SQLite忽略-SQLite不忽略 施加任何长度限制,而不是大的全局 SQLITE_MAX_字符串、BLOB或数字的长度限制 价值观


确切的区别是什么?我仍然可以在文本字段中存储最大数量的字符吗?\n请用您的具体问题更新您的标题。.这是我添加的第二个表,在第一个表旁,我使用了NVARCHA32等,刚刚解决了这个问题,我现在应该在该查询中使用文本吗?