Mit CPlusPlus auf MariaDB zugreifen - ein Beispiel
Inhaltsverzeichnis
Einleitung[Bearbeiten]
Hier eine kurze Beschreibung wie man am einfachsten mittels der Programmiersprache C++ und der IDE "Visual Studio" auf die MariaDB Datenbank zugreifen kann.
Diese Anleitung bezieht sich derzeit nur auf Windows Systeme. Ggf. werde ich noch eine Unix-Basierte Anleitung nachschießen.
Anleitung[Bearbeiten]
MariaDB Installieren[Bearbeiten]
Meistens wird man ja ohnehin die Datenbank selbst auf seinem Entwicklungssystem installieren. Wenn diese auf einem Fremdsystem liegt, kann man sich die nun im Folgenden beschriebenen Ordnerstrukturen mit den referenzierten Dateien auch von dem System kopieren auf dem die MariaDB läuft. (Nur vom Windows System)
Download der aktuellen MariaDB als ".msi-File" von:
https://downloads.mariadb.org/mariadb/
und installation mit sämtlichen Komponenten die wählbar sind. (Standardinstallation incl. HeidiSQL)
Testdatenbank erstellen[Bearbeiten]
Um letztenendes die Datenbankverbindung auch testen zu können benötigen wir eine Testdatenbank auf unserem MariaDB Server.
Wenn er lokal installiert ist, kann man beispielsweise das Programm "HeidiSQL" starten welches mit MariaDB mitgeliefert wird uns sich mit der lokalen DAtenbank verbinden:
Dann folgendes Wählen
Datei->Neuer Query Tab
Und diese SQL Query ausführen
CREATE DATABASE IF NOT EXISTS test; USE test; CREATE TABLE names (id int, name varchar(50)); INSERT INTO names (id,name) VALUES (0,"schlumpf"); INSERT INTO names (id,name) VALUES (1,"Hinz"); INSERT INTO names (id,name) VALUES (2,"Kunz"); Select * from names;
Hier wird dann also eine Datenbank samt tabelle und inhalt angelegt die wir nutzen können. Und für die Überprüfung gleich auch nochmal die Daten ausgegeben die vorhanden sind.
Das Ergebnis sieht dann so aus:
Visual Studio C++ Projekt anlegen / Konfigurieren[Bearbeiten]
1. Visual Studio starten und neues Projekt anlegen
2. Unbedingt folgendes Einstellen, da die Arbeit mit den zusätzlichen Bibliotheken sonst nicht funktioniert.
Ich kann nicht genau erklären, warum dies nur im "Release Scope" funktioniert. Vielleicht kann mich da noch jemand über den Diskussionsbereich hier erleuchten :).
Sicher aber ist, falls man diesen Schritt vergisst, muss man alle nun folgenden Konfigurationen nochmal machen, da diese immer nur für den Ausgewählten "Scope/Modue" gelten. (Also z.B. Debug + X86 oder Release + X64 usf.).
3.. Dann mit der rechten Maustaste das Projekt anklicken und "Eigenschaften" öffnen.
Nun werden 3 Schritte benötigt um die mariadb/mysql Bibliothek verfügbar zu machen, die mit der MariaDB Installation auf einem Windows Rechner bereits lokal abgelegt sind.
Ich gehe hier davon aus, das die aktuelle MariaDB Version auf einem Win 10 Rechner installiert wurde und dann stimmen die Pfade. Ansonsten muss man ggf. leich abgewandelte Pfade nutzen die man aber leicht herausfindet.
Extra Includeverzeichnis hinzufügen[Bearbeiten]
Meist wird es dieses Verzeichnis sein, kann aber natürlich abweichen.
Extra "lib-verzeichnis"/Linker hinzufügen[Bearbeiten]
Bibliotheksfile auswählen/hinzufügen[Bearbeiten]
Hier muss das ".lib-File" also die Bibliotheksdatei selbst hinzugefügt werden. Meist reicht die die hier im Screenshot angegeben ist . Aber auch die kann im Namen abweichen oder es können zusätzliche Files notwendig sein, je nach Projekt.
Und den Namen der ".dll" Datei eintragen.
Bibliothek im Projekt verfügbar machen[Bearbeiten]
Nun findet zwar Visual Studio die Bibliothek, und damit die entsprechenden Methoden etc. die für das Kompilieren des Programms (hier der .exe) notwendig sind. Allerdings wird auch das Fertig-Kompilierte Programm am Ende diese Bibliothek benötigen um die aus dieser genutzten Funktionen verwenden zu können.
Dazu einfach die entsprechende .dll-Datei, hier libmariadb.dll in das Verzeichnis kopieren in dem sich letztendlich das kompilierte Programm, also unter Windows das ".exe-File" befindet.
Die Datei findet man im zuvor ausgewählten "lib-ordner" in diesem Fall 'C:\Program Files\MariaDB 10.3\lib"!
Zuvor muss natürlich das Programm mindestens schon einmal kompiliert worden sein, damit der Pfad zur ".exe-datei" überhaupt existiert also:
Bsp:
Kompilieren:
Datei kopieren:
C++ Programm schreiben[Bearbeiten]
Und hier jetzt ein kleines C++ Programm welches unter Nutzung der neuen Bibliothek auf die Datenbank zugreift und die vorhandenen Zeilen auf der Konsole ausgibt.
#include "pch.h" #include <iostream> #include <mysql.h> #include <string> using namespace std; int main(int argc, static char argv[]) { MYSQL *conn; MYSQL_RES *res; MYSQL_ROW row; string sqlquery = "select * from names"; conn = mysql_init(NULL); conn = mysql_real_connect(conn, "localhost", "root", "meinpasswort", "test", 3306, NULL, 0); if (conn) { printf("erfolgreich verbunden!"); } //daten holen mysql_query(conn, sqlquery.c_str()); //query muss als c_str (c-string) übergeben werden res = mysql_store_result(conn); //resultset initialisieren cout << endl << "ID : " << "Name" << endl; while (row = mysql_fetch_row(res)) { cout << row[0] << " : " << row[1] << endl; } system("pause"); return 0; }
Den Code werde ich nicht im Detail erklären. Er ist recht simpel und wenn man mit C++ Programmiert und bereits soweit ist mit Datenbanken zu arbeiten sollte man diesen Code verstehen.
Das Programm kann nun gestartet werden und das Ergebnis sollte dann folgendermaßen aussehen:
H@ppy H@cking