c - SQLITE 基本语法

标签 c sqlite

我似乎误解了一个基本语法,为什么这个示例有效:

sqlite3_prepare_v2(db, "insert into test values('boo','boo',0);", strlen(querystring)+1 , &stmt, NULL);

if ((rc = sqlite3_step(stmt)) != SQLITE_DONE)
  fprintf(stderr, "Error: sqlite3_step() %d. Error Message %s;\n",rc,sqlite3_errmsg(db));

但是当我尝试这个查询时: “插入测试(strtest)值(‘boo’);”

我得到一个错误: 错误:sqlite3_step() 19. 错误信息约束失败;

我错过了什么?

表测试是:“创建表测试(blobtest BLOB(4)NOT NULL,strtest VARCHAR NOT NULL,inttest INTEGER NOT NULL);”

谢谢, Doori 酒吧

最佳答案

所有三列都声明为 NOT NULL,并且它们没有默认值。

所以你的查询:

insert into test(strtest) values('boo');

只为 blobtest 赋值,遗漏 strtestinttest 不能为空。

您可以通过再添加两个值来解决此问题,或者您可以将表架构更改为默认值,例如:

create table test (
    blobtest BLOB(4) NOT NULL,
    strtest VARCHAR NOT NULL DEFAULT '',
    inttest INTEGER NOT NULL DEFAULT 0
);

(或者如果您希望它们是NULL-able,您可以去掉NOT NULL)

关于c - SQLITE 基本语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3038542/

相关文章:

java - 如何使用ArrayList字段迁移Room数据库?

sql - 在 SQLite3 的列中搜索特定文本值

c++ - segmentation 故障的常见原因的明确列表

c - SetWindowLongPtr 似乎不起作用

c - 内联代码导致 ruby​​ 解释器崩溃

java - SQLite查询产生最后一个但一行值而不是最后插入的行值

android - 从 SQLite 数据库获取数据到 String Android

python - 在 python 脚本和 C 应用程序之间持续通信

c - 是否可以从常规 c 函数中调用 swift 函数

Android:如何将数据读入主 Activity