C++ sqllite更新语句不工作

C++ 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<

我对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<<"\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){

//coutMove
sqlite\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);