Autor Beitrag
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 20.04.09 23:33 
Moin!

Es ging mir schon geraume Zeit auf den Senkel, dass es keine wirklich einfache MySQL-Anbindung für Delphi gibt, zumindest habe ich keine gefunden. :nixweiss: Es gibt zwar Ansätze wie Sand am Meer, aber meistens war das viel zu viel Aufwand (ich brauche keine Anbindung an die DB-Komponenten von Delphi, die GUI-DB-Controls sind eh hässlich oder nicht funktional geeignet) oder man verzweifelt schon an der Installation (ich habe die Zeos-Kompos zwar irgend wann installiert gekriegt, aber ich bezweifle, dass ich das nochmal schaffe... :lol:). Eigentlich wäre ich schon zufrieden, wenn ich ein SQL-Kommando absetzen könnte und darauf hin ein String-Array mit dem Ergebnis geliefert bekomme. :)

Die MySQL-Client-Bibliothek (libmysql.dll) stellt schon alles bereit, was man braucht, es ist nur ein Klassenmodell für Delphi nötig, das die Bibliothek (simpel) kapselt. :idea: Hier ist sie also, die Komponente TMySQLConnection, die eben genau das tut: ;)
  • Schlanke Komponente, einfache Funktion/API
  • Kann einfach in die IDE installiert werden -> Komponente auf´s Formular ziehen, Eigenschaften einstellen, fertig
  • Benutzung ohne Installation zur Laufzeit genau so einfach möglich
  • SQL-Anweisungen sind synchron (GUI-blockierend) und asynchron (per VCL-Thread) ausführbar
  • Ergebnis-Mengen sind als Delphi-Objekt gekapselt (automatische Speicherverwaltung)
Im Anhang befindet sich das Archiv mit folgenden Dateien:
  • MySQLcon.pas
    Der Quelltext der Komponente und deren Hilfsklassen
  • MySQLcon.dcr
    Icon für die IDE
  • ExeImageAvail.pas
    Eine Unit-Version dieses FAQ-Beitrags
  • mysql.pas
    Die Delphi-Version der MySQL-Header
  • MySQLdemo.exe
    Demo-Programm, um einen Test ohne Installation der Komponente bzw. Compilieren der Demo-Anwendung machen zu können
  • DemoSource
    Ordner mit den Quelltext-Dateien der Demo-Anwendung
Installationsanleitung (für D7(pro)):
  1. Die drei .pas-Dateien und die .dcr-Datei aus dem Wurzelverzeichnis des Archives in den \lib-Ordner der Delphi-Installation kopieren (normalerweise C:\Programme\Borland\Delphi7\lib)
  2. Delphi-IDE starten, Menü Datei -> Alle schließen anklicken (falls ein Default-Projekt angelegt wurde)
  3. Menü Komponente -> Packages installieren anklicken
  4. Eintrag Borland Anwenderkomponenten auswählen, dann Bearbeiten anklicken, die Frage "Soll dieses Dialogfenster geschlossen und <Pfad>\Lib\dclusr.dpk geöffnet werden?" mit Ja beantworten
  5. Im Fenster des Packages erst den Button Hinzu, dann auf Durchsuchen klicken
  6. Die Datei MySQLcon.pas aus dem \lib-Ordner der Delpih-Installation auswählen und mit Öffnen bestätigen
  7. Dann den Button Compil. im Package-Fenster anklicken, das Packe wird neu übersetzt (evtl. Hinweise entsprechend bestätigen; ggfs. werden zwei Warnungen ausgegeben, dass die beiden zusätzlichen Units implizit mit in das Package aufgenommen wurden, das ist OK so)
  8. Fertig, IDE schließen (Package speichern, falls beim Beenden gefragt)
  9. IDE wieder öffnen, jetzt sollte die neue Komponente im (evtl. neu angelegten) Register MySQL zur Verfügung stehen
Es muss selbstverständlich auch die libmysql.dll in einer möglichst aktuellen Version in einem System-Pfad (im Zweifel nach <WinDir>\System32 kopieren) zur Verfügung stehen. Diese MySQL-Client-Bibliothek kann man aus der aktuellen MySQL-Distribution entnehmen oder z.B. aus dem xampp-Paket.

Zur Verwendung einfach mal in die Demo schauen, da werden sie geholfen. Hier noch ein kurzer Schnipsel, wie das grundsätzlich aussieht:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
  var
    MySQLResult: TMySQLResult;
begin
  MySQLResult := TMySQLResult.Create(MySQLConnection,'SELECT * FROM sometable');
  try
    MySQLResult.Execute;
    MySQLResult.Dump(Memo1.Lines);
  finally
    MySQLResult.Free;
  end;
cu
Narses
Einloggen, um Attachments anzusehen!
_________________
There are 10 types of people - those who understand binary and those who don´t.


Zuletzt bearbeitet von Narses am Fr 08.05.09 18:56, insgesamt 3-mal bearbeitet

Für diesen Beitrag haben gedankt: Dude566, rizla
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 21.04.09 08:21 
Es reicht, wenn die PAS-Dateien im Such+Bibliothekspfad von Delphi auftauchen. \lib im Delphi-Verzeichnis ist eigentlich nur für DCUs gedacht.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 24.04.09 18:51 
Moin!

Da die Frage danach aufkam: Wie kann ich eine Abfrage in einem StringGrid ausgeben? Z.B. so: ;)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.Button1Click(Sender: TObject);
  var
    MSR: TMySQLResult;
    i: Integer;
begin
  MSR := TMySQLResult.Create(MySQLConnection1,'SELECT * FROM sometable');
  try
    MSR.Execute;
    StringGrid1.RowCount := MSR.RowCount;
    StringGrid1.ColCount := MSR.ColCount;
    for i := 0 to MSR.RowCount-1 do
      MSR.FetchRow(StringGrid1.Rows[i+1]); // Offset für fixe Zeile
  finally
    MSR.Free;
  end;
end;
Vorausgesetzt wird natürlich, dass eine DB-Anmeldung vorliegt.

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 03.05.09 00:34 
Moin!

Update auf v1.01, Bugfix und neue Funktionen, Details im Quelltext der Komponente, Download im ersten Beitrag.

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 03.05.09 23:33 
Moin!

Hab vergessen, die MySQLcon.dcr-Datei mit ins Archiv zu tun (enthält das Icon für die IDE)... :oops: Ist jetzt im Archiv enthalten, Installationsanleitung entsprechend geändert. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 08.05.09 18:58 
Moin!

Update auf v1.02, Optimierungen und neue Funktionen (im Wesentlichen im TQueryHelper), Details im Quelltext der Komponente, Download im ersten Beitrag.

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Do 17.02.11 22:31 
Hey, das ist wirklich mal nützlich. ;)

Habe schon die ganze Zeit mal nebenbei überlegt wie ich eine Anwendung erstellen könnte, die dann mit meiner MySQL Datenbank kommunizieren kann. :zustimm:

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
Tankard
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Administrator
Beiträge: 217
Erhaltene Danke: 96



BeitragVerfasst: Fr 18.02.11 04:54 
wo ist denn den problem bei der zeos lib?
ich nutze die eigentlich nur noch, da nicht nur die mysql unterstüzt wird, sondern auch postgres, sqlite, etc...

helfe gern bei problemen.

gruss
tankard