2009-07-16 46 views
2

我在iPhone SDK上收到錯誤「沒有錯誤」,我花了整整一天的時間試圖解決它。 SQLite版本3.4.0iPhone SDK上的sqlite3錯誤「沒有錯誤」

sqlite3_step(compiledStatement) 

我在查詢中使用的表只有一行。它返回100 ..?

sqlite3_errmsg(database) 

這條線給了我上面的錯誤。

我已經用終端命令在其中創建了一個數據庫和表格,並且放置在應用程序資源文件夾以及文檔路徑中,這是動態完成的。

while(sqlite3_step(compiledStatement) == SQLITE_ROW) 

這個循環永遠不會執行在我的代碼裏面,我得到所有的值。

我覺得這個信息夠了,請告訴我。 任何人都知道我在哪裏有問題..?

在此先感謝

回答

1

我認爲你的問題是你期望sqlite3_step從編譯語句中返回值。它沒有這樣做,它返回一個錯誤代碼,在這種情況下爲100(SQLITE_ROW),這意味着查詢成功並且可能有更多的數據,所以一旦從這一步獲得數據,就應該調用sqlite3_step查詢。

如果您想查看該查詢步驟的實際返回數據,則需要使用各種sqlite3_column API從該步驟提取數據。

+0

我已經使用sqlite3_step()來查找它的返回值(100),因爲while循環使用此方法運行。我所有的只有一行,while循環沒有執行,現在很明顯。兩行之間的sqlite3_reset()使它工作正常.. 感謝你們倆。\ m/ 現在字符編碼對於sqlite3_column_text來說是不可讀的,即使當我使用'NSString stringWithUTF8String'時也是如此。謝謝 – pMan 2009-07-16 09:41:11

3

其實很簡單。看看documentation of sqlite3_step。基本上,SQLITE_ROW告訴你,它成功完成,通過再次調用sqlite3_step可以檢索到另一行。對於最後一行,你得到的只是SQLITE_DONE,這將轉化爲「沒有錯誤」。