Zeos + ADO und der "Connection String"

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
MmVisual
Beiträge: 1445
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Zeos + ADO und der "Connection String"

Beitrag von MmVisual »

Hallo,

Ich bin gerade dabei mit Zeos und ado zu experimentieren. Ich wollte über ado und der DSN Datenquellen vom Betriebssystem auf Datenbanken zugreifen. Ich habe schon viel gegoogelt, aber irgendwie bekomme ich es nicht hin eine Datenbankverbindung auf zu bauen.

Angefangen habe ich mal mit einer MySQL ODBC Verbindung. Da mein Programm bereits direkt mit MySQL zusammen arbeitet bin ich mir sicher dass die SQL Befehle schon mal OK sind.

* Als erstes habe ich die Zeos Komponente 7.2.1-rc in Lazarus 1.6.4 installiert.
* Danach von MySQL den Connector/ODBC V5.3.8 (https://dev.mysql.com/downloads/connector/odbc/)

Zeos konfiguriere ich über die INI-Datei in meinem Programm, bei der ich die Parameter einstellen kann, so sieht das aus wenn ich direkt mich mit dem Server verbinde, das klappt soweit. Die INI Parameter werden zu TZConnection übergeben:
[DB]
Protocol=mysql-5
HostName=192.168.1.11
Port=3306
Database=elela_test
User=mm
Password=****
LibraryLocation=

So weit ich verstanden habe braucht es nur den Parameter "Protocol" und "Database", bei der ado Verbindung habe ich das eingestellt:
[DB]
Protocol=ado
;Database=ODBC;DSN=elela_odbc;DRIVER=;DBQ=.;UID=mm;PWD=****;DOMAIN=;RemoteHost=;RedundantCPU=N;RedundantLAN=N
;Database=ODBC;DSN=elela_odbc;DRIVER=;DBQ=.;SERVER=192.168.81.11;UID=mm;PWD=****;DATABASE=elela_test;
;Database=ODBC;Driver="MySQL ODBC 5.3 ANSI Driver";DSN=elela_odbc;Server=192.168.81.11;Database=elela_test;Uid=mm;Pwd=****;User=mm;Password=****;
;Database=Driver={MySQL ODBC 5.3 Driver};DSN=elela_odbc;Server=192.168.81.11;Database=elela_test;Uid=mm;Pwd=****;User=mm;Password=****;option=3;
Database=DSN=elela_odbc;DRIVER=MySQL ODBC 5.3 Driver;SERVER=192.168.81.11;USER=mm;PASSWORD=****;
HostName=
Port=
User=
Password=
LibraryLocation=

Ich habe schon alles mögliche an Verbindungs Parametern eingestellt, aber ich finde einfach nicht heraus was denn nun als Connection String man da eingeben muss. Ich habe schon beide Variateionen "ANSI" und "UNICODE" probiert, beides geht nicht.

Weiß jemand was ich da schreiben muss?

Als nächstes möchte ich auch die Verbindung mit ado und zu anderen Datenbanken testen, MsSQL, Postgresql. Falls jemand dafür den Connection String schon weiß, bitte mal hier posten.

Die Verbindung im zur DB geht im Connector
Die Verbindung im zur DB geht im Connector

Die installierte ODBC-Treiber
Die installierte ODBC-Treiber


Dankeschön, Grüße Markus.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6200
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Zeos + ADO und der "Connection String"

Beitrag von af0815 »

Grundlegend nur den Trunk aus dem SVN von Zeos für Verbindungen mit ADO zu nehmen.

Code: Alles auswählen

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=x:\Pascal\xxx\ZEOSAccess\DB\test_1.mdb;Persist Security Info=False


Ev. auf Github mal https://github.com/afriess/schnell/tree/wip_af ansehen. Im Metadata habe ich da etwas experimentiert.

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

MmVisual
Beiträge: 1445
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: Zeos + ADO und der "Connection String"

Beitrag von MmVisual »

Wenn ich das so eingebe:

Provider=MySQL ODBC 5.3 Driver;Data Source=elela_odbc

kommt "Der Provider kann nicht gefunden werden. Möglicherweise ist er nicht richtig installiert worden."
EleLa - Elektronik Lagerverwaltung - www.elela.de

TraumTaenzerDieter
Beiträge: 28
Registriert: So 14. Aug 2011, 09:11

Re: Zeos + ADO und der "Connection String"

Beitrag von TraumTaenzerDieter »

So sah mein ConnectionString für ODBC aus

{MySQL ODBC 5.3 Driver};Server=ServerName;Port=3306;Database=Dein_DbName;User=Dein_DbUser;Password=Dein_Password;OPTION=4194307

Allerdings greife ich lieber direkt (libMySql.dll) per Zeos-MySql zu (da m.E. schneller).

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6200
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Zeos + ADO und der "Connection String"

Beitrag von af0815 »

Kanst du mit der ODBC Datenquellenverwaltung einen Datei oder SystemDSN erstellen der funktioniert ?

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

MmVisual
Beiträge: 1445
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: Zeos + ADO und der "Connection String"

Beitrag von MmVisual »

Dankeschön!

Ich denke ich bin ein schönes Stück weiter gekommen.

Code: Alles auswählen

TZConnection.Catalog := ''; // << muss leer sein, sonst geht es nicht!
TZConnection.Protocol := 'ado';
TZConnection.Database := 'DSN=elela_test'; // Und diese DSN Verbindung ist in der Systemsteuerung angelegt


Ich habe ein 64 Bit Windows und den 64 Bit MySQL Connector installiert und meine EXE mit 32 Bit Lazarus übersetzt. Ergebnis Fehlermeldung:
[Microsoft][ODBC Driver Manager] Der angegebene DSN weist eine nicht übereinstimmende Architektur von Treiber und Anwendung auf.

Diese DSN funktioniert auch:
DRIVER={MySQL ODBC 5.3 Unicode Driver};SERVER=192.168.81.11;PORT=3306;USER=mm;PASSWORD=****;DATABASE=elela_test;option=4194307

Mit 64 Bit Lazarus übersetzt funktioniert die EXE, so lange Daten gelesen werden :D

Ein neuer Datensatz und Post zeigt noch ein Fehler:
[MySQL][ODBC 5.3(w) Driver][mysqld-5.5.54-MariaDB]You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '[bauteil] (tree_typ_ID,Foto_ID,Bezeichnung,Beschreibung,Handbuch,Library,Kennz,I' at line 1

Da suche ich morgen weiter.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Antworten