2010-08-31 27 views
1

我有一個表在一個數據庫所在的_id列是主鍵。如果我嘗試使用已存在的_id對此表進行插入,那麼我的應用程序會崩潰。我怎樣才能做到這一點?有什麼特殊的例外可以吃嗎?我試過SQLiteException無濟於事。應用爆炸與衝突的SQL主鍵

+0

是否有你自己插入ID,而不是讓數據庫爲您指定一個特別的原因?至於異常類型,當然會在異常細節中概述? – rrrr 2010-08-31 15:13:07

+0

我正在同步從Web服務中提取的數據 – Andrew 2010-08-31 15:36:25

回答

0

我已經想通了我的問題。

現在,我使用insertOrThrow接球SQLiteExceptions。另外,我一直拋出另一個例外,但沒有捕捉到任何地方。我現在抓住並記錄下來。

0

根據定義主鍵需要是唯一的 - 一個單一的值必須引用的單個行。

你只能做你想要改變的東西是什麼 - 無論是在數據庫結構,所以此列不再定義爲一個主鍵(雖然仔細想想你這樣做之前 - 寫對舊模式的任何應用程序將假設,當根據_id字段進行選擇時,單個id將產生單行,並且您將打破該假定,並且很可能是應用程序)。另一件事是改變數據給它一個新的_id。

+0

感謝您的回覆。我在這裏做的是同步從Web服務中提取的數據。目前,同步是這樣編寫的,即新行不會被拉兩次。但是,如果有什麼東西溜走了,我不希望應用程序崩潰在用戶身上。我明白主鍵是什麼,我想要一個乾淨的方式來處理這個異常。 – Andrew 2010-08-31 15:38:03