-1

Sqllite update ステートメントに問題があり、機能していません。すべてが問題ないように見えるので、理由はわかりません。エラー コードは 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);   
    }
}

bind text ステートメントで構造を使用していたので、問題は構造が原因であると考えたので、それをローカル バッファに変更しましたが、成功しませんでした。

更新:ループを削除して手動で設定しようとしましたが、更新ステートメントで問題が発生していません?????? エラーコード 0

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
            }   
4

1 に答える 1

0

わかりました私はそれがsqlitefinalizeステートメントによるものである解決策を見つけました....あなたが見逃したかもしれないすべてのプログラムをチェックして、sqlitefinalizeステートメントを配置しませんでした..問題は解決しました:)

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

}

于 2012-12-27T08:44:03.333 に答える