2011-04-21 56 views
0

在我的iPhone應用程序中,我已經包含兩列sqlite數據庫。它的結構像,iPhone:在SQLite數據庫中更新列的問題

CREATE TABLE "MyTable" ("ID" INTEGER PRIMARY KEY NOT NULL ,"name" VARCHAR,"status" INTEGER) 

我想通過編程更新第二列「狀態」。我正在嘗試使用以下查詢。

const char *updateStmt = "UPDATE MyTable SET name=?, status=? Where ID=?"; 

和,

sqlite3_stmt *addstateCompiledStmt; 
if (sqlite3_prepare_v2(database, updateStmt, -1, &addstateCompiledStmt, NULL) ==SQLITE_OK) 
        { 
sqlite3_bind_int(addstateCompiledStmt, 2, statusvalue); 
} 

但它不更新與新的值i通過的第二列。有人能幫助我,這裏可能會出現什麼問題,需要做些什麼?

謝謝。

回答

1

你需要綁定所有的「?」在sqlite stament中的值。

查看鏈接以供參考。
http://staging.icodeblog.com/wp-content/uploads/2008/09/dehydrate1.png http://www.scribd.com/doc/11524402/iPhone-Programming-with-SQLite

,或者

if (updateStmt == nil) { 

    const char *sql = "update Coffee Set CoffeeName = ?, Price = ? Where CoffeeID = ?"; 
    if(sqlite3_prepare_v2(database, sql, -1, &updateStmt, NULL) != SQLITE_OK) 
     NSAssert1(0, @"Error while creating update statement. '%s'", sqlite3_errmsg(database)); 
} 

sqlite3_bind_text(updateStmt, 1, [coffeeName UTF8String], -1, SQLITE_TRANSIENT); 
sqlite3_bind_double(updateStmt, 2, [price doubleValue]); 
sqlite3_bind_int(updateStmt, 3, coffeeID); 
if(SQLITE_DONE != sqlite3_step(updateStmt)) 
    NSAssert1(0, @"Error while updating. '%s'", sqlite3_errmsg(database)); 
sqlite3_reset(updateStmt); 
+0

非常感謝扯談! – Getsy 2011-04-21 08:26:19