[Android Studio] Description qui peut être saisie en continu dans la base de données SQLite [Java]

introduction

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.

➀ À propos de l'instruction try-catch-finally non écrite

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é.

➁ À propos du mauvais endroit pour ouvrir la base de données

Code en baisse

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!

référence

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

[Android Studio] Description qui peut être saisie en continu dans la base de données SQLite [Java]
Ecrire une classe qui peut être ordonnée en Java Un petit mémo standard
Base de données Firebase-Realtime sur Android pouvant être utilisée avec copie
Java (édition super débutante) compréhensible en 180 secondes
Mémo de référence / serveur LDAP en mémoire pouvant être intégré à Java
Résumé de l'ORM "uroboroSQL" qui peut être utilisé dans le Java d'entreprise
De Java à C et de C à Java dans Android Studio
Traitement d'entrée / sortie de fichier Java pouvant être utilisé via l'historique
[Java 8] Jusqu'à la conversion de l'entrée standard qui peut être utilisée dans les tests de codage en une liste ou un tableau
Extrait technologique pouvant être utilisé pour créer des sites EC dans la formation Java
[Android / Java] Exploitez une base de données locale dans la salle
Interface fonctionnelle de base compréhensible en 3 minutes
Touches de raccourci pratiques pour Eclipse
Remarques sur le studio Android
Syntaxe et conditions d'occurrence d'exception pouvant être utilisées lors de la comparaison avec null en Java
[Java 8] Méthode de tri par ordre alphabétique et par ordre de longueur de chaîne de caractères pouvant être utilisée dans les tests de codage
Liste des appareils pouvant être prévisualisés avec Swift UI
Créez un fichier jar qui peut être exécuté sur Gradle
Reportez-vous à C ++ dans le module Android Studio (Java / kotlin)
Problèmes facilement confondus avec Java et JavaScript
Introduction à Rakefile qui peut être effectuée en 10 minutes environ
Vous utilisez actuellement Java 6. Solution dans Android Studio Gradle
Comment créer une paire de clés d'ecdsa dans un format lisible par Java
Lire l'entrée standard en Java
Java avec Visual Studio Code
Outil d'analyse statique pouvant être utilisé avec GitHub [version Java]
Le problème de la réorganisation arbitraire des attributs XML dans Android Studio
Notez que les propriétés système, y compris JAXBContext, ne peuvent pas être utilisées dans Java11
Source pour afficher le tableau de caractères avec numberPicker dans Android Studio (Java)
SwiftUI View qui peut être utilisé en combinaison avec d'autres frameworks
Il semble que Java 14 ajoutera des fonctions de type classe de données
[Android / Java] Comprendre le type de description dans les paramètres d'écoute (installation du bouton)
Déterminer si un clavier personnalisé est activé dans Android Studio (Java)
Un hachage actif qui peut être traité comme des données même s'il n'est pas dans la base de données