German SQL....brauche einen Anfang

mw71

Active Member
Licensed User
Longtime User
Hallo Zusammen,

meine App funkt. soweit gut, die Daten werden Ordnungsgemäß als CSV gespeichert (je nach Einstellung in verschiedenen Datein) und ich kann mir die Datein auch als Tabelle anzeigen lassen. Da ich überlege/plane die Datensätze auch Editieren zu lassen, habe ich versucht auf SQL DB umzusteigen......und bin kläglich gescheitert. :(

Kann mir jemand ein Grundgerüst geben welches folgendes kann:

- SQL DB erzeugen/öffnen (wenn sie noch nicht vorhanden ist, Ort und Name wird im Programm festgelegt)
- Datensatz in diese DB schreiben (wird durch einen Button_Click ausgelöst, enthält u.a. Datum, Zeit und ein paar Textfelder)
- Inhalt der DB als Tabelle ausgeben (wobei dies nicht unbedingt die gleiche ist, in der zuvor die Daten gespeichert wurden. Die Datei wählt der Nutzer über einen "File Dialog" aus)

Später soll der Nutzer auch noch einen Datensatz auswählen um diesen zu Ändern oder zu löschen, aber erst ein mal muss ich mal das grundlegende hinbekommen.

Ich hoffe ihr könnt mir helfen und sag schon mal Danke.
 

MaFu

Well-Known Member
Licensed User
Longtime User
Am einfachsten wäre es mit dem Codemodul DBUtils (link), da ist auch eine Beispielapp dabei.
Du scheinst aktuell noch mit der Trial Version zugange zu sein. Der Download von Bibliotheken und Codemodulen funktioniert aber nur für lizenzierte Anwender.
 

klaus

Expert
Licensed User
Longtime User
ln meiner Unterschrift findest Du SQLite Beispiele die genau machen was Du brauchst.
Die drei Beispiel findest Du auch HIER.
Im B4A Users Guide gibt es ein volles Kapitel über SQLite.
 
Last edited:

mw71

Active Member
Licensed User
Longtime User
Hallo Klaus & Manfred,

Klaus, der User Guide liegt auf der Festplatte und das Kapitel über SQL und DBUtils liegt ausgedruckt neben dem Rechner.
Trotzdem hab ich das irgendwie nicht hinbekommen. Ich werd mir jetzt noch mal Beispiel 1 (SQLiteLight1) ansehen (evtl. Ausdrucken ;)),
mal schauen ob ich das noch irgend wie auf die Reihe bekomme.

bis später
 

mw71

Active Member
Licensed User
Longtime User
so, kurzer Zwischenbericht:

- Datensatz speichern klappt
- Tabelle erzeugen (dbutils.ExecuteHtml) klappt, nach dem ich verstanden hab was die Variable am ende der Zeile im Beispiel macht
(manchmal hat man wirklich ein Brett vorm Kopf...)
Keine Ahnung wo das gestern geklemmt hat.

Jetzt muss ich herausfinden wie ich an die einzelnen Daten eines Datensatzes komme (also Datum, Zeit....).

Eine Frage hätte ich noch (Klaus). Im Beispiel setzt du einen Primary Key, der ja automatisch Hochgezählt wird. Wird dieser benötigt,
z.b. um den Datensatz zu identifizieren ?? Persönlich brauche ich in nicht, deshalb lasse ich ihn auch nicht in der Tabelle anzeigen lassen.

Grüße
 

MaFu

Well-Known Member
Licensed User
Longtime User
Solange Du keine Tabellen miteinander verknüpfst benötigst Du ihn nicht unbedingt.
Er kann aber durchaus nützlich sein.
Wenn Du z.B. in einer Liste ein bestimmtes Feld einer Tabelle anzeigen lässt ist es sinnvoll die Id (= Primary Key) des jeweiligen Datensatzes in den Listeneinträgen mit abzuspeichern. Wenn Du dann in der Liste einen Eintrag anklickst weißt Du genau welcher der zugehörige Datenbankeintrag ist.
 

klaus

Expert
Licensed User
Longtime User
Eine Frage hätte ich noch (Klaus). Im Beispiel setzt du einen Primary Key, der ja automatisch Hochgezählt wird. Wird dieser benötigt,
Nein.
Diesen ID brauchst Du nicht. DieseSpalte kannst Du weglassen.
Es gibt in SQLite eine spezielle Spalte rowID welche genau das gleiche macht.
In der Routine Sub ReadDataBaseIDs kannst Du:
B4X:
'We read only the ID column and put them in a List
    If Starter.flagFilterActive = False Then
    Cursor1 = Starter.SQL1.ExecQuery("SELECT ID FROM persons")
Else
    Cursor1 = Starter.SQL1.ExecQuery("SELECT ID FROM persons" & Starter.FilterQuery)
End If
durch
B4X:
'We read only the ID column and put them in a List
    If Starter.flagFilterActive = False Then
    Cursor1 = Starter.SQL1.ExecQuery("SELECT rowID FROM persons")
Else
    Cursor1 = Starter.SQL1.ExecQuery("SELECT rowID FROM persons" & Starter.FilterQuery)
End If
ersetzen.

Die IDList List brauchst Du um die verschiedenen Einträge zu erkennen.
 

mw71

Active Member
Licensed User
Longtime User
Hallo zusammen,

danke für eure Infos. Ich werde erst mal die rowID nutzen, aber die ID mit drin lassen, wer weiß wozu man die noch gebrauchen kann :D.

Dank den UserGuide ist es mir mittlerweile auch gelungen beim Klick auf meine Tabelle, die ich per DBUtils.LoadHTML erstellt habe, die zugehörigen
Daten inkl. rowID auszulesen. Jetzt muss ich mich damit beschäftigen wie ich die so gewonnen Daten verarbeite (ändere oder lösche) und wie
ich das in der App umsetze....

Grüße & Danke noch mal!
 
Top