![]() |
Mit Delphi Programm mit einem PostgreSQL Server verbinden
Hallo an alle interessierten da draussen!
Ich habe eine Frage zum Thema Datenbanken unter Delphi: Wie kann ich mich mittels eines Delphi Programms mit einem PostgreSQL Server verbinden und an diesen beispielsweise einfache SQL Abfragen schicken? Wie muss ich welche Treiber (ODBC,...) wo installieren. Hat irgendwer passende Komponenten dafür? Danke im Vorraus für alle Antworten |
Zeos Libarie
Moin, moin,
Deine Konstellation ist wahrscheinlich Unix-Rechner mit PosGreSQL und Windows-Rechner mit Delphi Proggramm un die sind über TCP/IP irgendwie in Verbindung. Dafür kannst Du gut die ZEOS-Libarie einsetzen. Wobei ich empfehlen würde zunächst auf dem Windows-Rechner mal MySQL zu installieren und zunächst damit zu experimentieren. Dann braucht man später nur die MySQL- komponenten durch die PostGre-Komponenten zu ersetzen. Etwas Einarbeitungszeit ist da allerdings fällig. Aber PostGre mach eh kein Hobbieprogrammierer, so dass wohl nicht das Problem sein sollte. Hier der Link zur Quelle ![]() Grüße // Martin |
Danke, ich hab dank dir genau das gefunden, was ich gesucht habe. Ich hatte zwar in der Zwischenzeit auch schon ne andere Lösung hinbekommen, aber dann muss man auf allen Clients natürlich die BDE Verwaltung von Delphi installieren, was natürlich viel zu umständlich ist.
Nochmals vielen dank für die äusserst hilfreiche Antwort!!! |
Nett zu hören
Moin,
habe auch den Eindruck, das Zeos recht stabil läuft. Lass die Finger von BDE wenn irgend möglich. Solange die Projekte wenig Tabellen oder nur simple SQL haben ist das alles bestens, aber irgendwann kommt die Zeit der 210d und 2108 Fehlermeldungen aus den tiefen der BDE- Speicherverwaltung. Die sind wohl auch der Grund warum Borland die BDE nicht weiterentwicklet hat. Sonst viel Erfolg // Martin |
Liste der Anhänge anzeigen (Anzahl: 1)
Also wie f.stendike hab ich die ganze sache mit BDE auch hinbekommen. Kann mir mal einer erklären wie das mit den ZEOS-Komponenten funktioniert? Oder mal nen Sourcecode posten als Beispiel wie ich das genau mache?
Ich bekomme unter anderem den Fehler der in dem Screenshot den ich angehängt hab zu sehen ist! |
SELECT Abfragen
Also:
Bei mir funzt nun alles wunderbar - mal abgesehen davon, dass man den Server von diesen Zeos Komponenten vergessen kann - Ich habe allerdings noch ein anderes Problem: Mit der Komponente TZPgSqlQuery kann man ja nur Transaktionen durchführen, die keinen Wert zurückliefern wie INSERT, DELETE, usw. das funktioniert auch wunderbar. Aber wie kann ich eine SELECT Anweisung richtig durchführen? Das ich das mit der TZPgSqlTable Komponente machen muss indem ich TableName einen Wert zuweise ist schon klar. Aber wie bekomme ich dann die Daten wieder ausgelesen aus dieser Komponente? Bisher hatte ich das mit der BDE Lösung mittels eines DataSource Elements und eines Cursors gemacht, aber das funktioniert hierbei nicht, weil ich den Cursor beider SELECT Abfrage ja nicht mit angeben kann. |
PG-Query
Moin, moin,
Also mit der Query kann man auch eine laufende verbindung über SELECT aufbauen. Um das gane etwas zu vereinfachen. Es gibt in dem ZEOS Zip ein Verzeichnis Examples. Darin gibt es ein Beispielprogramm mit Namen Simple Mysql. Hier würde ich einfach die Mysql Komponenten durch die PG-Komponenten ersetzen. Das sollte helfen... etwas überarbeitete Grüße aus dem Norden // Martin |
Danke für den Tip, das habe ich auch schon versucht. Es kommt dann aber zu Fehlermeldungen weil er erstens irgendwelche Klassen der MySQL Komponenten nicht findet, obwohl ich diese installiert habe. Dann sind die Komponenten auf dem Beispielformular erst gar nicht drauf. Ersetze ich die nicht vorhandenen Komponenten dann mit denen von Postgres kommt es zu irgendwelchen Fehlren bei der Laufzeit - irgendwelche Exceptions oder ähnliches, weil die Komponenten ja nicht 100%ig gleich sind.
Hab auch noch was anderes ausprobiert: wenn ich anstatt query1.execsql query1.open aufrufe, erscheint im meinem DBGrid ein leeres Feld, aber ohne Daten darin. Muss ich nun für eine SELECT Abfrage query1.execsql oder query1.open ausführen? query1.open ist in der spärlichen Dokumentaton dieser Komonenten leider nicht aufgeführt. Und gibt es denn nicht sowas wie nen Cursor in der query Komponente von Zeos? |
Zeos -Query
Moin,
erstmal sorry für die Zeitverzögerung, aber leider geht mein Aussendienst derzeit vor und da bleibt für Winternet nun mal weniger zeit. Zur Query-Komponente: 1. Die Selectanweisung steht in der Eigenschaft SQL der Query-Komponente 2. Datasbase ist mit der Databasekomponente verbunden 3. Databasekomponente hat eine Verbindung zum Server Connected = true) Die SQL-Anweisung wird mit Query.open zum Server geschickt Die Ergebnismenge geht an die Query zurück und wenn auf dem Formular z.B. ein Grid liegt, das mit einer Datasourcekomponente verbunden ist und die Datasourcekomponente die Query eingetragen, dann geht die Ergebnismenge weiter an das Grid. Bei den Beispielprogrammen gibt es auch noch ein Alldb-Beispiel das sollte für MySQL und Postgre laufen. Hat Deine PostGre eigentlich Internetanschluß oder ist das ein Intranet (reine Neugier) Grüße // Martin |
Thanks @ all!
Danke an alle für eure Antworten, heute haben sich alle Probleme von selber gelöst. @mschaefer: Es handelt sich um ein firmeninternes Intranet |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz