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