Je suis nouveau sur Android. Je peux maintenant enregistrer la valeur de EditText dans la base de données tout en regardant le texte ou la page Web, mais lorsque j'essaie de le saisir en continu, cela échoue. ** Vous ne pouvez enregistrer des données qu'une seule fois à chaque fois que vous ouvrez l'application! ** ** J'ai pensé que c'était fatal en tant qu'application et j'ai cherché ce qu'il fallait faire. Je pense qu'il y a deux facteurs. ➀ instruction try-catch-finally non écrite ➁ Mauvais emplacement pour ouvrir la base de données J'ai décidé d'écrire cet article comme référence pour ceux qui souffrent de la même situation.
Comme vous pouvez le voir dans le code qui suit, mon code n'a pas le try-catch nécessaire, il est très instable car il n'avait pas d'instruction catch en premier lieu. Je comprends l'importance du try-catch mais c'est difficile. .. Je pensais que j'avais encore besoin d'étudier. Je pense qu'il vaut mieux utiliser "** try-with-resources **" décrit plus tard plutôt que de penser à un try-catch compliqué.
Cliquez ici pour le code complet (passez à un autre article que j'ai écrit) Si vous ne vous inscrivez qu'une seule fois, il ne tombera pas. Si vous essayez de vous inscrire deux fois, vous obtiendrez l'exception "java.lang.illegalStateException tente de rouvrir un objet déjà fermé". C'est parce que le code qui tombe ouvre la base de données avec la méthode onCreate. La méthode onCreate est la première méthode à être exécutée au démarrage de l'application. J'ouvre la base de données ici, j'effectue un traitement, puis je libère la base de données. Même si j'essaye de la faire fonctionner à nouveau, l'application plante car elle a été fermée par onCreate.
MainActivity.java
public void insertData(SQLiteDatabase db, String maxBP, String minBP, String pulse){
ContentValues values = new ContentValues();
try {
values.put("_maxBP", maxBP);
values.put("_minBP", minBP);
values.put("_pulse", pulse);
db.insert("_BPtable", null, values);
} finally {
db.close();
}
}
try-with-resources Je pense que l'avantage de try-with-resources est que vous n'avez pas à écrire des instructions try-catch compliquées. ~~ C'est une grande aide pour moi qui ne comprend pas try-catch ~~ Cependant, je pense qu'il y a plus de programmes qui ne sont implémentés que try-catch-finally, donc je ferai de mon mieux pour étudier. .. Cliquez ici pour la syntaxe de try-with-resources
python
try (Déclaration des variables à nettoyer de près) {
Traitement original
} catch (Nom de la variable de classe d'exception) {
Que faire si une exception se produit
}
Voici une réécriture du code précédent en utilisant try-with-resources De plus, nous avons revu le code pour ouvrir la base de données avec des méthodes. ➁ C'est une solution.
MainActivity.java
public void insertData(String maxBP, String minBP, String pulse){
ContentValues values = new ContentValues();
DatabaseHelper helper = new DatabaseHelper(MainActivity.this);
try (SQLiteDatabase data = helper.getWritableDatabase()){
values.put("_maxBP", maxBP);
values.put("_minBP", minBP);
values.put("_pulse", pulse);
data.insert("_BPtable", null, values);
} catch (Exception e){
e.printStackTrace();
}
}
Cela libérera automatiquement la base de données une fois l'essai terminé. Nous avons créé un programme qui n'abandonnera pas l'inscription continue!
Projet WINGS par Shinzo Saito / Supervisé par Yoshihiro Yamada "Manuel pour le développement d'applications Android" Écrit par Kiyotaka Nakayama / Écrit par Daigo Kunimoto / Supervisé par Flarelink Co., Ltd. "Introduction à Java pour une 3e édition rafraîchissante"
Recommended Posts