我使用的是編譯SQLiteStatement
與交易優化SQLite的交易記錄,但我閱讀了execute
函數的文檔:SQLiteStatement執行SELECT /插入/刪除/ UPDATE
執行這條SQL語句,如果它不是一個SELECT /插入/刪除/ UPDATE,例如CREATE/DROP表,視圖,觸發器,索引等等
這似乎意味着,該函數不應該與SELECT/INSERT/DELETE/UPDATE
語句一起使用,但我有 使用它與插入和工作的代碼。
我知道executeInsert
和其他方法,但是executeUpdateDelete
不適用於我的API級別,所以我可以使用execute
?
另外,如果我不需要最後一個插入ID或受影響的行數,我應該使用execute
而不是executeInsert
等,換句話說它更有效率?
所以,你的意思是不能保證'execute()'在將來也可以用'INSERT語句'發佈,也就是說它只是混淆了它說'執行這個SQL語句,如果它不是SELECT/INSERT/....'那麼它不應該執行'INSERT'(因爲這只是我測試過的語句)而且它的工作!並感謝您的有價值的信息:) –
也'statement.executeUpdateDelete();'這在API 11中可用的任何解決方法爲2.2? –
@MuhammadBabar文檔試圖告訴你,'execute'方法不適用於有結果的語句。就像爲select設置的行一樣,更新/刪除的更改計數或插入的最後一行ID。迄今爲止,還沒有能夠防止這些意外陳述發揮作用的代碼。也許未來對數據庫架構的改變會,我不知道。Android框架工程師可以輕鬆地在沒有通知的情況下添加這樣的更改,因爲該方法的說明警告您,自從多年以後,該方法將無法使用。 – zapl