SQLiteConstraintException pas pris
Quel est le problème avec ce code? Il n'a pas d'attraper l'exception levée par insertChild()
méthode.
childDbOps.open();
try {
childDbOps.insertChild(child);
} catch (SQLiteException exception) {
Log.i("error la inserare child", "on the next line");
exception.printStackTrace();
} finally {
childDbOps.close();
}
L'erreur est:
ERROR/Database(320): android.database.sqlite.SQLiteConstraintException: error code 19:
constraint failed at com.android.dataLayer.DbAdapter.insertChild(DbAdapter.java:169)
at com.android.activities.ChildInsertActivity.onClick(ChildInsertActivity.java:203)
at android.view.View.performClick(View.java:2344)
C'est android sqlite. La ligne est lors de l'insertion de la méthode est appelée.
Avez-vous essayé de il suffit de prendre toute exception à l'aide de catch (Exception e){} ? Il pourrait vous donner un indice.
Oui j'ai essayé. Merci
d'où vient l'exception d'indiquer qu'il a été jeté? assurez-vous que tout votre code est dans une grande génériques bloc try & voir ce qui se passe. qui l'API est-ce - android sqlite?
/ / ERREUR de Base de données(320): android.la base de données.sqlite.SQLiteConstraintException: erreur code 19: contrainte échoué au com.android.dataLayer.DbAdapter.insertChild(DbAdapter.java:169) au com.android.les activités.ChildInsertActivity.onClick(ChildInsertActivity.java:203) à android.vue.Vue.performClick(point de Vue.java:2344) oui, c'est android sqlite. la ligne est lorsque la méthode d'insertion est appelé
vous devez marquer stackoverflow.com/questions/3421577/try-catch-problem/... comme réponse correcte 🙂
Oui j'ai essayé. Merci
d'où vient l'exception d'indiquer qu'il a été jeté? assurez-vous que tout votre code est dans une grande génériques bloc try & voir ce qui se passe. qui l'API est-ce - android sqlite?
/ / ERREUR de Base de données(320): android.la base de données.sqlite.SQLiteConstraintException: erreur code 19: contrainte échoué au com.android.dataLayer.DbAdapter.insertChild(DbAdapter.java:169) au com.android.les activités.ChildInsertActivity.onClick(ChildInsertActivity.java:203) à android.vue.Vue.performClick(point de Vue.java:2344) oui, c'est android sqlite. la ligne est lorsque la méthode d'insertion est appelé
vous devez marquer stackoverflow.com/questions/3421577/try-catch-problem/... comme réponse correcte 🙂
OriginalL'auteur bogdan | 2010-08-06
Vous devez vous connecter pour publier un commentaire.
La SQLiteDatabase.méthode insert() est utilisé dans le cas où vous voulez gérer les écritures de base de données sans dénouement de la pile si une écriture échoue. Si vous voulez intercepter des exceptions lors de l'insertion dans la base de données, utilisez la touche [SQLite.insertOrThrow(][1]) de la méthode. Il va lever une exception et vous pouvez ensuite les attraper et à manipuler.
[1]: http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#insertOrThrow(java.lang.String, java.lang.Chaîne, android.contenu.ContentValues)
Marquer comme moi votre réponse! 😀
OriginalL'auteur Stephan Leroux
Vous êtes capture uniquement les exceptions de type
SQLiteException
. Si leinsertChild
méthode lève, toute autre exception, il ne sera pas pris.Êtes-vous sûr qu'il y est une exception - qu'est-ce que l'exception levée? Est-il jeté par
childDbOps.open();
, qui est à l'extérieur du bloc try?SQLiteConstraintException et c'est parce que je test ce qui se passe avec ma demande quand j'ai entrer de nouveau les données avec la même clé primaire et je tiens à les gérer. La méthode d'insertion est mon problème
Mais je ne sais pas pourquoi Il n'est pas pris
Vérifiez que répondre à stackoverflow.com/questions/3421577/try-catch-problem/... est la bonne, insert() ne renvoie pas les exceptions, insertOrThrow () - t-il
OriginalL'auteur Amarghosh
@bogdan est-il un autre endroit u appelez insertChild(enfant); d'autres qu'à cet endroit. avez-vous mis une trace dans le bloc try pour savoir si il s'agit de ce bloc et imprimer la trace comme ci-dessous.
laissez-moi savoir.
merci pour la réponse.à partir de la trace, je peux voir que android.vue.Vue.performClick méthode gère l'exception (signifie qu'il a le bloc catch) , avant de s'vos prises
u ne résoudre le problème?
bonjour, j'ai résolu mon problème, mais sans utiliser le try catch. - Je faire une autre requête dans la base de données pour vérifier si la clé primaire existe et c'est tout. Je n'étais pas en mesure de le résoudre dans le présent formulaire
OriginalL'auteur Dead Programmer