ODBC-Zugriff über ADO auf PostgreSQL :
(Autor : Musashi - 29.11.2018)
Es wird vorausgesetzt, dass eine PostgreSQL-Datenbank ab min. Version 9.0 installiert ist.
Rechtlicher Hinweis (muss leider sein) :
Betreibt jemand auf seinem PC ein Produktivsystem mit PostgreSQL, dann sollte er von den weiteren Schritten ggf. absehen. Ich übernehme keine Verantwortung für jedwede Schäden, die durch dieses Tutorial entstehen können.
Kurz gesagt : Die Verwendung erfolgt auf eigenes Risiko !
Zum Thema :
1. Download und Installation des ODBC-Treibers :
Falls nicht bereits geschehen, muss zusätzlich ein offizieller psqlODBC-Treiber von :
https://www.postgresql.org/ftp/odbc/versions/msi/
heruntergeladen und installiert werden.
Beispiel :
Zu der Version PostgreSQL 9.6 wäre das aktuell :
- psqlodbc_09_06_0500.zip (Komplettpaket - enthält die 32-Bit und 64-Bit Variante)
Wer nur eine der Bit-Versionen benötigt, verwendet :
- psqlodbc_09_06_0500-x86.zip (32-Bit) bzw. psqlodbc_09_06_0500-x64.zip (64-Bit)
Lt. PostgreSQL-Website kann man die aktuellste Treiberversion nehmen.
Ob damit die aktuellste Version passend zu PostgreSQL-Versionsnummer gemeint ist, oder die aktuellste Treiberversion im Allgemeinen, wird nicht eindeutig beschrieben.
Ich empfehle die Verwendung des Komplettpaketes, also die 32-Bit und 64-Bit Variante.
Auf einem 32-Bit System wird der 64-Bit ODBC-Treiber eh nicht mitinstalliert.
Auf einem 64-Bit System benötigt man aber ggf. auch den 32-Bit ODBC-Treiber, falls die aufrufende Software eine 32-Bit-Anwendung ist.
Nach dem Entpacken der Zip erhält man die Datei psqlodbc-setup.exe. Installieren -> fertig !
Hinweis :
Beim EnterpriseDB-Installer für PostgreSQL wird die ODBC-Treiberinstallation im optionalen 'Stackbuilder-Bereich' durchgeführt. Da neben ODBC dann aber auch andere, für viele unnötige bzw. kommerzielle Komponenten wie PostgreSQLPlus mitinstalliert werden, ist der o.a. Installationsweg vorzuziehen !
2. Datenbankzugriff :
Um einen ADO Zugriff über ODBC zu machen, kann man das u.a. Skript verwenden.
- eine PostgreSQL-Datenbank muss, wie gesagt, installiert sein
- ebenso muss eine mit Daten gefüllteTabelle für die SQL-Abfrage existieren
Der Zugriff erfolgt nur lesend, sollte also unkritisch sein.
Das nachfolgende Skript ist in der vorliegenden Form allerdings so noch nicht lauffähig.
Grund dafür ist, dass ich mein Passwort und Usernamen entfernt habe.
Zudem kenne ich euren Datenbanknamen und die Tabellendefinitionen natürlich nicht .
Es ist aber kein Problem, diese Daten einzutragen. Dazu muss lediglich :
1. im ConnectionString (DNS-less) :
---> DATABASE=xxx ; Name der Datenbank
---> UID=xxx ; PostgreSQL-Username (nicht der Windowsuser eines Dienstes)
---> Pwd=xxx ; Datenbank Passwort
besetzt werden (xxx mit den eigenen Daten füllen)
2. in der Zeile $sSQLCommand = ... ein gültiges SQL-Statement einfügt werden
---> Beispiel : "SELECT * FROM Tabellenname ORDER BY Tabellenfeld"
Offenbar stehen momentan nur 10000 Zeichen pro Beitrag zur Verfügung. Ich verschiebe das Listing daher in Beitrag #2.
Weitere Fragen können gerne hier im Thread gestellt werden.
Gruß Musashi