2017-07-06 41 views
0

我試圖迫使一個錯誤條件的已使用以下步驟刪除之後更新的行測試一些異常處理時:SQLite的 - 沒有錯誤更新已刪除的行

1. Load record into GUI 
2. Pull .db3 file to Windows 
3. Delete record with sqlite3 
4. Push .db3 file back to Android 
3. Save record from GUI 

然而,從ExecuteNonQuery()也不例外,在logcat中也沒有任何東西。

爲什麼如果對於第3步,則DB文件改爲拋出異常而不是刪除記錄時?


更新:直接從設備刪除記錄與sqlite3導致此相同的行爲。

注意: Samsung Galaxy Tab2需要PIE(位置獨立執行)版本。

+2

它可能正在讀取/寫入日誌文件。代替步驟2-4,編寫一些額外的代碼來刪除記錄並嘗試保存。請閱讀https://stackoverflow.com/questions/26209091/what-is-the-journal-sqlite-database-in-android閱讀! – petey

回答

0

我不完全確定sql3數據提供者。但是,您希望使用查詢功能,而不是非查詢進行刪除。獲取查詢中受刪除影響的行。然後在沒有行被返回時拋出和異常廣告所需的場景。

+0

從'sqlite3'命令行界面運行'delete'語句後''從'Mono.Data.Sqlite'提供程序調用'ExecuteNonQuery()'。 – samosaris

1

更新行不會在sql中引發任何錯誤/異常。 當在數據庫更新查詢中找不到某行時不執行任何操作並且不顯示錯誤/異常消息。

+0

我會測試一下。我更喜歡在測試時不添加代碼來破解東西,因爲它需要改變它。我傾向於儘可能地引入*「真實世界」場景,但爲此我會給** petey **建議嘗試(重命名DB文件給出足夠的異常以測試關聯的try/catch,所以我沒有繼續前進,但現在有興趣觀察這種行爲)。 – samosaris

1

更新查詢不會引發任何錯誤。