Das heist, da ich keine Möglichkeit habe ,bzw. AFAIK Postgres dies nicht bereitstellt, eine Abfrage in dem Sinn "CREATE DATABASE IF NOT EXISTS vigema;" durchzuführen, erstelle ich einfach immer eine. Falls keine existiert, wird sie erstellt. Falls diese Datenbank schon besteht, kommt es zu einer Exception, die ich abfange. So weit so gut.
Nun probiere ich gerade Alternativen aus und wollte statt Zeos mal die Bordmittel von Lazarus nutzen. Ich nutze dafür eine TPQConnection, die auch wunderbar eine Datenbank erstellt (per Methode: "PQConnection.CreateDB;" oder per Hand "PQConnection.ExecuteDirect('CREATE DATABASE vigema;');" was beides funktioniert, wenn es noch keine Datenbank gibt. Existiert jedoch schon die Datenbank, kommt es zu einer Exception "EPQDatabaseError Fehler: Datenbank existiert bereits", die ich nicht abfangen kann.
Hier mal der Code:
Code: Alles auswählen
try
PQConnection.ExecuteDirect('Commit Work;');
PQConnection.ExecuteDirect('CREATE DATABASE vigema;');
// PQConnection.CreateDB; //Dies geht auch nur, wenn Datenbank noch nicht existiert -> gleiche Exception
except
on E: Exception do
status.Write(1,'Exception: '+E.Message)
else
status.Write(1,'Unbekannter Fehler');
end;
1. Gibt es eine Möglichkeit bei PostgreSQL im Vorfeld zu checken, ob eine Datenbank existiert?!
2. Alternative: wie kann ich die Exception abfangen (mit Zeos geht das ja)?!
Ähnlich diesem Forum http://www.lazarusforum.de/viewtopic.php?p=23694, leider ohne Lösung!