【发布时间】:2018-07-17 00:00:19
【问题描述】:
我正在插入到 sqlite3 表 Company 中,我使用以下模式创建表
sql = "CREATE TABLE COMPANY(" \
"NAME TEXT PRIMARY KEY NOT NULL,"
"ADDRESS TEXT NOT NULL;";
我可以创建表,但是当我使用以下命令使用 sqlite3_bind_text 插入时,我遇到了以下问题
const char* sql = "INSERT INTO COMPANY(NAME, ADDRESS) VALUES (?, ?)"
sqlite3_stmt *stmt;
int rc = sqlite3_exec(db, sql, callback, &stmt, &zErrMsg);
if(rc == SQLITE_OK ) {
sqlite3_bind_text(stmt, 1, "abc", 3, 0);
sqlite3_bind_text(stmt, 2, "def", 3, 0);
// commit
sqlite3_step(stmt) ;
sqlite3_finalize(stmt) ;
}
我收到错误,例如, SQL 错误:COMPANY.NAME 不能为 NULL
当列不为空时,sqlite3绑定文本不起作用吗?
【问题讨论】:
-
也许我很困惑,我之前从未使用过
bind_text,但是为什么不简单地使用sqlite3_exec呢?对我来说,我只需调用两次sqlite3_exec并插入值,但我可能只是误解了您要做什么。 -
slqite3_exec 是完美的,如果我需要添加更多值,例如 10 左右,我只想操作 const char *。