[Android Studio] Beschreibung, die kontinuierlich in die SQLite-Datenbank eingegeben werden kann [Java]

Einführung

Ich bin neu in Android. Ich kann jetzt den Wert von EditText in der Datenbank registrieren, während ich den Text oder die Webseite betrachte. Wenn ich jedoch versuche, ihn kontinuierlich einzugeben, schlägt dies fehl. ** Sie können Daten bei jedem Öffnen der App nur einmal registrieren! ** ** ** Ich fand das als App fatal und untersuchte, was zu tun ist. Ich denke, es gibt zwei Faktoren. ➀ try-catch-finally-Anweisung nicht geschrieben ➁ Falscher Speicherort zum Öffnen der Datenbank Ich habe beschlossen, diesen Artikel als Referenz für diejenigen zu schreiben, die unter der gleichen Situation leiden.

➀ Über die try-catch-finally-Anweisung, die nicht geschrieben wird

Wie Sie dem folgenden Code entnehmen können, verfügt mein Code nicht über den erforderlichen Try-Catch. Er ist sehr instabil, da er überhaupt keine catch-Anweisung hatte. Ich verstehe die Bedeutung von Try-Catch, aber es ist schwierig. .. Ich dachte, ich müsste noch lernen. Ich denke, es ist besser, "** try-with-resources **" zu verwenden, als später über komplizierten Try-Catch nachzudenken.

➁ Über den falschen Ort zum Öffnen der Datenbank

Fallender Code

Klicken Sie hier für den vollständigen Code (springen Sie zu einem anderen Artikel, den ich geschrieben habe) Wenn Sie sich nur einmal registrieren, wird es nicht fallen. Wenn Sie versuchen, sich zweimal zu registrieren, wird die Ausnahme "java.lang.illegalStateException versucht, ein bereits geschlossenes Objekt erneut zu öffnen" angezeigt. Dies liegt daran, dass der fallende Code die Datenbank mit der onCreate-Methode öffnet. Die onCreate-Methode ist die erste Methode, die beim Starten der App ausgeführt wird. Ich öffne die Datenbank hier, verarbeite sie und gebe sie dann frei. Selbst wenn ich versuche, es erneut zu bedienen, stürzt die App ab, weil sie von onCreate geschlossen wurde.

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 Ich denke, der Vorteil von Try-with-Resources ist, dass Sie keine komplizierten Try-Catch-Anweisungen schreiben müssen. ~~ Es ist eine große Hilfe für mich, die Try-Catch nicht verstehen ~~ Ich denke jedoch, dass es mehr Programme gibt, die nur Try-Catch-finally implementiert sind, also werde ich mein Bestes geben, um zu lernen. .. Klicken Sie hier, um die Syntax von Try-with-Resources anzuzeigen

python


try (Deklaration von Variablen, die durch Schließen bereinigt werden müssen) {
Originalverarbeitung
} catch (Name der Ausnahmeklassenvariablen) {
Was tun, wenn eine Ausnahme auftritt?
}

Hier ist eine Umschreibung des vorherigen Codes unter Verwendung von Try-with-Resources Darüber hinaus haben wir den Code überprüft, um die Datenbank mit Methoden zu öffnen. ➁ Es ist eine Lösung.

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();
        }
    }

Dadurch wird die Datenbank nach Abschluss des Versuchs automatisch freigegeben. Wir haben ein Programm erstellt, das die kontinuierliche Registrierung nicht löscht!

Referenz

WINGS-Projekt von Shinzo Saito / Betreut von Yoshihiro Yamada "Lehrbuch für die Entwicklung von Android-Apps" Geschrieben von Kiyotaka Nakayama / Geschrieben von Daigo Kunimoto / Betreut von Flarelink Co., Ltd. "Einführung in Java für eine erfrischende 3. Ausgabe"

Recommended Posts

[Android Studio] Beschreibung, die kontinuierlich in die SQLite-Datenbank eingegeben werden kann [Java]
Schreiben einer Klasse, die in Java bestellt werden kann Ein kleines Standard-Memo
Firebase-Realtime-Datenbank für Android, die mit Kopie verwendet werden kann
Java (Super Beginner Edition), das in 180 Sekunden verstanden werden kann
Referenznotiz / In-Memory-LDAP-Server, der in Java eingebettet werden kann
Zusammenfassung von ORM "uroboroSQL", das in Enterprise Java verwendet werden kann
Von Java nach C und von C nach Java in Android Studio
Eingabe / Ausgabe von Java-Dateien, die über den historischen Hintergrund verwendet werden können
[Java 8] Bis zur Konvertierung von Standardeingaben, die beim Codieren von Tests verwendet werden können, in eine Liste oder ein Array
Technologie-Auszug, mit dem EC-Sites in Java-Schulungen erstellt werden können
[Android / Java] Betreiben Sie eine lokale Datenbank in Room
Grundlegende funktionale Schnittstelle, die in 3 Minuten verstanden werden kann
Praktische Tastenkombinationen für Eclipse
Hinweise zu Android Studio
Syntax- und Ausnahmebedingungen, die beim Vergleich mit null in Java verwendet werden können
[Java 8] Sortiermethode in alphabetischer Reihenfolge und Reihenfolge der Zeichenkettenlänge, die für Codierungstests verwendet werden kann
Liste der Geräte, die mit Swift UI in der Vorschau angezeigt werden können
Erstellen Sie eine JAR-Datei, die auf Gradle ausgeführt werden kann
Siehe C ++ im Android Studio-Modul (Java / Kotlin)
Probleme, die leicht mit Java und JavaScript verwechselt werden können
Einführung in Rakefile, die in ca. 10 Minuten durchgeführt werden kann
Sie verwenden derzeit Java 6. Lösung in Android Studio Gradle
So erstellen Sie ein Schlüsselpaar von ecdsa in einem Format, das von Java gelesen werden kann
Lesen Sie die Standardeingabe in Java
Java mit Visual Studio Code
Statisches Analysetool, das mit GitHub verwendet werden kann [Java-Version]
Das Problem, dass XML-Attribute in Android Studio willkürlich neu angeordnet werden
Beachten Sie, dass Systemeigenschaften einschließlich JAXBContext in Java11 nicht verwendet werden können
Quelle zur Anzeige des Zeichenarrays mit numberPicker in Android Studio (Java)
SwiftUI-Ansicht, die in Kombination mit anderen Frameworks verwendet werden kann
Es scheint, dass Java 14 Datenklassen-ähnliche Funktionen hinzufügen wird
[Android / Java] Verstehen Sie den Beschreibungstyp in den Listener-Einstellungen (Schaltflächeninstallation).
Feststellen, ob eine benutzerdefinierte Tastatur in Android Studio (Java) aktiviert ist
Ein aktiver Hash, der als Daten behandelt werden kann, auch wenn er nicht in der Datenbank enthalten ist