Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Sqlite3插入错误C++;_C++_Sqlite - Fatal编程技术网

C++ Sqlite3插入错误C++;

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

我正在插入sqlite3表公司,在这里我使用以下模式创建表

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