2016-03-24 2 views
1

Я пытаюсь поймать следующее исключение специально для кода 19. Есть ли способ получить the error code из SQLiteConstraintException? или я должен просто проверить «содержит» для описания сообщения?Как получить код ошибки SQLiteConstraintException в Java

03-24 14: 46: 45.430: W/System.err (2219): android.database.sqlite. SQLiteConstraintException: первичный ключ должен быть уникальным (код 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

Поскольку он не доступен как метод, вы не можете получить его непосредственно, вы должны искать его, или создать свое собственное Exception простирающегося SQLiteConstraintException, но вам придется искать его в любом случае. Если вы беспокоитесь о производительности, вместо этого вы можете использовать indexOf("code 19").

Но в зависимости от того, что вы пытаетесь сделать, это, вероятно, лучше всего с точки зрения ясности и потока кода, чтобы действительно проверить, существует ли ключ, прежде чем пытаться вставить его и действовать специально для этого исключения.

+0

Чтобы представить альтернативы решению, я отвечу на ваш ответ, даже если нет способа получить код ошибки. кредит @jakubbialkowski, а также – shamaleyte