SQLLITE UPDATE语句不起作用

sqllite update statement not working

本文关键字:不起作用 语句 UPDATE SQLLITE      更新时间:2023-10-16

我对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<<"nn inside loop i values is "<<i<<"nn";
        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);   
    }
}

我在绑定文本语句中使用了结构,然后我认为问题可能是由于结构引起的,然后我将其更改为本地缓冲区,但没有成功。

更新:我尝试删除循环并手动设置内容,但在更新语句中仍然没有做错问题?错误代码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
            }   

好吧,我找到了解决方案,是由于sqlite cinallize语句....检查您可能错过的所有程序,且未放置SQLite最终确定语句。.因此,问题解决了:)

if(sqlite3_prepare_v2(db, q, strlen(q), &pointer, 0) == SQLITE_OK){
    //cout<<"nn inside loop i values is "<<i<<"nn";
    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);  

}