MySQL mit C++ im Borland Builder - Johannes Schwichtenberg

johannesschwichtenberg.de

MySQL® 5 unter C++ mit dem Borland® C++ Builder® 2006 verwenden

In diesem Tutorial wird der Verbindungsaufbau zu einer MySQL Version 5 Datenbank mit dem Borland C++ Builder (ohne ODBC-Verbindung) beschrieben. Verfasst im Mai 2009 © Johannes Schwichtenberg

Einleitung

Dieses How-To soll den Verbindungsaufbau zu einer MySQL-Datenbank mit dem Borland C++ Builder 2006 (oder Borland Developer Studio) erläutern. Hierbei wird mit den DBExpress Komponenten gearbeitet, es wird keine ODBC-Verbindung benötigt oder aufgebaut.

Insgesamt ist es wohl sehr entscheidend, welche MySQL-Versionen man verwendet und die entsprechend zugehörigen DLLs zu verwenden, andernfalls erhält man Fehlermeldungen, die wenig aussagekräftig sind und das Projekt will und will nicht laufen. Die im Borland C++ Builder 2006 mitgelieferten DLLs funktionieren vermutlich nur mit MySQL Version 4.0 (<4.1!). Eine im Netz aufgestöberte freie DLL für MySQL 4.1 habe ich leider nicht zum Laufen bekommen.

“Zutaten” und Vorbereitungen

Bei der anschließenden Installation des MySQL-Servers muss nichts besonderes berücksichtigt werden.
Evtl. ist es sinnvoll einen Benutzernamen und Passwort zu vergeben, auch wenn des nicht vorgeschrieben ist, möglicherweise lassen sich damit spätere Fehlerquellen vermeiden.

Die DbExpress drivers entpackt man einfach und benötigt daraus die dbxopenmysql50.dll, diese kann man ins Projektverzeichnis (oder entsprechendes build-Verzeichnis) oder in den Windows-Ordner kopieren. (Die spätere exe benötigt weiterhin diese [und die zweite DLL], sie müssen also mit ausgeliefert werden.)

Die zweite DLL die benötigt wird, liegt im MySQL-Installationsverzeichnis innerhalb des Bin-Ordners (z.B. programme\mysql\bin) und heißt libMySQL.dll, auch die ins Projekt- oder Windowsverzeichnis kopieren.

Anschließend müssen noch einige Einträge in der DbExpress-dbxDriver.ini hinzugefügt werden und es kann losgehen. Die ini befindet sich im Borland-Installationsordner (z.B. programme\borland\BDS\4.0\dbExpress), dort hinzufügen oder einfügen:

[Installed Drivers]
OpenMySQL50=1

[OpenMySQL50]
LibraryName=dbxopenmysql50.dll
GetDriverFunc=getSQLDriverMYSQL50
VendorLib=LIBMYSQL.dll
BlobSize=-1
Database=DBNAME
ErrorResourceFile=
HostName=localhost
LocaleCode=0000
Password=password
User_Name=user
Compressed=False
Encrypted=False

Verbindung anlegen

Jetzt endlich den Builder starten, ein neues Projekt öffnen und eine TSQLConnection (aus der Gruppe DbExpress) aufs Formular ziehen (Abb. 1). Die Komponente doppelt anklicken, dann das Plus anklicken (Abb. 2) und den Treiber OpenMySQL50 auswählen, sowie eine Bezeichnung angeben (Abb. 3). Diese Verbindung dann links (noch innerhalb der Verbindungseinstellungen) aus der Liste auswählen und ggf. gleich die Einstellungen rechts anpassen (Abb. 4). – Vorher sollte man bereits eine Datenbank angelegt haben, die man dann hier auswählen kann, andernfalls verwendet man die standardmäßig vorhandene Datenbank 'test'. – Um das Anlegen einer Tabelle kommt man aber nicht herum. (Beispiel siehe unten)

Nachdem die Verbindungseinstellungen bestätigt wurden, erscheinen die Einstellungen im Objektinspektor, dort kann man unter 'Params' (Abb. 5) auch nachträglich Host- oder Benutzerdaten anpassen.

Verbindung anlegen, Screenshots

 

Beispiel für ein SELECT und Ausgabe in einer Memobox

Als nächstes eine TSQLQuery Komponente aufs Formular ziehen. Im Objektinspektor die Eigenschaft SQLConnection auf die vorher angelegte Connection setzen. Außerdem noch einen Button und eine Memobox aufs Formular ziehen. In die Button-OnClick Methode dann folgenden Code einfügen:

SQLConnection1->LoginPrompt = false;
SQLConnection1->Connected = true;

SQLQuery1->SQL->Clear();
SQLQuery1->SQL->Add("SELECT id, vorname FROM tblTest");

SQLQuery1->Open();

SQLQuery1->First();
while( SQLQuery1->Eof == false ) {
Memo1->Lines->Add( SQLQuery1->FieldByName("
vorname")->AsString );
SQLQuery1->Next();
}

Teilweise können die Einstellungen auch im Objektinspektor gemacht werden. – Das Projekt nun kompilieren; beim Klicken des Buttons sollte nun der entsprechende MySQL-Befehl abgesetzt werden und danach alle Daten der Spalte vnamen aus der Tabelle in der Memobox ausgegeben werden.

Mit dem gleichen Verfahren kann man auch INSERT, UPDATE usw. ausführen, teilweise bietet es sich jedoch an, dann die TSQLQuery ExecSQL()-Methode zu verwenden.

Das wars fürs erste.

Wichtig ist evtl. die Firewall so einzustellen, dass das neu erstellte Projekt auf den Port 3306 (mysql) zugreifen kann, besonders falls der MySQL-Server nicht auf der gleichen Maschine läuft!


Hier noch ein Beispiel für eine einfache Tabelle: (Um Probleme mit den Umlauten zu verhindern, sollte man als Charset für die Datenbank/Tabelle utf-8 (general) verwenden)

create table tblTest (
id int not null primary key auto_increment,
vorname varchar(20)
);

insert into tblTest values (1, 'meier'), (2, 'schmitt');

 

Alle auf dieser Website genannten Produktnamen, Produktbezeichnungen die eingetragene Marken darstellen, bleiben Eigentum der jeweiligen Rechteinhaber.

Sämtliche Informationen ohne Garantie und Anspruch auf Vollständigkeit, jedoch nach bestem Wissen des Autors zum Zeitpunkt der Erstellung.