xCode iOS SQLite ไม่ทำงานอัปเดต

ช่วยด้วย ไม่ทำงาน UPDATE ใน SQite ดำเนินการค้นหาแล้ว แต่การเปลี่ยนแปลงไม่เกิดขึ้น

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

person Andry    schedule 08.02.2014    source แหล่งที่มา
comment
คุณสามารถบันทึกข้อผิดพลาดและดูว่ามีอะไรผิดปกติ NSLog(@error = %s, sqlite3_errmsg(db));   -  person Gago    schedule 08.02.2014
comment
@Andry: ตรวจสอบคำตอบของฉัน คุณต้องดำเนินการมัน   -  person Kumar KL    schedule 08.02.2014


คำตอบ (2)


คุณทำผิดพลาดเล็กน้อย.... เขียนเนื้อหาของคุณในเทมเพลตต่อไปนี้ คุณพลาดคำสั่งการดำเนินการหลัก เช่น

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

ทำการเปลี่ยนแปลงเหล่านี้ในโค้ดของคุณแล้วลอง ฉันคิดว่ามันจะได้ผล...

person Learning Programming    schedule 08.02.2014
comment
คุณพลาดที่จะเขียนคำสั่ง sqlite3_step ในโค้ด คุณเขียน Query Executed ใน NSLog ดังนั้นจึงแสดง Query Executed และดูเหมือนว่าคุณจะใช้งานได้ แต่จริงๆ แล้วคุณไม่ได้ดำเนินการคำสั่ง .. เขียนคำสั่ง sqlite3_step นั้น คุณอาจใช้เทมเพลตที่ฉันได้รับมา มันจะได้ผล...... .. :) - person Learning Programming; 08.02.2014

คุณยังไม่ได้ดำเนินการ Query :

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);
   }  
person Kumar KL    schedule 08.02.2014
comment
sqlite3_prepare_v2(ฐานข้อมูล, updateQuery, -1, & stmt, NULL); ถ้า (sqlite3_step(คำสั่ง) == SQLITE_DONE){ NSLog(@Excuted); } อื่น ๆ { NSLog(@Error); } - person Kumar KL; 08.02.2014