Android Tutorial DBUtils, Android Datenbanken jetzt einfach

klaus

Expert
Licensed User
Longtime User
Das DBUtils Codemodul hilft SQLite Datenbanken in Ihre Programme einzubinden.
Es enthält eine Reihe von Methoden für gängige SQL Aufgaben. Themen wie 'escaping strings' und 'identifiers' werden automatisch bearbeitet.
Das DBUtils Codemodul ist in dem beigefügten Beispiel-Projekt enthalten.
Ab Version 1.07 sind folgende Methoden enthalten:

- CopyDBFromAssets: Kopiert eine Datenbank die im APK 'Package' gespeichert ist (im IDE Files Tab hinzugefügt) an eine schreibbare Speicherstelle. Kopiert aber nur wenn die Datenbank noch nicht an dieser Stelle existiert.

- CreateTable: Erzeugt eine SQL Tabelle mit gegebenen Feldern und Typen. Setzt auch 'primary key' (optional).

- DropTable: Löscht eine Tabelle.

- InsertMaps: Fügt effizient Einträge in die Tabelle hinzu. Die Daten werden einem List Objekt übergeben das Map Objekte als Einträge enthält.
Beispiel:
B4X:
    Dim ListOfMaps As List
    ListOfMaps.Initialize
    For i = 1 To 40
        Dim m As Map
        m.Initialize
        m.Put("Id", Id)
        m.Put("First Name", "John")
        m.Put("Last Name", "Smith" & i)
        ListOfMaps.Add(m)
    Next
    DBUtils.InsertMaps(SQL, "Students", ListOfMaps)
- UpdateRecord: Ändert einen existierenden Datensatz. Erlaubt einen Feldnamen mit dem neuen Wert und einem Map Objekt mit den 'where' Feldern.
Beispiel:
B4X:
    Dim WhereFields As Map
    WhereFields.Initialize
    WhereFields.Put("id", "1234")
    WhereFields.Put("test", "test #5")
    DBUtils.UpdateRecord(SQL, "Grades", "Grade", 100, WhereFields)
- ExecuteMemoryTable: Führt eine SELECT Abfrage durch und liest all Einträge in ein List Objekt. Jeder Eintrag in List ist ein Array von Strings das den Werten eines Eintrages entspricht.

- ExecuteMap: Führt eine SELECT Abfrage durch und gibt den ersten Eintrag zurück der in einem Map Objekt gespeichert ist. Die Spaltennamen sind die Schlüsselworte (keys) und die Werte sind die Map-Werte.

- ExecuteSpinner: Führt eine SELECT Abfrage durch und füllt ein Spinner Objekt (ComboBox) mit den Werten der ersten Spalte.

- ExecuteListView: Führt eine SELECT Abfrage durch und füllt ein ListView Objekt mit den Werten der ersten Spalte und optional mit den Werten der zweiten Spalte.

- ExecuteJSON: Führt eine SELECT Abfrage durch und gibt ein Map Objekt zurück das man an den JSONGenerator übergeben kann zur Erstellung eines JSON Textes.
Beispiel:
B4X:
    Dim gen As JSONGenerator 'Requires a reference to the JSON library.
    gen.Initialize(DBUtils.ExecuteJSON(SQL, "SELECT Id, [Last Name], Birthday FROM Students", Null, _
        0, Array As String(DBUtils.DB_TEXT, DBUtils.DB_TEXT, DBUtils.DB_INTEGER)))
    Dim JSONString As String
    JSONString = gen.ToPrettyString(4)
Siehe das beigefügte Beispiel und das DBUtils Codemodul für mehr Informationen über jede Methode.

- ExecuteHtml: Erstell eine gut aussehende html Tabelle mit den Resultaten. Sie können diese dann in einem WebView Objekt anzeigen. Diese Methode ist sehr hilfreich für die Entwicklung da man die Daten sieht aber auch für Berichte.
Sie können das Aussehen der Tabelle mit der Variable CSS ändern.
Neu: Der letzte Parameter definiert ob die Werte klickbar sind oder nicht.
Falls die Werte klickbar sind dann müssen Sie das WebView_OverrideUrl Event abfangen um die gewählte Zelle zu finden.

- GetDBVersion / SetDBVersion: Holt die Datenbank Version zurück oder setzt sie. Der Wert ist in einer separaten Tabelle 'DBVersion' gespeichert. Das ist hilfreich für die Verwaltung existierender Datenbanken.
Dieses Feature wurde von corwin42 hinzu gefügt. Besten Dank!

Über das Beispiel. In dem Beispiel erstellen wir zwei Tabellen: Students (Studenten) und Grades (Noten). Die 'Students' Tabelle enthält die Liste aller Studenten.
Die 'Grades' Tabelle enthält, für jeden Studenten, die Noten für jeden Test.

Die Aufrufe ExportToJSON oder ShowTableInWebView aktivieren um diese Features zu Veranschaulichen.

dbutils_1.png


dbutils_3.png




Um die Tabelle zu verbergen müssen Sie in Activity_Create den Aufruf auf ShowTableInWebView auskommentieren.

Beigefügte Dateien:

zip.gif
DBUtils.zip
 

seardnA

Member
Licensed User
Longtime User
Ich habe vor kurzem angefangen, als Hobby mit b4a zu programmieren und viel Spass daran. Jetzt möchte ich Daten speichern und würde dies gerne mit SQLlite machen und dabei mich in der Nutzung von DBUtils üben. Könnte jemand vielleicht ein Beispiel der grundsätzlichen DBUtils-Methoden geben, bei der ich auch erkenne, was übergeben werden muß?

Was macht CopyDBFromAssets genau? Gibt es ein .db innerhalb des SDK, die als leere Hülle verwendet wird? Wo finde ich es genau und wo spezifiziere ich File.DirAssets ?

Zum Umfang meines Nichtwissens die Frage: Was ist der Unterschied zwischen Maps und Tables?

Andreas
 
Last edited:
Top