C++ sqllite更新语句不工作
我对Sqllite更新语句有问题,它不工作。我不知道为什么,因为一切似乎都很好。错误代码为0C++ sqllite更新语句不工作,c++,sqlite,C++,Sqlite,我对Sqllite更新语句有问题,它不工作。我不知道为什么,因为一切似乎都很好。错误代码为0 char *q; // query char fp[MAX_PATH]; q="UPDATE search SET ustat=1 WHERE fpath=?"; for(int i=0; i<=6; i++){ if(sqlite3_prepare_v2(db, q, strlen(q), &pointer, 0) == SQLITE_OK){ //cout<
char *q; // query
char fp[MAX_PATH];
q="UPDATE search SET ustat=1 WHERE fpath=?";
for(int i=0; i<=6; i++){
if(sqlite3_prepare_v2(db, q, strlen(q), &pointer, 0) == SQLITE_OK){
//cout<<"\n\n inside loop i values is "<<i<<"\n\n";
snprintf(fp,MAX_PATH,xbx[i].fpaths,0);
sqlite3_bind_text(pointer, 1, fp, strlen(fp), 0); // file name
sqlite3_step(pointer); // prepare statemnt Ready
sqlite3_finalize(pointer);
}
}
好的,我找到了解决方案,这是由于sqlite finalize语句。。。。检查您可能遗漏的所有程序,以及未放置sqlite finalize语句。。所以问题解决了:)
if(sqlite3\u prepare\u v2(db,q,strlen(q),&pointer,0)=SQLITE\u OK){
//coutMovesqlite\u prepare\u v2()
在循环外部移动。通过移动sqlite\u prepare\u v2()在循环外部…它使it i值崩溃=3…并且ustat未更新为1当您将sqlite3\u prepare
移出循环时,sqlite3\u finalize
也必须被移动,并且您需要在每次迭代后调用sqlite3\u reset
。此外,检查sqlite3\u步骤的返回代码
!不工作,我每次都尝试可能的方法…请有人尝试一下,如果有人获得成功,然后分享它,因为我在谷歌上搜索每个人都有循环中的sqllite问题
if(sqlite3_prepare_v2(db, q, strlen(q), &pointer, 0) == SQLITE_OK){
sqlite3_bind_text(pointer, 1, xbx[0].fpaths, sizeof(xbx[0].fpaths), 0); // file name
sqlite3_bind_text(pointer, 1, xbx[1].fpaths, sizeof(xbx[1].fpaths), 0);
sqlite3_bind_text(pointer, 1, xbx[2].fpaths, sizeof(xbx[2].fpaths), 0);
sqlite3_bind_text(pointer, 1, xbx[3].fpaths, sizeof(xbx[3].fpaths), 0);
sqlite3_bind_text(pointer, 1, xbx[4].fpaths, sizeof(xbx[4].fpaths), 0);
sqlite3_step(pointer); // prepare statemnt Ready
sqlite3_finalize(pointer); // delete prepared statement
}
if(sqlite3_prepare_v2(db, q, strlen(q), &pointer, 0) == SQLITE_OK){
//cout<<"\n\n inside loop i values is "<<i<<"\n\n";
snprintf(fp,MAX_PATH,xbx[i].fpaths,0);
sqlite3_bind_text(pointer, 1, fp, strlen(fp), 0); // file name
sqlite3_step(pointer); // prepare statemnt Ready
sqlite3_reset(pointer);
}
sqlite3_finalize(pointer);