Wie funktioniert der Zugriff auf MySQL-Datenbank ?
-
- Lazarusforum e. V.
- Beiträge: 559
- Registriert: So 10. Sep 2006, 23:24
- OS, Lazarus, FPC: Linux Mint 22; Lazarus 3.4 FPC 3.2.2; RaspiOS
- CPU-Target: AMD 64, ARM 64
- Wohnort: nr Stuttgart
Wie funktioniert der Zugriff auf MySQL-Datenbank ?
Hallo,
ich möchte auf Messdaten zugreifen, die in einer MySQL-Datenbank abgelegt sind. Wie kann ich mit Hilfe von Lazarus auf die Daten zugreifen. Reichen mir die Lazarus-Komponenten TMySQLxxConnection (xx für Version), oder sollte ich mir die ZEOS-Komponenten installieren?
Wo finde ich eine Beschreibung?
Oder hat jemand ein kleines Beispiel-Projekt, oder weis jemand wo ein Beispiel zu finden ist?
Gruß, Linkat
ich möchte auf Messdaten zugreifen, die in einer MySQL-Datenbank abgelegt sind. Wie kann ich mit Hilfe von Lazarus auf die Daten zugreifen. Reichen mir die Lazarus-Komponenten TMySQLxxConnection (xx für Version), oder sollte ich mir die ZEOS-Komponenten installieren?
Wo finde ich eine Beschreibung?
Oder hat jemand ein kleines Beispiel-Projekt, oder weis jemand wo ein Beispiel zu finden ist?
Gruß, Linkat
Re: Wie funktioniert der Zugriff auf MySQL-Datenbank ?
Wie wär's mit dem Lazarus Wiki?Linkat hat geschrieben: Wo finde ich eine Beschreibung?
Oder hat jemand ein kleines Beispiel-Projekt, oder weis jemand wo ein Beispiel zu finden ist?
z.B. hier:
http://wiki.lazarus.freepascal.org/MySQLDatabases/de" onclick="window.open(this.href);return false;
Anmerkung: Die Funktionen "show databases" und "show tables" funktionieren bei mir nicht.
Ich muss die Datenbank und Tabelle in diesem Beispiel also vorgeben.
-
- Lazarusforum e. V.
- Beiträge: 559
- Registriert: So 10. Sep 2006, 23:24
- OS, Lazarus, FPC: Linux Mint 22; Lazarus 3.4 FPC 3.2.2; RaspiOS
- CPU-Target: AMD 64, ARM 64
- Wohnort: nr Stuttgart
Hallo,
nachdem ich mir das DB-Wiki durchgelesen und größten Teils verstanden habe, habe ich versucht das Beispiel nachzuvollziehen.
Die Komponenten TMySQL50Connection, TSQLQuery und TSQLTransaction habe ich auf meine Form gezogen und laut Anweisung miteinander verknüpft.
Nach Start des Programmes wird folgende Fehlermeldung ausgegeben:
(Nebenbei, wie kann man denn ein Bild einfügen? Die Datei SQLFehler.bmp wollte ich eigentlich einfügen.)
Wo liegt das Problem???
Oder wer kann mir ein "funktionierendes Mini-Programm" zum Auslesen von MySQL-Daten zuschicken bzw. hier ins Forum einstellen? Wäre echt toll.
Gruß, Linkat
nachdem ich mir das DB-Wiki durchgelesen und größten Teils verstanden habe, habe ich versucht das Beispiel nachzuvollziehen.
Die Komponenten TMySQL50Connection, TSQLQuery und TSQLTransaction habe ich auf meine Form gezogen und laut Anweisung miteinander verknüpft.
Nach Start des Programmes wird folgende Fehlermeldung ausgegeben:
[img]c:\SQLFehler.bmp[/img]TMySQLxxConnection can not work with the installed MySQL client version (3.23.31).
Press Ok to ignore and risk data corruption.
Press Cancel to kill the program.
(Nebenbei, wie kann man denn ein Bild einfügen? Die Datei SQLFehler.bmp wollte ich eigentlich einfügen.)
Wo liegt das Problem???
Oder wer kann mir ein "funktionierendes Mini-Programm" zum Auslesen von MySQL-Daten zuschicken bzw. hier ins Forum einstellen? Wäre echt toll.
Gruß, Linkat
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
einfach beim bearbeiten des Beitrages unten auf Attachment hinzufügen gehen, Bild auswählen und hochladen[img]c:\SQLFehler.bmp[/img]
(Nebenbei, wie kann man denn ein Bild einfügen? Die Datei SQLFehler.bmp wollte ich eigentlich einfügen.)

Die [img]-Tags dienen ja nur zum verlinken zu einer anderen Bild-URL.
Zum eigentlichen Problem...
TMySQLxxConnection can not work with the installed MySQL client version (3.23.31).
...sagt es eigentlich schon schön. Du hast MySQL in der Version 3.23.31, aber TMySQL50Connection ist für MySQL Version 5 ausgelegt

Ich weiß nicht, ob TMySQL40Connection mit der MySQL Version 3 geht, müsstest du mal probieren, wenn nicht, musst du wohl eine neuere MySQL-Version installieren.
-
- Lazarusforum e. V.
- Beiträge: 559
- Registriert: So 10. Sep 2006, 23:24
- OS, Lazarus, FPC: Linux Mint 22; Lazarus 3.4 FPC 3.2.2; RaspiOS
- CPU-Target: AMD 64, ARM 64
- Wohnort: nr Stuttgart
Hallo Theo,
es dürfte kein MySQL client der Version 3.23.31 auf meinem Rechner sein.
Ich habe mir vor kurzem MySQL 5.0 (File name: mysql-gui-tools-5.0-r6-win32.msi; ca. 18 MB) installiert. Die Daten, auf die ich zugreifen möchte, werden mit MySQL 4.0 (oder 4.1) erstellt. Warum das Programm aber die Version 3.23.31 anmeckert, ist mir nicht verständlich.
Für mich stellt sich eben die Frage ist das irgend ein Versionskonflikt, oder aber mache ich irgend etwas falsch (was wohl am wahrscheinlichsten ist).
@monta
normalerweise kann man mit einer neueren Version (z.B. 5.0) eine ältere Version (z.B. 3.0 oder 4.0) bearbeiten, aber nicht unbedingt mit einer älteren Version eine neuere. Aber ich möchte die Daten nicht verändern, sondern nur lesen und weiter verarbeiten.
Kann man eigentlich auch auf die MySQL-Daten (nur lesend) mit den anderen DB-Komponnenten zugreifen?
Aber das werde ich erst nächste Woche testen könne, jetzt werde ich erst einmal ein paar Tage Hausrenovieren dazwischen schieben müssen.
Gruß, Linkat
es dürfte kein MySQL client der Version 3.23.31 auf meinem Rechner sein.
Ich habe mir vor kurzem MySQL 5.0 (File name: mysql-gui-tools-5.0-r6-win32.msi; ca. 18 MB) installiert. Die Daten, auf die ich zugreifen möchte, werden mit MySQL 4.0 (oder 4.1) erstellt. Warum das Programm aber die Version 3.23.31 anmeckert, ist mir nicht verständlich.
Für mich stellt sich eben die Frage ist das irgend ein Versionskonflikt, oder aber mache ich irgend etwas falsch (was wohl am wahrscheinlichsten ist).
@monta
normalerweise kann man mit einer neueren Version (z.B. 5.0) eine ältere Version (z.B. 3.0 oder 4.0) bearbeiten, aber nicht unbedingt mit einer älteren Version eine neuere. Aber ich möchte die Daten nicht verändern, sondern nur lesen und weiter verarbeiten.
Kann man eigentlich auch auf die MySQL-Daten (nur lesend) mit den anderen DB-Komponnenten zugreifen?
Aber das werde ich erst nächste Woche testen könne, jetzt werde ich erst einmal ein paar Tage Hausrenovieren dazwischen schieben müssen.
Gruß, Linkat
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Es geht hier nicht um Datenversionen das handelt MySQL intern es geht um die schnettstellenevrsionen (die dll) und da geht nichts anderes als das wofür die bindings ausgelegt sind.normalerweise kann man mit einer neueren Version (z.B. 5.0) eine ältere Version (z.B. 3.0 oder 4.0) bearbeiten, aber nicht unbedingt mit einer älteren Version eine neuere. Aber ich möchte die Daten nicht verändern, sondern nur lesen und weiter verarbeiten.
Dein lazarus programm findet nur oder zumindest zuerst eine mysql 3.23 interface dll die schwirrt irgendwo auf deinem system rum.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Lazarusforum e. V.
- Beiträge: 559
- Registriert: So 10. Sep 2006, 23:24
- OS, Lazarus, FPC: Linux Mint 22; Lazarus 3.4 FPC 3.2.2; RaspiOS
- CPU-Target: AMD 64, ARM 64
- Wohnort: nr Stuttgart
Ich habe aber vor der Installation von MySQL 5.0 die mysql**.dll und libmysql**.dll im System32-Ordner gelöscht. Nachdem die erste derartige Fehlermeldung kam, habe ich auch noch die Registry durchforstet, aber nichts vedächtiges gefunden. Wie kann man gegebenenfalls noch so eine vagabuntierende Datei finden?
Gruß, Linkat
Gruß, Linkat
Linux Mint 21.3; Lazarus 3.4 FPC 3.2.2; RaspiOS
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Indem du aklle mysql*.dll dateien suchst und dann in den Eigenschaften die Version anschaust. Villeicht ist der DepencyWalker auch ganz hilfeich weiss nicht genau wie die dll geladen wird wenn sie statisch gelinkt wird zeigt der dir an wo soie ist und was die unter umständen für abhängigkeiten hat.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Lazarusforum e. V.
- Beiträge: 559
- Registriert: So 10. Sep 2006, 23:24
- OS, Lazarus, FPC: Linux Mint 22; Lazarus 3.4 FPC 3.2.2; RaspiOS
- CPU-Target: AMD 64, ARM 64
- Wohnort: nr Stuttgart
Hallo,
habe mit dem "Depency Walker" keine verdächtigen Abhängigkeiten gefunden.
Auf einem "MySql vollkommen unbelasteten" PC habe ich mein Programm laufen lassen. Es kam eine Fehlermeldung, dass er "libmysql.dll" vermisst. Die Datei habe ich dann in den Ordner c:\winnt\System32 kopiert. Erneuter Start des Programms brachte die gleiche Fehlermeldung (s. o.):
[/I]TMySQLxxConnection can not work with the installed MySQL client version (3.23.31). ) gebracht.
Also habe ich die Datei auf meinem Rechner aus dem System32-Ordner entfernt. Siehe da [/U]das Problem war gelöst.
Aber jetzt kommt das nächste Problem. Aus dem Lazarus MySQL-Wiki habe ich versucht das Beispiel nach zu vollziehen.
(Zeile 17 ersetzen durch: SQLQuery1.SQL.Text:='show databases';
Aber folgender Fehler tritt auf:
[/i] Project raised exception class 'EDatabaseError'.
Wer kann weiterhelfen und hat einen Tipp?
Vielen Dank.
Gruß,
Linkat
habe mit dem "Depency Walker" keine verdächtigen Abhängigkeiten gefunden.
Auf einem "MySql vollkommen unbelasteten" PC habe ich mein Programm laufen lassen. Es kam eine Fehlermeldung, dass er "libmysql.dll" vermisst. Die Datei habe ich dann in den Ordner c:\winnt\System32 kopiert. Erneuter Start des Programms brachte die gleiche Fehlermeldung (s. o.):
[/I]TMySQLxxConnection can not work with the installed MySQL client version (3.23.31). ) gebracht.
Also habe ich die Datei auf meinem Rechner aus dem System32-Ordner entfernt. Siehe da [/U]das Problem war gelöst.
Aber jetzt kommt das nächste Problem. Aus dem Lazarus MySQL-Wiki habe ich versucht das Beispiel nach zu vollziehen.
Code: Alles auswählen
procedure TForm1.BtConnectClick(Sender: TObject);
begin
try
if MySQLConnection1.Connected then MySQLConnection1.Close;
StatusBar1.SimpleText:='';
MySQLConnection1.HostName:=HostLabEdit.Text;
MySQLConnection1.UserName:=UserLabEdit.Text;
MySQLConnection1.Password:=PasswdLabEdit.Text;
MySQLConnection1.DataBaseName:='tms';
StatusBar1.SimpleText:='Verbindung zum Server herstellen: '+HostLabEdit.Text;
MySQLConnection1.Open;
if MySQLConnection1.Connected then begin
ShowString('Verbunden mit Server: '+HostLabEdit.Text);
ShowString('Erfassen der Datenbanken');
SQLQuery1.SQL.Text:='SELECT * FROM tms02_units t';
SQLQuery1.Open;
while not SQLQuery1.EOF do begin
ComboBox1.Items.Add(SQLQuery1.Fields[0].AsString);
SQLQuery1.Next;
end; {while}
SQLQuery1.Close;
ShowString('Liste der Datenbanken empfangen');
end; {if}
except
ShowString('Hat wohl nicht geklappt!');
end;
Aber folgender Fehler tritt auf:
[/i] Project raised exception class 'EDatabaseError'.
Wer kann weiterhelfen und hat einen Tipp?
Vielen Dank.
Gruß,
Linkat
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
kann es sein, das bei deinem SQL-Befehl was nicht stimmt? Die Fehlermeldung dürfte dazu passen.
Irgendwie sieht das letzte t mir etwas komisch aus:
SQLQuery1.SQL.Text:='SELECT * FROM tms02_units ?t?';
//sorry, hatte den Satz übersehen, das du es ersetzt hast.
Bis wohin geht den die Stringausgabe? - Sprich geht das Connect?
Irgendwie sieht das letzte t mir etwas komisch aus:
SQLQuery1.SQL.Text:='SELECT * FROM tms02_units ?t?';
//sorry, hatte den Satz übersehen, das du es ersetzt hast.

Bis wohin geht den die Stringausgabe? - Sprich geht das Connect?
Zuletzt geändert von monta am Mo 11. Dez 2006, 20:45, insgesamt 1-mal geändert.
-
- Lazarusforum e. V.
- Beiträge: 559
- Registriert: So 10. Sep 2006, 23:24
- OS, Lazarus, FPC: Linux Mint 22; Lazarus 3.4 FPC 3.2.2; RaspiOS
- CPU-Target: AMD 64, ARM 64
- Wohnort: nr Stuttgart
Hallo monta,
der string in der Variablen SQL.TEXT ist aus dem MySQL-Query Browser kopiert. Da steht das t auch schon drin. Aber ich habe es auch schon ohne t probiert. Geht auch nicht.
Aber eigentlich sollte ja auch, wie in der Programmvorlage, 'show databases' in der Variablen stehen.
Funktioniert aber auch nicht.
Wer weis noch Rat?
Gruß, Linkat
der string in der Variablen SQL.TEXT ist aus dem MySQL-Query Browser kopiert. Da steht das t auch schon drin. Aber ich habe es auch schon ohne t probiert. Geht auch nicht.
Aber eigentlich sollte ja auch, wie in der Programmvorlage, 'show databases' in der Variablen stehen.
Funktioniert aber auch nicht.
Wer weis noch Rat?
Gruß, Linkat
-
- Beiträge: 374
- Registriert: Mi 13. Sep 2006, 15:57
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Hagen a.T.W.
- Kontaktdaten:
Nimm Firebird
Hallo Linkat,
ich hatte mit mysql bisher immer nur Probleme unter Lazarus. Als ich es endlich unter Linux laufen hatte, wurden in der DBGrid nicht alle Felder angezeigt.
Also irgendwo, aber frag mich nicht mehr wo, habe ich gelesen, das zur Zeit noch von dem Einsatz von mysql unter Lazarus abgeraten wird.
Ich habe dann Firebird genommen, tut sich gegenüber mysql von der Leistungsfähigkeit überhaupt nichts, sql ist ja gleich zu handhaben. Alles läuft stabil und wunderbar, unter Windows und unter Linux. Selbst getetest. Jetzt arbeite ich nur noch unter Linux.
Ralli
ich hatte mit mysql bisher immer nur Probleme unter Lazarus. Als ich es endlich unter Linux laufen hatte, wurden in der DBGrid nicht alle Felder angezeigt.
Also irgendwo, aber frag mich nicht mehr wo, habe ich gelesen, das zur Zeit noch von dem Einsatz von mysql unter Lazarus abgeraten wird.
Ich habe dann Firebird genommen, tut sich gegenüber mysql von der Leistungsfähigkeit überhaupt nichts, sql ist ja gleich zu handhaben. Alles läuft stabil und wunderbar, unter Windows und unter Linux. Selbst getetest. Jetzt arbeite ich nur noch unter Linux.
Ralli