C++-Programmierung: SQlite
Sqlite ist eine kleine Funktionsbibliothek zum Ansprechen einer Sqlite-Datenbankdatei. Sqlite-Datenbankdateien haben die Dateiendung ".db" (oder eine beliebige andere). Das Besondere an Sqlite ist, dass der Nutzer keinerlei Software installieren muss, um Sqlite verwenden zu können; im Verzeichnis der ausführbaren Datei (*.exe) muss sich nur die Sqlite-Bibliothek befinden.
Einrichten von Sqlite
[Bearbeiten]Um SQLite verwenden zu können, müssen Sie sich den Quellcode von der Homepage herunterladen und nach folgender Anleitung die "sqlite3.lib" erzeugen. Danach müssen Sie ihrem Compiler noch mitteilen wo sich die "sqlite3.h" und "sqlite3.lib" befinden. Nun können Sie Sqlite zum ersten Mal in einem Programm verwenden.
Eine Datenbankdatei öffnen
[Bearbeiten]Sqlite enthält Strukturen und Funktionen. Um eine Datenbank zu öffnen verwenden Sie die Funktion sqlite3_open
. Die 3 im Funktionsnamen steht dabei für die Version von Sqlite; es gab auch einmal eine Funktion sqlite2_open
.
Die Funktion sqlite3_open
erwartet zwei Parameter: Als erstes den Dateinamen als char*
und zweitens einen Doppelzeiger auf eine Struktur namens sqlite3
. Diese Struktur repräsentiert eine Datenbankdatei von Sqlite. Der zweite Parameter wird also mit einer funktionierenden Instanz von sqlite3
ausgefüllt. Die Funktion sqlite3_open
gibt dann einen bestimmten Ergebniscode zurück; im Idealfall sollte dieser SQLITE_OK
sein, dann wurde die Datenbank korrekt geöffnet. Sollte doch etwas schiefgegangen sein, z.B. weil der Pfad nicht stimmt, kann man sich mit der Funktion sqlite3_errmsg
eine Beschreibung des Fehlers (auf Englisch) ausgeben lassen. Mit der Funktion sqlite3_close
kann man die Datenbank wieder schließen. Aber genug der vielen Worten, das Ganze einmal in der Praxis:
#include <iostream>
#include <string>
#include <sqlite3.h>
using namespace std;
int main()
{
// Als erstes legen wir einen sqlite3-Zeiger an
sqlite3* Database;
// und instantiieren ein Objekt von string auf dem Stack
string Path;
// Danach fragen wir den Benutzer nach dem Pfad zur Datenbankdatei
cout << "Pfad zur Datenbankdatei: ";
cin >> Path;
// Nun können wir die Datenbank öffnen!
if(sqlite3_open(Path.c_str(), &Database) != SQLITE_OK)
{
// Es ist ein Fehler aufgetreten!
cout << "Fehler beim Öffnen: " << sqlite3_errmsg(Database) << endl;
// Programm beenden
return 1;
}
// Es hat alles geklappt, die Datenbank wurde geöffnet
cout << "Datenbank erfolgreich geöffnet!" << endl;
// Jetzt können wir die Datenbank wieder schließen
sqlite3_close(Database);
cout << "Datenbank geschlossen!" << endl;
// Programm beenden
return 0;
}
Wenn Sie dieses Programm kompilieren, wird ein Linkerfehler ausgegeben, wenn Sie die "sqlite3.lib" nicht mitgelinkt haben. Haben Sie diese dann eingebunden, wird das Kompilieren und Linken tadellos funktionieren. Wenn Sie eine DLL-Version von sqlite3 verwenden, benötigen Sie "sqlite3.dll". Diese müssen Sie noch aus dem Sqlite-Ordner in das Verzeichnis, in dem Ihre Anwendung liegt, kopieren. Der Pfad zur Datenbankdatei im Beispielprogramm ist frei wählbar; sqlite legt die Datenbank ggf an.