1
我在iPhone應用程序中使用SQLITE3
進行數據庫操作。在xcode4中插入SQLITE3
我在數據庫中有2個表,我想在不同情況下插入2個表。
我的問題是第一次插入操作正常工作。如果我嘗試插入到另一個表中,則該值將插入到最後插入的表中。
我對錶1的代碼是:
-(void)addToTable1
{
if(addStmt == nil) {
const char *sql = "insert into Table(T1_Name) Values(?)";
if(sqlite3_prepare_v2(database, sqlCurrency, -1, &addStmt, NULL) != SQLITE_OK)
NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database));
}
sqlite3_bind_text(addStmt, 1, [T1_Name UTF8String], -1, SQLITE_TRANSIENT);
if(SQLITE_DONE != sqlite3_step(addStmt))
NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
else
rowID = sqlite3_last_insert_rowid(database);
sqlite3_reset(addStmt);
sqlite3_close(database);
}
代碼表2是:
-(void)addToTable2
{
if(addStmt == nil) {
const char *sql = "insert into Table2(T2_Name) Values(?)";
if(sqlite3_prepare_v2(database, sqlWeight, -1, &addStmt, NULL) != SQLITE_OK)
NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database));
}
sqlite3_bind_text(addStmt, 1, [T2_Name UTF8String], -1, SQLITE_TRANSIENT);
if(SQLITE_DONE != sqlite3_step(addStmt))
NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
else
rowID = sqlite3_last_insert_rowid(database);
sqlite3_reset(addStmt);
sqlite3_close(database);
}
我沒有得到我任何線索,爲什麼它的發生。
+1更好的是保持語句處理方法局部。 – trojanfoe
我在AppDelegate.m中使用了sqlite3_finalize,它將在插入後立即執行。 –
我得到了問題,這是因爲rowID = sqlite3_last_insert_rowid(database);所以使用新文件插入到table2是那種禮儀方式?或者還有其他更簡單的方法嗎? –