2011-07-18 123 views
0

我的問題是,我有一個計劃與一些SQL語句工作SQLITE3命令不執行

const char *sqlStatement = "SELECT lastPlayed FROM Settings;"; 
    sqlite3_stmt *compiledStatement; 
    if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) != SQLITE_OK) { 
     NSLog(@"database error"); 
    } 
    if(sqlite3_step(compiledStatement) == SQLITE_ROW){ 
... 
    }  

我的問題是,這個SQL命令將寫入的NSLog該數據庫錯誤,它贏得」噸進入我的身體,如果與聲明一起工作......如果我更改sql語句以從Session LIMIT中選擇名稱? ,?並綁定這兩個數字,它會工作得很好。我在sqlite管理器中測試了sql命令並且工作得很好......有幫助嗎?可能是什麼問題呢?

Update1:​​發現它說,沒有這樣的表格:即使我有它的設置...也許這是xCode的問題?它不會更新模擬器?

Update2解決:問題的根源在模擬器....我不得不刪除緩存... thx快速回答。

回答

0
  1. 使用sqlite3_errmsg API函數獲取錯誤消息並將其打印到日誌。這會告訴你問題是什麼。
  2. 您在語句中不需要;,因爲它只是告訴sqlite3_prepate_v2忽略它後面的任何內容(它會返回指向它在最後一個參數結束位置以便於運行SQL腳本的位置),但這不會導致問題。