2014-01-25 55 views
0

有誰知道如何檢查語句是否已經準備好?我已經通過SQLite文檔搜索了語句並搜索了,DreamInCode和DaniWeb,但沒有發現我的確切問題。在SQLite3中檢查空語句

我有一個聲明,我只在特定的情況下調用,我只想試圖敲定它,如果它已被使用,因爲程序崩潰正在發生,試圖敲定一個尚未使用的語句。我寧願使用SQLite內置的代碼而不是額外的代碼,但如果沒有對語句進行空值檢查,我會這樣做。

回答

1

documentation的說:

調用sqlite3_finalize()上的空指針是一種無害的無操作。

所以,只要確保您的sqlite3_stmt*變量用NULL初始化,並且在最終化時重置爲NULL。

+0

這就是我的想法,但如果statement2是空的,如果檢查sqlite3_finalize(),如果(sqlite3_finalize(statement2)!= SQLITE_OK)會導致訪問衝突錯誤。 – Geowil

+0

看[實施](http://www.sqlite.org/cgi/src/artifact/ce4e68ea4842cc60);這不可能。你的指針必須是非空的。 –

+0

由於未初始化,因此爲空。我已經定義了它,但它僅在特定條件下被定義(準備好)。無論如何,我通過更改如何執行代碼並在退出if(sqlite3_prepare_v2(dBase,sqlStr.c_str(),sqlStr.size(),&statement,0)== SQLITE_OK)範圍之前調用函數finalize來解決問題,而不是當我去關閉dBase連接。 – Geowil