繁体   English   中英

SQLITE基本语法

[英]SQLITE basic syntax

我似乎误解了一个基本语法,为什么此示例起作用:

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));

但是,当我尝试以下查询时:“插入test(strtest)values('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分配一个值,而strtest不能为空的strtestinttest

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

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

(或者,如果您希望它们可以为NULL则可以取出NOT NULL

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM