[gelöst] Zugriff auf MySQL-DB meines Providers

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 994
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 20 , FPC 3.3.1 , Lazarus 2.1.0 -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

[gelöst] Zugriff auf MySQL-DB meines Providers

Beitrag von kralle »

OS: Manjaro 6.3.3.1
Lazarus: 2.3.0

Moin,

ich möchte mittels kleiner Lazarus-App auf die MySQL-Datenbank (MySQL 5.7) meines Providers (Alfahosting) zugreifen.
Ich habe die Komponenten laut https://wiki.freepascal.org/SQLdb_Tutorial1 installiert,
nur anstatt

Code: Alles auswählen

TIBConnection
habe ich

Code: Alles auswählen

TSQLConnector
genutzt.

Im

Code: Alles auswählen

TSQLConnector
habe ich bei "ConnectorType" "MySQL 5.7" ausgewählt.
Wenn ich jetzt "Connet" auf "true" schalte, um zu sehen ob alles funktioniert, bekomme ich diese Fehlermeldung:
TMySQL57Connection can not work with the installed MySQL client version: Expected (5.7), got (3.3.4).

:?: :?: :?:

Das bedeuten ja, dass mein Provider zwar angibt 5.7, als Version aber 3.34 zurück gibt.
Oder verstehe ich das jetzt falsch?

Gruß Heiko
Zuletzt geändert von kralle am So 21. Mai 2023, 15:26, insgesamt 1-mal geändert.
OS: Manjaro Linux, Debian und Windows 10
FPC-Version: 3.2.2 , Lazarus 3.0
+ Delphi XE7SP1

Benutzeravatar
theo
Beiträge: 10500
Registriert: Mo 11. Sep 2006, 19:01

Re: Zugriff auf MySQL-DB meines Providers

Beitrag von theo »

Hat der Provider die Firewall für MySQL offen? (Port 3306)
Würde mich echt wundern.

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 994
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 20 , FPC 3.3.1 , Lazarus 2.1.0 -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Zugriff auf MySQL-DB meines Providers

Beitrag von kralle »

Laut dem Webinterface, ist der Port 3306 zu nutzen.

Gruß Heiko
OS: Manjaro Linux, Debian und Windows 10
FPC-Version: 3.2.2 , Lazarus 3.0
+ Delphi XE7SP1

Benutzeravatar
theo
Beiträge: 10500
Registriert: Mo 11. Sep 2006, 19:01

Re: Zugriff auf MySQL-DB meines Providers

Beitrag von theo »

Also die Fehlermeldung besagt ja, dass du lokal die falsche client version hast.

Was sagt:

Code: Alles auswählen

mysql --version
auf deinem Rechner?

Bin wirklich kein Experte dafür.

charlytango
Beiträge: 845
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: Zugriff auf MySQL-DB meines Providers

Beitrag von charlytango »

kralle hat geschrieben:
Sa 20. Mai 2023, 18:38
Das bedeuten ja, dass mein Provider zwar angibt 5.7, als Version aber 3.34 zurück gibt.
Ja das kann sein... oder auch nicht, denn soweit ich mich erinnere hatte ich mal Probleme mit TSQLConnector und dessen Versionserkennung.

An sich sollte IMHO TSQLConnector sich selbst den richtigen Connector raussuchen. Dazu sollten die verfügbaren Konnektoren in der Uses-Clausel zu finden sein.
Dann macht er das in gewissem Rahmen selber.

Code: Alles auswählen

uses .....
  //if you want to reduce the connection possibilities beside SQLite
  //just comment the affected lines
  , SQLite3Conn
  ,pqconnection     //PostgreSQ
  ,ibconnection     //Interbase ,Firebird
  ,mssqlconn        //MSSQL Server , Sybase
  ,oracleconnection //Oracle
  ,odbcconn         //ODBC Access
  ,mysql40conn      //different MySQL Versions as well as MariaDB
  ,mysql41conn
  ,mysql50conn
  ,mysql51conn
  ,mysql55conn
  ,mysql56conn
  ,mysql57conn
  ,mysql80conn 
und eine aktuelle Zugriffsbibliothek hilft auch soweit ich mich erinnern kann.

gelöst hab ich das damals mit Austesten verschiedener Versionen der Zugriffsbibliotheken und unterschiedlichen Versionseinstellungen im TSQLConnector.

BTW: Wenn ein Provider seine Datenbank direkt ins Internet aufmacht wäre das schon sehr ungewöhnlich.

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 994
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 20 , FPC 3.3.1 , Lazarus 2.1.0 -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Zugriff auf MySQL-DB meines Providers

Beitrag von kralle »

Moin,

nachdem ich erst Kodi deinstalliert habe, konnte ich auch den passenden SQL-Client installieren.
Nach dem ich dann von meinem Provider auch noch den richtigen Pfad und die in CloudPit einzustellenden Werte bekam,
wird jetzt zumindest eine Verbindung zur Datenbank aufgebaut.

Wie kann ich jetzt eine ganz bestimmte Tabelle im Grid anzeigen lassen?
Bestimmt muss ich dazu in einem der Objekte via Objektinspektor die Werte eintragen oder irgendwo im Quellcode definieren, aber wo?

Gruß Heiko
OS: Manjaro Linux, Debian und Windows 10
FPC-Version: 3.2.2 , Lazarus 3.0
+ Delphi XE7SP1

charlytango
Beiträge: 845
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: Zugriff auf MySQL-DB meines Providers

Beitrag von charlytango »

Pseudocode ausgehend von deinem TSQLConnector:

Code: Alles auswählen

TSQLTransaction.Database:=TSQLConnector
TSQLQuery.Database:=TSQLConnector
TDatasource.DataSet:=TSQLQuery
TDBGrid.DataSource:=TDataSource
Einzelne Komponenten aufs Formular oder Datenmodul kleben und per GUI verbinden. Später ist ein Datenmodul sinnvoll (am besten im Code erstellt) oder ein anderes SQL Zugriffsmodul (siehe unten).

Windows: Wenn die verwendete Zugriffs-DLL auch im Lazarus EXE Verzeichnis liegt kann die GUI auch Daten anzeigen.
Linux: keine Ahnung ob die Zugriffsbibliotheken systemweit gelten.

Code: Alles auswählen

TSQLConnector.Open;

TSQLQuery.SQL.Clear;
TSQLQuery.SQL.Append('SELECT name, vorname FROM tkunden');
TSQLQuery.Open; //Open nur dann wenn Daten zurück kommen 
//sonst ExecSQL oder ExecuteDirect im TSQLConnector

Meine Strategie für Datenmodule ist hier

Guckst du hier! oder auch hier

Im YT Video einfach statt der TIBConnection einen TSQLConnector denken.

Ein ziemlich fertiges (!) SQL Zugriffsmodul findest du hier
Zuletzt geändert von charlytango am So 21. Mai 2023, 11:23, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10500
Registriert: Mo 11. Sep 2006, 19:01

Re: Zugriff auf MySQL-DB meines Providers

Beitrag von theo »

kralle hat geschrieben:
So 21. Mai 2023, 08:27
Wie kann ich jetzt eine ganz bestimmte Tabelle im Grid anzeigen lassen?
Bestimmt muss ich dazu in einem der Objekte via Objektinspektor die Werte eintragen oder irgendwo im Quellcode definieren, aber wo?
Charlytango berät dich sicher gut, aber wenn ich das richtig interpretiere, ist das das deine erste Begegnung mit SqlDB.
Möchtest du das nicht lieber erst einmal lokal üben?
Der entfernte Server macht die Sache ja nicht gerade übersichtlicher.
Hast du dort überhaupt alle notwendigen Rechte?

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 994
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 20 , FPC 3.3.1 , Lazarus 2.1.0 -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Zugriff auf MySQL-DB meines Providers

Beitrag von kralle »

Moin,
theo hat geschrieben:
So 21. Mai 2023, 11:02
Der entfernte Server macht die Sache ja nicht gerade übersichtlicher.
Hast du dort überhaupt alle notwendigen Rechte?
Ja. Die Verbindung funktioniert auch. Ich muss jetzt quasi nur noch der SQL-Datenbank mitteilen, das ich im Grid eine ganz bestimmte Tabelle angezeigt bekommen möchte.
Also, wahrscheinlich irgendwelche SQL-Befehle die ich irgendwo eintragen muss.

Die ganz Anwendung brauche ich wenn alles gut geht, nur einmal.

Gruß Heiko
OS: Manjaro Linux, Debian und Windows 10
FPC-Version: 3.2.2 , Lazarus 3.0
+ Delphi XE7SP1

Benutzeravatar
theo
Beiträge: 10500
Registriert: Mo 11. Sep 2006, 19:01

Re: Zugriff auf MySQL-DB meines Providers

Beitrag von theo »

kralle hat geschrieben:
So 21. Mai 2023, 11:22
Ja. Die Verbindung funktioniert auch. Ich muss jetzt quasi nur noch der SQL-Datenbank mitteilen, das ich im Grid eine ganz bestimmte Tabelle angezeigt bekommen möchte.
Also, wahrscheinlich irgendwelche SQL-Befehle die ich irgendwo eintragen muss.

Die ganz Anwendung brauche ich wenn alles gut geht, nur einmal.
Dann würde ich gar nichts programmieren.
Kompiliere einfach "lazarus/tools/lazdatadesktop/" und trage dort die Daten ein.
Auch wenn du das anders haben möchtest, ist der "lazdatadesktop" bestimmt schon mal gut, um die Verbindung/Abfrage zu testen.
Dateianhänge
datadesk.png
datadesk.png (97.42 KiB) 5361 mal betrachtet

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 994
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 20 , FPC 3.3.1 , Lazarus 2.1.0 -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Zugriff auf MySQL-DB meines Providers

Beitrag von kralle »

Moin,
theo hat geschrieben:
So 21. Mai 2023, 12:09
Kompiliere einfach "lazarus/tools/lazdatadesktop/" und trage dort die Daten ein.
Auch wenn du das anders haben möchtest, ist der "lazdatadesktop" bestimmt schon mal gut, um die Verbindung/Abfrage zu testen.
Gilt das hier:

Code: Alles auswählen

Re: lazdata Desktop

Beitrag von wp_xyz » Sa 5. Nov 2016, 22:52
Du musst das Projekt lazdatadesktop.lpi in Lazarus laden und selbst kompilieren. Dabei werden allerdings die Packages DBFLaz, lazdatadict, lazdbexport, RunTimeTypeInfoControls, SQLDBLaz benötigt - vielleicht sind sie bei dir nicht installiert. Gehe zu "Package" / "Installierte Packages einrichten". In der rechten Liste findest du alle Packages, die Lazarus bekannt sind, in der linken diejenigen, die bereits installiert sind. Prüfe, ob die genannten Packages in der linken Liste aufgeführt sind. Falls eins fehlt, müsste es in der rechten Liste enthalten sind. Auswählen und auf "Auswahl installieren" klicken. Wiederholen, bis alle genannten Packages in der linken Liste enthalten ist. Zum Schluss "Speichern und IDE rekompilieren" klicken. Damit wird die IDE mit den neuen Packages neu gebaut - dauert ein bisschen. Wenn alles fertig ist, wird Lazarus neu gestartet. Dann solltest du in der Lage sein, lazdatadesktop übersetzen zu können.
Nach oben

immer noch?

Gruß Heiko
OS: Manjaro Linux, Debian und Windows 10
FPC-Version: 3.2.2 , Lazarus 3.0
+ Delphi XE7SP1

wp_xyz
Beiträge: 4895
Registriert: Fr 8. Apr 2011, 09:01

Re: Zugriff auf MySQL-DB meines Providers

Beitrag von wp_xyz »

Was spricht dagegen, es einfach auszuprobieren? Habe das gerade mit meinem (kaum genutzen) Laz 2.2.6 getan, und der LazDataDesktop ist ohne Probleme kompiliert worden. Die in dem Zitat erwähnten Packages sind normalerweise standardmäßig vorhanden.

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 994
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 20 , FPC 3.3.1 , Lazarus 2.1.0 -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Zugriff auf MySQL-DB meines Providers

Beitrag von kralle »

Moin,

nicht alles war schon eingebunden, aber Danke jetzt steht die Verbindung und ich kann die Daten der Datenbank sehen.
Damit weiß ich das die Verbindung steht.
Jetzt muss ich nur noch dafür sorgen, das der Inhalt der Tabelle "jos311_jdownloads_files_backup_3_2_69"
in meinem

Code: Alles auswählen

TDBGrid
angezeigt wird, denn mit den Daten kann ich dann weiterarbeiten.

Gruß Heiko
OS: Manjaro Linux, Debian und Windows 10
FPC-Version: 3.2.2 , Lazarus 3.0
+ Delphi XE7SP1

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 994
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 20 , FPC 3.3.1 , Lazarus 2.1.0 -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Zugriff auf MySQL-DB meines Providers

Beitrag von kralle »

Moin,

ich musste nur noch in der Stringlist der Eigenschaft von "SQL" des

Code: Alles auswählen

SQLQuery
den SQL-Befehl

Code: Alles auswählen

SELECT * From Tabellenname;
eingeben und es funktionierte.
Dann noch im

Code: Alles auswählen

DBGrid
die Optionen "dgDisplayMemoText" und "dgAutoZiseColumns" auf True und ich bekomme alles angezeigt.

Danke für Eure Hilfe
Heiko
OS: Manjaro Linux, Debian und Windows 10
FPC-Version: 3.2.2 , Lazarus 3.0
+ Delphi XE7SP1

Antworten