2011-11-03 26 views
0

非常困惑,這...我的「DiscoveredCars」表開始有兩個記錄。我第一次調用這個方法時,它插入正確,最後一行顯示記錄數「3」。我的SQLITE3插入方法有什麼問題?

然而,我第二次調用它時,SQL看起來很完美,但由於某些原因,它仍然顯示「3」大小,似乎沒有正確插入?有任何想法嗎?

- (void)writeToDiscoveredCars: (Car *)car { 

NSString *tempSQL = [NSString stringWithFormat:@"INSERT INTO DiscoveredCars (car_ID) VALUES (%i)", car.ID]; 

NSLog(@"size of discoveredis %i", [self numberRecordsForTable:@"DiscoveredRecipes"]); 
NSLog(@"SQL insert is %@", tempSQL); 

const char *sql = [tempSQL UTF8String]; 
sqlite3_stmt *statement; 

int sqlResult = sqlite3_prepare_v2(myDatabase, sql, -1, &statement, NULL); 

if (sqlResult == SQLITE_OK) { 

    sqlResult = sqlite3_step(statement); 

    if(sqlResult == SQLITE_DONE) 
    { 

    } 

    sqlite3_finalize(statement); 
} 

else 
{ 
    NSLog(@"1. problem with database"); 
    NSLog(@"%s", sqlite3_errmsg(myDatabase)); 
} 

NSLog(@"size of discoveredis %i", [self numberRecordsForTable:@"DiscoveredCars"]); 

}

回答

2

你從來沒有通過調用sqlite3_step執行查詢。

int sqlResult = sqlite3_prepare_v2(myDatabase, sql, -1, &statement, NULL); 

if (sqlResult == SQLITE_OK) { 
    sqlResult = sqlite3_step(statement); //Execute! 
    //check the result for completion 
    if(sqlResult == SQLITE_DONE) 
    { 
    } 

    sqlite3_finalize(statement); 
} 
+0

哎呀!你是對的......我在那裏,然後在嘗試排除故障時偶然將它編輯出來。我更新了我的帖子中的代碼。但是,我仍然遇到我描述的問題。我知道在方法的開始和結束時檢查DiscoveredCars的大小。開始時它說2,結束它說3。然後,當我第二次打電話時,它又說2和3了?數據庫每次都得到重新創建嗎? – sayguh

+0

再次嗚呼......我找到了我重新初始化它的地方。謝謝喬 – sayguh