Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi und MariaDB aus dem XAMPP-Paket (https://www.delphipraxis.net/199653-delphi-und-mariadb-aus-dem-xampp-paket.html)

MarsdeBu 8. Feb 2019 18:43

Datenbank: MariaDB • Version: 10.1.16 • Zugriff über: TSQLConnection

Delphi und MariaDB aus dem XAMPP-Paket
 
Hallo, ich möchte auf die mit php geschriebene Datenbank aus dem XAMPP-Paket zugreifen.
Das BS ist Windows 10 64 bit, das XAMPP und die DB sowie Delphi sind 32 bit.

Über ODBC und BDE habe ich die Verbindung schnell hinbekommen. Nun habe ich mir Delphi 10.3 geholt (BDE muß man nachinstallieren, und dann über Komponente|Packages installieren die dclbde240.bpl eintragen) und möchte das auf SQLConnection - die ja eigentlich für SQL-DB zuständig ist, umstellen. Allerdings bekomme ich nur die Meldung

DBX-Fehler: Der Treiber konnte nicht korrekt initialisiert werden. usf.

Die DB liegt auf einer anderen Partition in T:\xampp\mysql\bin ; die ODBC-Treiber und Connectoren habe ich extra geholt, und sie haben sich in "C:\Program Files (x86)\MariaDB\MariaDB Connector C\lib\libmariadb.dll" installiert. Die Bibliothek heißt also libmariadb.dll und nicht libmysql.dll.
Nach etwas Suchen habe ich den Daten-Explorer gefunden; er startet nicht wie angegeben durch Doppelclick auf die SQLConnection, sondern über Ansicht|Tool-Fenster->Daten-Explorer, oder indem man unten im Projekt-Fenster "Daten-Explorer" auswählt. Durch Rechtsclick auf SQL kann man eine neue Verbindung eintragen und durch Rechtsclick darauf diese Ändern.

Nun auf Erweitert clicken und in den Einträgen der Verbindung die libmysql.dll durch libmariadb.dll ersetzen.

Der Connector hat im Pfad "C:\Program Files (x86)\MariaDB\MariaDB Connector C\lib\" (und weiteres) eingetragen, und außerdem habe ich diese ins Programmverzeichnis kopiert und dort nochmal als libmysql.dll kopiert.

Leider läuft das nicht - im Verbindungs-Editor ist eine Funktion "Verbindung testen" und die gibt o.g. Fehlermeldung.

Der Verbindungsstring ist
DriverName=MySQL;DriverUnit=Data.DBXMySQL;DriverPa ckageLoader=TDBXDynalinkDriverLoader,DbxCommonDriv er260.bpl;DriverAssemblyLoader=Borland.Data.TDBXDy nalinkDriverLoader,Borland.Data.DbxCommonDriver,Ve rsion=24.0.0.0,Culture=neutral,PublicKeyToken=91d6 2ebb5b0d1b1b;MetaDataPackageLoader=TDBXMySqlMetaDa taCommandFactory,DbxMySQLDriver260.bpl;MetaDataAss emblyLoader=Borland.Data.TDBXMySqlMetaDataCommandF actory,Borland.Data.DbxMySQLDriver,Version=24.0.0. 0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b; LibraryName=dbxmys.dll;LibraryNameOsx=libsqlmys.dy lib;VendorLib=libmariadb.dll;VendorLibWin64=libmar iadb.dll;VendorLibOsx=mariadbclient.lib;Database=m s_adr;User_Name=root;MaxBlobSize=-1;LocaleCode=0000;Compressed=False;Encrypted=False ;BlobSize=-1;ErrorResourceFile=

Vielleicht weißjemand ... ?

Grüße, MarsdeBu

Redeemer 8. Feb 2019 19:05

AW: Delphi und MariaDB aus dem XAMPP-Paket
 
Was sagt ODBCAD32 zu dem Treiber?

(Anmerkung: Die standardmäßig aufgerufene odbcad32 in system32 ist, wie der Name schon sagt, die 64-Bit-Version, während die 32-Bit-Version in SysWOW64 liegt.)

stifflersmom 8. Feb 2019 19:13

AW: Delphi und MariaDB aus dem XAMPP-Paket
 
Zitat:

Zitat von Redeemer (Beitrag 1425118)
Was sagt ODBCAD32 zu dem Treiber?

(... odbcad32 in system32 ist, wie der Name schon sagt, die 64-Bit-Version,...)

Also, mir hätte das der Name nicht gesagt

Bernhard Geyer 9. Feb 2019 09:48

AW: Delphi und MariaDB aus dem XAMPP-Paket
 
SysWOW64 = 32-Bit
System32 = 64-Bit

Das war ein Glanzleistung von MS, wie man zu dieser Schlüssigen Namensgebung gekommen ist.
Ich vermute der Entscheider für die Namensgebung hängt bei MS in der "Hall of Fame"

MarsdeBu 9. Feb 2019 19:40

AW: Delphi und MariaDB aus dem XAMPP-Paket
 
Die Festlegung de Namens ist schon einige Jahre her, siehe
"18 Milliarden Gigabyte ...oder: Wer braucht 64 Bit? c't 13/2001 142"
Damals schien es einfach, die 64-bit-Systemdateien in Sys32 zu lassen und für die 32-bit-Dateien das Verzeichnis SysWoW64 einzuführen. Heute ist das verwirrend, man muß um die Ecke denken. Das muß man in anderen Fachrichtungen auch, aber erst, wenn es viiiel länger her ist.

Unter Win_7 war ich nach den Clicken der ODBC-Verwaltung verwundert, daß dort keine Treiber eingetragen sind, und dadurch bin ich dahinter gekommen, daß das die 64-bit-Verwaltung ist, und habe die 32-bit-Verwaltung nachträglich ins Menü eingetragen. Unter Win10 allerdings sind beide Verwaltungen im Menü unter Windows-Verwaltungsprogramme vorhanden.
Mir gefällt das lange Menü überhaupt nicht, mal sehn, wann ich ...

Da das mit der ODBC-Datenquelle funktioniert, ist klar, daß das der richtige Treiber ist.

Guido R. 10. Feb 2019 18:31

AW: Delphi und MariaDB aus dem XAMPP-Paket
 
Bist Du bei Deiner Entwicklung an tSQLConnection gebunden?

Auf eine Datenbank mittels DLLs und ODBC zuzugreifen macht, meiner Erfahrung nach, immer wieder Probleme.
Wenn Du FireDAC verwendest, brauchst Du nur die lib, bei MyDAC kannst Du selbst darauf verzichten.

MarsdeBu 14. Feb 2019 18:29

AW: Delphi und MariaDB aus dem XAMPP-Paket
 
Ich schaue erstmal ob das funktioniert. Mit ODBC ging das ganz gut, ich könnte auch damit weitermachen. Was unter ODBC nicht funktioniert hat, ist stmtParams.CreateParam(ftString, ***); aber mit Integer geht es. Nun hätte mich interessiert, ob das am ODBC liegt oder ob die MariaDB das nicht kann.
In der Doku steht "Mit dbExpress können Sie eine Verbindung zu InterBase-, Oracle-, MS SQL-, Informix-, DB2-, Sybase- und MySQL-Datenbanken herstellen." Bisher hat aber noch keiner geschrieben, daß das funzt. Wie sieht es mit den anderen DBs aus, kann dbExpress die oder ist das generell buggy? Eigentlich sollten die das doch austesten, bevor ...

Grüße, M.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz