0

在 sqlit3 中尝试插入多个值时,它显示 21 错误代码。

示例查询:

 insert into Assembly_master ('ASSEMBLY_MASTER_ID','ASSEMBLY_MASTER_KID','ASSEMBLY_MASTER_CODE','ASSEMBLY_MASTER_NAME','DISTRICT_MASTER_CODE','ASSEMBLY_MASTER_HINDI','DISTRICT_MASTER_KID') values ('1','1','76','HH','194',' ','1'),('2','2','101','ANGARA','1008','','545')
4

2 回答 2

1

您的 INSERT 语句是正确的,但仅限于SQLite 3.7.11或更高版本。

如果您(可能)拥有较早的版本,则应该只使用多个 INSERT 语句。

于 2013-10-26T19:56:57.460 回答
0

该错误是由第二个插入 (,'',) <- 连续单引号(像那样加倍)的第六个值引起的,这是 SQLite 转义单引号的方式(引用 SQL As Understood By SQLite -> HERE):

通过将字符串括在单引号 (') 中形成字符串常量。字符串中的单引号可以通过将两个单引号放在一行中来编码 - 就像在 Pascal 中一样。

这会留下一个单引号字符(不被单引号包围)作为 SQLite 处理的占位符,而不是预期的字符串常量......因此......尝试绑定时会生成错误代码 21( SQLITE_MISUSE )。

也许您打算使用空格字符 ' ' 或 NULL?

编辑: 尽管这个答案~ 显然是错误的~,但这个答案中的信息是一个 SQLite “陷阱”,可能没有得到太多提及,所以我希望它可以帮助任何通过相关搜索词登陆这里的人。

于 2013-10-26T13:54:59.097 回答