0
有誰知道如何檢查語句是否已經準備好?我已經通過SQLite文檔搜索了語句並搜索了,DreamInCode和DaniWeb,但沒有發現我的確切問題。在SQLite3中檢查空語句
我有一個聲明,我只在特定的情況下調用,我只想試圖敲定它,如果它已被使用,因爲程序崩潰正在發生,試圖敲定一個尚未使用的語句。我寧願使用SQLite內置的代碼而不是額外的代碼,但如果沒有對語句進行空值檢查,我會這樣做。
有誰知道如何檢查語句是否已經準備好?我已經通過SQLite文檔搜索了語句並搜索了,DreamInCode和DaniWeb,但沒有發現我的確切問題。在SQLite3中檢查空語句
我有一個聲明,我只在特定的情況下調用,我只想試圖敲定它,如果它已被使用,因爲程序崩潰正在發生,試圖敲定一個尚未使用的語句。我寧願使用SQLite內置的代碼而不是額外的代碼,但如果沒有對語句進行空值檢查,我會這樣做。
調用sqlite3_finalize()上的空指針是一種無害的無操作。
所以,只要確保您的sqlite3_stmt*
變量用NULL初始化,並且在最終化時重置爲NULL。
這就是我的想法,但如果statement2是空的,如果檢查sqlite3_finalize(),如果(sqlite3_finalize(statement2)!= SQLITE_OK)會導致訪問衝突錯誤。 – Geowil
看[實施](http://www.sqlite.org/cgi/src/artifact/ce4e68ea4842cc60);這不可能。你的指針必須是非空的。 –
由於未初始化,因此爲空。我已經定義了它,但它僅在特定條件下被定義(準備好)。無論如何,我通過更改如何執行代碼並在退出if(sqlite3_prepare_v2(dBase,sqlStr.c_str(),sqlStr.size(),&statement,0)== SQLITE_OK)範圍之前調用函數finalize來解決問題,而不是當我去關閉dBase連接。 – Geowil