簡體   English   中英

xCode iOS SQLite無法正常更新

[英]xCode iOS SQLite not working update

幫助,無法在SQite中運行UPDATE。 查詢已執行但未發生更改

 const char *dbPath=[databasePath UTF8String];

if (sqlite3_open(dbPath, &contactDB)==SQLITE_OK) {

    NSLog(@"database Opened");

    const char* updateQuery="update poi set test=\"111\"";

    sqlite3_stmt *stmt;

    if (sqlite3_prepare_v2(contactDB, updateQuery, -1, &stmt, NULL)==SQLITE_OK) {

        NSLog(@"Query Executed");
    }
}

sqlite3_close(contactDB);

您尚未執行查詢:

sqlite3_prepare_v2准備不執行(影響),您需要執行它

試試看:

  const char *dbPath=[databasePath UTF8String];

if (sqlite3_open(dbPath, &contactDB)==SQLITE_OK) {

    NSLog(@"database Opened");

    const char* updateQuery="update poi set test=\"111\"";

    sqlite3_stmt *stmt;

    if (sqlite3_prepare_v2(contactDB, updateQuery, -1, &stmt, NULL)==SQLITE_OK) {

        NSLog(@"Query Prepared to execute");
    }
    if(sqlite3_step(stmt) != SQLITE_DONE){
        NSAssert1(0, @"Error while updating. '%s'", sqlite3_errmsg(database));
    }else
        NSLog(@"Executed");

    sqlite3_close(contactDB);
   }  

您犯了個小錯誤。

sqlite3_step(statement);

這里發生了什么,您只是在准備語句而不執行它。

sqlite3_stmt *statement;
if(sqlite3_open(dbpath, &database_object) == SQLITE_OK)
{
    NSString *sql = [NSString stringWithFormat:@"update table_name set column_name = \"%@\"", Your_value];
    const char *sql_stmt = [sql UTF8String];
    if(sqlite3_prepare_v2(database_object , sql_stmt, -1, &statement, NULL) != SQLITE_OK)
        NSLog(@"Error while creating update statement. '%s'", sqlite3_errmsg(database_object));
    if(SQLITE_DONE != sqlite3_step(statement))
        NSLog(@"Error while updating. '%s'", sqlite3_errmsg(database_object));
    sqlite3_finalize(statement);
}

在您的代碼中進行這些更改,然后嘗試,我認為它將起作用...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM