2016-03-24 24 views
1
yılında SQLiteConstraintException hata kodu almak için

ben kodu 19. için özel olarak aşağıdaki özel durum yakalamaya çalışıyorum SQLiteConstraintException ait the error code almanın bir yolu var mı? veya mesaj açıklamasını sadece "içerir" kontrolüne sahip olmam mı gerekiyor?Nasıl Java

03-24 14: 46: 45,430 (2219) System.err/W: android.database.sqlite. SQLiteConstraintException: birincil anahtar benzersiz olmalıdır (kod 19)

 try { 
      res = database.insertOrThrow(EMP_TABLE, null, values);  
     } catch (android.database.sqlite.SQLiteConstraintException e) { 
      e.printStackTrace(); 
      //something like e.getErrorCode(); } 

My geçici bir çözüm; Bir yöntem olarak kullanılamaz olduğu için

if(e.getMessage().contains("code 19")) 
     Log.d(TAG, "Key Already exists !"); 
+0

yerine istisna yakalama onay verilen gelmez satır zaten var. Sonra istisna yapmak zorunda değilsiniz. – jakubbialkowski

+0

Bu kontrolü nasıl yaparım? başka bir sql ifadesi ile? – shamaleyte

+0

Neden buna ihtiyacınız var? Res = database.insert'i kullanabilirsiniz (EMP_TABLE, null, values); ve hiçbir istisna almazsınız. Sadece res değerini kontrol etmeniz gerekiyor. Eğer -1 ise, başka bir hata yoktur. –

cevap

0

, doğrudan geri getiremezsiniz, bunun için arayabilir veya SQLiteConstraintException uzanan kendi İstisna oluşturmak zorunda ama sen yine de aramak gerekir. Eğer performansı hakkında endişeli, bunun yerine indexOf("code 19") kullanabilirsiniz.

Ancak, ne yapmaya çalıştığınıza bağlı olarak, anahtarı eklemeyi denemeden ve özel olarak bunun için özel olarak davranmadan önce anahtarın olup olmadığını kontrol etmek için kod netliği ve akış açısından muhtemelen en iyisi budur.

+0

Çözümün alternatiflerini sunmak uğruna, hata kodunu almanın bir yolu olmamasına rağmen cevabınızı kabul edeceğim. jakubbialkowski'ye de kredi – shamaleyte