2017-09-03 4 views
0

Ich benutze Android Studio, um eine Kalenderanwendung zu machen. Ich habe eine Datenbank erstellt, um ein Ereignis zu speichern. Ich konnte das Ereignis so lange öffnen, wie das virtuelle Gerät von Android lief, aber als ich es schloss und wieder öffnete, würde ich das Ereignis nicht erneut öffnen. Ist es möglich, dass die Datenbank so lange bleibt, wie der AVD läuft?Wie lange dauert eine Datenbank?

enter image description here

+0

'als ich es schloss und es wieder öffnete, würde ich das Ereignis nicht wieder öffnen' was meinst du! Sie sollten Ihre Arbeit finden, wenn Sie es erfolgreich gespeichert haben! es sei denn, Sie haben die App deinstalliert oder die Daten gelöscht oder die db-Datei manuell gelöscht oder den Inhalt geändert! –

+0

Trennen Sie die Verbindung zur Datenbank, bevor Sie die App verlassen? Schreiben Sie einen Code pls –

+0

Sie rufen wahrscheinlich nicht SQLiteDatabase.close() -Methode –

Antwort

0

Nun, ich kann in Ihrem Schnipsel sehen, dass Sie Ihre Anfrage und Ihre Datenmanipulation in der gleichen Klasse tun, wenn Sie sich die Verantwortung getrennt hatte dann würde das Leben Öffnen und Schließen einer Verbindung hätte einfacher sein können.

Sie sollten eine DatabaseFactory erstellt haben, die die Verbindung zur Datenbank herstellt. Habe einfache Methoden wie openConnection (string connectionString) Close() und query (string sql, string [] param).

Eine andere Klasse namens DatabaseConsumer sollte grundsätzlich eine Verbindung öffnen, die Abfrage verwenden, die Daten wie gewünscht zurückgeben (ResultSet?), Danach die Verbindung schließen.

Aber um Ihre Frage in Bezug auf Ihr Design zu beantworten, können Sie einfach die Verbindung nach Abschluss Ihrer while-Anweisung (res.moveToNext) schließen. Etwas wie myDB.closeConnection()?

edit: Implikationen, dass eine Verbindung nicht geschlossen wird, kann dazu führen, dass der Server diese Verbindung hält. Bei einigen Konfigurationswerten wird angegeben, wie viele offene Verbindungen Ihre DB verarbeiten kann. Nach einer Weile erlaubt die Datenbank die Verbindung nicht und gibt Ihnen eine SQLServerException, boohoo.