Kann mir jemand sagen, wie man die Datenbank in Android aktualisieren. Ich habe eine App mit einer eingebetteten Datenbank erstellt. Ich habe die Version der Datenbank im Manifest geändert und die On-Update-Methode erstellt. Ich wollte es testen, um zu sehen, ob die Datenbank korrekt aktualisiert wurde, aber wenn ich den adb-Befehl verwende, erlaubt mir nur die Option -r, eine Neuinstallation durchzuführen, aber die Datenbank bleibt erhalten. Gibt es eine Möglichkeit, den adb-Befehl auszuführen, mit dem ich die Datenbank aktualisieren kann. Vielen Dank.Update Datenbank Android
Antwort
Werfen Sie einen Blick auf die folgenden Ressourcen und sehen, ob sie nützlich sind:
Delicious Bookmarks
http://delicious.com/tag/android+adb
http://delicious.com/tag/android+database
DevX: Erstellen und Datenbanken in Android
http://www.devx.com/wireless/Article/40842
Verwendung Android lernen: Datenbankprogrammierung
http://learnandroid.blogspot.com/2008/01/android-database.html
Android Database Package Zusammenfassung
http://developer.android.com/reference/android/database/package-summary.html
Was war für mich die Versionsnummer für die Datenbank ändert. Dies ist die konstante Zahl, die von der onCreate() -Methode Ihres Inhaltsanbieters verwendet wird. Etwas Ähnliches funktioniert, wenn Sie keinen Inhaltsanbieter für Ihre Datenbank verwenden und direkt abfragen. Siehe Quellcodebeispiel here.
Dieser Blog-Beitrag erklärt ein wenig die Grundlagen, wie Android Datenbank-Upgrades durchführt - http://www.unwesen.de/2009/09/07/android-development-database-upgrades/2/ – r1k0
Was für mich funktionierte, ist die Änderung der Versionsnummer Parameter, die ich an die DBOpenHelper-Klasse, die die SQLiteOpenHelper erweitert (die Klasse zum Erstellen/Lesen/Schreiben/etc ... der Android-Datenbank). Wenn der Versionsnummer-Parameter inkrementiert wird, wird die OnUpdate() - Funktion einmal für den neuen Wert dieses Parameters aufgerufen.
Hier ist, wie ich meine updateRow Methode behandeln würde:
public void updateRow(long rowId, String code, String name) {
ContentValues args = new ContentValues();
args.put("code", code);
args.put("name", name);
db.update(DATABASE_TABLE, args, "_id=" + rowId, null);
}
Gibt es eine Möglichkeit, dies zu tun für mehrere Zeilen gleichzeitig, anstatt "Update" für jedes zu nennen? – Gaffi
Wenn durch Aktualisieren Sie meinen Wiederaufbau (wie ich während der Entwicklung zu tun, wenn ich mit einer neuen Datenbank startet jedes Mal meiner Anwendung gestartet werden soll), dann füge dieser Code, bevor Sie die Datenbank in Ihrer Anwendung zugreifen:
this.getContext().getApplicationContext().deleteDatabase(DATABASENAME);
ODER
-t er Pfad zu Ihrer Datenbank:
SQLiteHelper sql_database_helper = new SQLiteHelper(this.getContext().getApplicationContext());
File dbFile = getDatabasePath(DATABASENAME);
Log.v("XIX","DB FILE PATH:"+dbFile.getAbsolutePath());
dann Ihre Datenbank über die Eingabeaufforderung löschen:
> adb devices
List of devices attached
3246%$%^$&17 device
> adb shell
$ su
su
rm mydatapath
Hinweis: Sie können nicht in der Lage sein, den su
Befehl zuzugreifen, ohne dass Ihr Telefon
Erklärung Cracken : Wenn Sie nicht dem Rat von r1k0 folgen wollen (was wahrscheinlich der richtige Weg ist, wenn Sie eine bereits veröffentlichte App aktualisieren), dann können Sie einfach die Datenbank mit den folgenden adb-Befehlen und einem Restar löschen t Ihrer App ruft die Methode onCreate erneut auf.
Ich rate nicht auf diese Weise zu verwenden:
public void updateRow(long rowId, String code, String name) {
ContentValues args = new ContentValues();
args.put("code", code);
args.put("name", name);
db.update(DATABASE_TABLE, args, "_id=" + rowId, null);
}
Ihre App zu SQL-Injection-Angriff anfällig sein werden, ist der beste Weg, dies zu tun, ist so etwas wie diese:
public void updateRow(long rowId, String code, String name) {
ContentValues args = new ContentValues();
args.put("code", code);
args.put("name", name);
String whereArgs[] = new String[1];
whereArgs[0] = "" + rowId;
db.update(DATABASE_TABLE, args, "_id= ?", whereArgs);
}
- 1. Update android-Datenbank
- 2. Android SQLite Datenbank-Update-Tabelle, wenn Update App
- 3. Android SQLite Datenbank doesnot Update und Delete
- 4. SignalR Datenbank Update Benachrichtigung
- 5. Access-Datenbank-Update-Abfrage
- 6. Django - Update Datenbank Zeilen
- 7. Android Sqlite Update zwischen
- 8. SQLite Datenbank Update Abfrage mit mehreren, wo Bedingungen in Android
- 9. Gleicher Code funktioniert aber nicht Android (Cursor, Update-Datenbank)
- 10. Update SQL-Datenbank mit ContentValues und die Update-Methode
- 11. Android Update Online-Tabelle
- 12. effiziente Bulk-Update-Rails-Datenbank
- 13. Update-Array in SQL-Datenbank
- 14. Android Datenbank zuletzt aktualisiert
- 15. Android-Live-Update?
- 16. Android Canvas Update Probleme
- 17. Databinding android update imageview
- 18. SQLite Update-Abfrage Android
- 19. Android sqlite Update Probleme
- 20. Android: Echtzeit-Freundesliste Update
- 21. Android Application Update Notification
- 22. Update Android Provider.Settings.System Wert
- 23. Realm Update fehlgeschlagen - Android
- 24. PreferenceScreen Android: Zusammenfassung Update!
- 25. Android Wearable apk update
- 26. Android Activity Update
- 27. Android: Update-System App
- 28. Android DDNS Update URL
- 29. Android Datenbank
- 30. Update Benutzerdefinierte ListView in Android
Dank für die Links, aber ich habe nichts gesehen, dass über eine ADB Neuinstallation und Aktualisierung der Datenbank gesprochen hat. Ist es möglich, dies zu tun, erstellt meine App diese Datenbank das erste Mal gut, aber nur während der Updates ist, wenn es abstürzt. Gibt es einen Manifest-Eintrag, den ich eingeben muss? – user237259
Egal, ich habe herausgefunden, was ich falsch gemacht habe, nach einigem Nachforschen habe ich herausgefunden, dass ich den Tisch nicht richtig fallen ließ und wenn ich den Tisch neu erstellen würde, würde es fehlschlagen. Am Ende habe ich die Tabelle korrekt gelöscht und anstatt den oncreate-Befehl aufzurufen, habe ich einfach eine Abfrage geschrieben, um die Tabelle in der onupdate-Methode neu zu erstellen. – user237259
Ich denke, es wäre konstruktiver, wenn Sie Beispiele statt einer Reihe von (nicht verwandten) Links anbieten würden. –