PostgreSQL-Treiber: Fehler bei Datenbankverbindung

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: PostgreSQL-Treiber: Fehler bei Datenbankverbindung

Re: PostgreSQL-Treiber: Fehler bei Datenbankverbindung

von ejomi » Mo, 16.05.2011 13:46

Problem gelöst - Ursache: reine Dämlichkeit meinerseits!

Nachdem ich meine Frage abgesendet hatte fiel mir der Feher auf:
Es gibt nämlich 2 ähnlich klingende Funktionen mit unterschiedlichen
Parameter-Erwartungen: "getConnectionWithInfo" und einfach nur
"getConnection" (aus Bequemlichkeit hatte ich einfach immer wieder
die 1. Funktionsart kopiert und nur damit herumexperimentiert).

Im Einzelnen:

Die Funktion "getConnectionWithInfo" erwartet 2 Parameter,
wobei eben genau (wie ich es schon beobachtet hatte)
im 1. Parameter die Host-Verbindungsdaten in der Form
"sdbc:subprotocol:subname" stehen müssen und im 2. Paramter
als PropertyValue-Liste alle weiteren, ergänzenden Anmeldedaten.

Dagegen reicht bei der Funktion "getConnection" 1 Parameter,
der sämtliche Verbindungsdaten als String enthalten kann, also z.B.
"sdbc:postgresql:host=MYSERVER port=5432 dbname=MYBASE user=MYNAME password=MYPASS".

Details nachzulesen unter.
http://api.openoffice.org/docs/common/r ... nager.html

Also - keine Aufregung - und vielen Dank für Euer Interesse!
ejomi

PostgreSQL-Treiber: Fehler bei Datenbankverbindung

von ejomi » Mo, 16.05.2011 13:01

Betrifft: postgresql-sdbc-driver 0.7.6b (released 2010-08-12) für Windows,
OO-Basic unter OpenOffice.org V.3, BASE.

Kennt jemand die nachfolgend beschriebenen Probleme?
Ich habe dazu zwar ein workaround (siehe 3. Beispiel),
vielleicht mache ich aber auch nur eine Riesen-Fehler.
Kenn jemand eine "korrekte" Lösung??

Zur Klarstellung: Die manuell eingerichtete Verbindung von BASE zum Server
über die Datenbankeingenschaften mit Datenbanktyp "postgresql", Datenquellen-URL
und separat einzugebenen Benutzernamen/Kennwort funktioniert einwandfrei!

Das Problem (unter OO-Basic):

A. Die Einbindung aller Verbindungsparameter im URL-String funktioniert nicht.

B. Die Angabe der URL-Parameter über PropertyValue's funktioniert erst dann,
wenn man den Host-Namen und die Port-Nr. direkt in den Präfix-String
schreibt und nur Datenbankname, Benutzer sowie Passwort als Property übergibt.


1. Beispiel (funktioniert bei nicht!):

(In allen Beispielen stehen die Bezeichner "MYSERVER", "MYBASE", "MYNAME"
und "MYPASS" stellvertretend für den Namen des Datenbankservers,
dem Datenbanknamen, dem Benutzernamen und dem Anmeldekennwort des Benutzers.)

Code: Alles auswählen

DIM oConnection AS OBJECT
DIM oStatement AS OBJECT

oConnection = oDriverManager.getConnectionWithInfo( _
  "sdbc:postgresql:host=MYSERVER port=5432 dbname=MYBASE user=MYNAME password=MYPASS")

oStatement = oConnection.createStatement()
2. Beispiel (funktioniert bei mir nicht!):

Code: Alles auswählen

DIM oConnection AS OBJECT
DIM oStatement AS OBJECT
DIM mDBProperties(4) AS NEW com.sun.star.beans.PropertyValue

mDBProperties(0).name = "host"
mDBProperties(0).value = "MYSERVER"
mDBProperties(1).name = "port"
mDBProperties(1).value = "5432"
mDBProperties(2).name = "dbname"
mDBProperties(2).value = "MYBASE"
mDBProperties(3).name = "user"
mDBProperties(3).value = "MYNAME"
mDBProperties(4).name = "password"
mDBProperties(4).value = "MYPASS"

oConnection = oDriverManager.getConnectionWithInfo( _
  "sdbc:postgresql", mDBProperties())	

oStatement = oConnection.createStatement()
2. Beispiel (mein workaround - funktioniert):

Host-Namen und Port-Nr. direkt in den Praefix-String und
nur Datenbankname, Benutzer und Passwort als Property:
Die Port-Nr. kann entfallen, keinesfalls aber der Host-Name,
sonst gibts auch bei der Methode Fehler!

Code: Alles auswählen

DIM oConnection AS OBJECT
DIM oStatement AS OBJECT
DIM mDBProperties(2) AS NEW com.sun.star.beans.PropertyValue

mDBProperties(0).name = "dbname"
mDBProperties(0).value = "MYBASE"
mDBProperties(1).name = "user"
mDBProperties(1).value = "MYNAME"
mDBProperties(2).name = "password"
mDBProperties(2).value = "MYPASS"

oConnection = oDriverManager.getConnectionWithInfo( _
  "sdbc:postgresql:host=MYSERVER port=5432", mDBProperties())	

oStatement = oConnection.createStatement()
Hmmm - da staunt der Laie und der Fachmann wundert sich!

Grüße aus Dresden: ejomi

Nach oben