2016-03-24 6 views
1
にSQLiteConstraintExceptionのエラーコードを取得するには

私はコード19 のために、具体的には、以下の例外をキャッチしようとしているSQLiteConstraintExceptionのthe error codeを取得する方法はありますか?または単にメッセージの説明を「含む」チェックが必要なのでしょうか?どのようにJavaの

03-24 14:46:45.430:W/System.err(2219):android.database.sqlite。 SQLiteConstraintException:PRIMARY KEYはユニークでなければなりません(コード19)

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

私の回避策ソリューションです。それは方法としては使用できませんなので

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

例外をキャッチする代わりに、指定された行がすでに存在しているかどうかを確認します。その後、例外を処理する必要はありません。 – jakubbialkowski

+0

どうすればいいですか?別のSQL文によって? – shamaleyte

+0

なぜそれが必要でしょうか? res = database.insert(EMP_TABLE、null、values)を使用できます。例外はありません。あなたはresの値をチェックする必要があります。 -1の場合はエラーがありません。 –

答えて

0

、あなたはそれを直接取得することはできません、あなたはそれを検索、またはSQLiteConstraintExceptionを拡張し、独自の例外を作成する必要がありますが、とにかくそれを検索する必要があると思います。掲載結果が心配な方は、indexOf("code 19")をご利用ください。

しかし、何をしようとしているかによっては、コードの挿入や挿入を試みる前にキーが存在するかどうかを実際にチェックするコードの明瞭性とフローの点ではおそらく最高です。

+0

解決策を提示するために、エラーコードを取得する方法がないにもかかわらず、回答を受け入れます。 @jakubbialkowskiへのクレジット – shamaleyte