Datenbankverbindung herstellen und trennen Datensatz abfragen Abfragen mehrerer Datensätze

Beispi elprojekte - Datenbankprogrammierung – SQLite mit Delphi www.delphi-treff.de 188 INSERT INTO artikel bezeichnung, preis VALUE Delphi XE Starter, 149

7.2.5.5. UPDATE

Soll ein bereits bestehender Datensatz geändert werden, wird der UPDATE-Befehl benötigt. UPDATE artikel SET preis=20 WHERE bezeichnung=USB-Stick 32GB; ändert den Preis des Artikels USB-Stick 32GB auf 20 Euro. Weitere Befehle und wie diese von SQLite verstanden werden findet man auf http:www.sqlite.orglang.html .

7.2.6. Der SQLite-Wrapper für Delphi

Wenn man sich den SQLite4Delphi Wrapper von Tim Anderson noch nicht heruntergeladen hat, dann sollte man das jetzt nachholen . Das zip-Archiv beinhaltet auch eine Demo-Anwendung TestSQLite.dpr, die wir gleich unter die Lupe nehmen werden. Zunächst jedoch die wichtigsten Dinge zur Arbeit mit SQLite und dem Delphi- Wrapper.

7.2.6.1. Datenbankverbindung herstellen und trennen

Wie bereits erwähnt, speichert SQLite seine Daten in einer Datei. Für diese müssen wir einen Dateinamen o ge e . De Ei fa hheit hal e e e i sie „sta te .d u d lege sie di ekt e e u se e A endung. Bitte beachten: Sofern sich die Anwendung im Programmeverzeichnis von Windows befindet, ist das ohne Administratorrechte nicht möglich In diesem Fall muss ein anderes Verzeichnis verwendet werden. uses SQLiteTable3; var databaseFile: String; database: TSQLiteDatabase; begin databaseFile := ExtractFilePathApplication.ExeName + ‘starter.db’ ; database := TSQLiteDatabase.CreatedatabaseFile; try Hier kommt der eigentliche Code zur Abfrage der Datenbank finally database.Free; end; end; Dreh- und Angelpunkt der SQLite-Anbindung ist die Klasse TSQLiteDatabase. Sie wird mit einem Dateinamen initialisiert. Da das Objekt am Ende wieder freigegeben werden muss, wird in obigem Beispiel der eigentliche Code zwischen try und finally ausgeführt. Beispi elprojekte - Datenbankprogrammierung – SQLite mit Delphi www.delphi-treff.de 189

7.2.6.2. Datensatz abfragen

Abfragen richten sich an eine bestimmte Tabelle. Möchte man z.B. aus der oben bereits verwendeten Tabelle „a tikel de A tikel it de ID a f age , e e det a folge de Code: var table: TSQLiteTable; bezeichnung: String; ... table := database.GetTable ‘SELECT FROM artikel WHERE id = 4711‘ ; Auf die einzelnen Felder kann man dann über die entsprechenden Methode von table zugreifen: bezeichnung := table.FieldAsStringtable.FieldIndex ‘bezeichnung‘ ; Zu beachten ist hier: Die Methoden FieldAsString, FieldAsInteger, FieldAsDouble usw. erwarten als Parameter nicht den Namen der Spalte, sondern deren Index. Diesen wiederum erhält man über die Methode FieldIndex.

7.2.6.3. Abfragen mehrerer Datensätze

In obigem Beispiel wird als Ergebnis exakt ein Datensatz erwartet. Natürlich gibt es aber auch Abfragen, die eine ganze Liste an Datensätzen liefern. Z.B. alle Artikel, die teurer sind als 20 EUR: table := database.GetTable ‘SELECT bezeichnung FROM artikel WHERE preis 20‘ ; while not table.EOF do begin bezeichnung := table.FieldAsStringtable.FieldIndex ‘bezeichnung‘ ; table.Next; end; Mit den FieldAs-Methoden greift man immer auf die Spalten des aktuellen Datensatzes zu. Zum nächsten Datensatz wechselt man über den Aufruf Next, zurück geht es mit Previous. Next sollte man natürlich nur aufrufen, wenn man sich nicht schon auf dem letzten Datensatz befindet. Deshalb wird in obigem Beispiel eine while-Schleife verwendet, die nur bis zum letzten Datensatz EOF = end of file läuft und nicht darüber hinaus.

7.2.6.4. Demoanwendung