C++ Sqlite3插入错误C++;
我正在插入sqlite3表公司,在这里我使用以下模式创建表C++ Sqlite3插入错误C++;,c++,sqlite,C++,Sqlite,我正在插入sqlite3表公司,在这里我使用以下模式创建表 sql = "CREATE TABLE COMPANY(" \ "NAME TEXT PRIMARY KEY NOT NULL," "ADDRESS TEXT NOT NULL;"; 我能够创建表,但当我使用以下命令使用sqlite3_bind_text插入时,我会遇到以下问题: const char* sql = "INSERT INTO COMPANY(NAM
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*。谢谢,我忘记了添加setp并完成我的问题。但是,我在代码中有这个,我仍然得到相同的错误。您是否将exec api更改为sqlite3_prepare?是的,我认为它不起作用。但是,不知怎么的,它和你的答案是一致的。谢谢。
const char* sql = "INSERT INTO COMPANY(NAME, ADDRESS) VALUES (?, ?)"
sqlite3_stmt *stmt;
char *pszTest ;
int rc = sqlite3_prepare(db, sql, strlen(sql), &stmt, &pszTest) ;
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) ;
}