2014-10-02 106 views
1

我第一次使用SQLite3,並且我找不出以下錯誤。這裏是相關的行:sqlite3_step()在教程情況下返回SQLITE_MISUSE

//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 

任何人都可以告訴我我做錯了什麼? :) 謝謝!

回答

1

sqlite3_prepare()的第二個參數是SQL字符串的長度。零意味着你的SQL是空的。提供一個負值,例如-1以使sqlite3讀取第一個NUL字符,就像在C字符串中一樣。

相關問題