2016-03-24 9 views
1

Ich versuche, die folgende Ausnahme speziell für Code 19. Gibt es eine Möglichkeit the error code von SQLiteConstraintException kennen zu fangen? oder sollte ich einfach eine "contains" Prüfung für die Nachrichtenbeschreibung haben?Wie Fehlercode von SQLiteConstraintException in Java bekommen

03-24 14: 46: 45.430: W/System.err (2219): android.database.sqlite. SQLiteConstraintException: Primärschlüssel muss eindeutig sein (Code 19)

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

Meine Umgehungslösung ist;

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

Anstatt Ausnahme abzufangen, ist die angegebene Zeile bereits vorhanden. Dann müssen Sie keine Ausnahme behandeln. – jakubbialkowski

+0

Wie überprüfe ich das? durch eine andere SQL-Anweisung? – shamaleyte

+0

Warum brauchen Sie das? Sie können res = database.insert (EMP_TABLE, null, values); und Sie werden keine Ausnahme bekommen. Sie müssen nur den Wert von res überprüfen. Wenn es -1 ist, dann gibt es einen Fehler, sonst nicht. –

Antwort

0

Da es als Methode nicht verfügbar ist, können Sie es nicht direkt abrufen können, müssen Sie danach suchen oder eine eigene Exception erstellen SQLiteConstraintException erstreckt, aber sie würde es auf jeden Fall suchen. Wenn Sie sich Sorgen um die Leistung machen, können Sie stattdessen verwenden.

Aber je nachdem, was Sie versuchen zu tun, ist es wahrscheinlich am besten in Bezug auf Code Klarheit und Fluss zu überprüfen, ob der Schlüssel existiert, bevor Sie es einfügen und auf die Ausnahme speziell dafür handeln.

+0

Um Alternativen zu der Lösung zu präsentieren, werde ich Ihre Antwort akzeptieren, obwohl es keine Möglichkeit gibt, den Fehlercode zu erhalten. Kredit auch an @jakubbialkowski – shamaleyte

Verwandte Themen