sqlite3_step()在教程中返回SQLITE_MISUSE

sqlite3_step() returns SQLITE_MISUSE in tutorial situation

本文关键字:返回 MISUSE 教程 SQLITE step sqlite3      更新时间:2023-10-16

我是第一次使用SQLite3,我无法计算出以下错误。以下是相关线路:

//open db; I checked, and sqlite3_open() returns 0 here (SQLITE_OK)
rc = sqlite3_open(filename.c_str(),&db);
//...
//create & prepare query.
string query = "SELECT * FROM MOCK_DATA;"; //I am positive MOCK_DATA exists and is non empty
sqlite3_stmt* stmt;
cout<<sqlite3_prepare(db,query.c_str(),0,&stmt,NULL)<<endl; //this prints 0: SQLITE_OK
//here we get the error 
cout<<sqlite3_step(stmt)<<endl; //returns 21: SQLITE_MISUSE

有人能告诉我我做错了什么吗?:)非常感谢。

sqlite3_prepare()的第二个参数是SQL字符串的长度。零表示您的SQL为空。提供一个负值,如-1,使sqlite3读取到C字符串中的第一个NUL字符。