JDBC & Firebird embedded - Schwierigkeiten mit erstellen einer Datenbank(verbindung)
-
Eigentlich arbeite ich schon lange mit firebird, aber nur unter Windows mit den Borland-Komponenten. Jetzt will ich eine java Anwendung (java Anfänger) mit einer Datenbank schreiben und hab eben wieder die firebird embedded mit der jdbc angeschaut.
Soweit ich das verstanden habe muss man zuerst eine connection zur Datenbank erstellen um dann Create Database aufzurufen (zumindest hab ich so eine anleitung für mysql & jdbc gefunden und hab hier dasselbe angenommen).
Nur schaffe ich es nicht eine connection aufzubauen. Diese Exception
GDS Exception. 335544721. Unable to complete network request to host "localhost".
Reason: Unable to complete network request to host "localhost"bekomme ich zu diesem connection-aufruf;
java.sql.DriverManager.getConnection("jdbc:firebirdsql:embedded", user, password)
Was mich ich den hier falsch?
Ach, und noch ein Grundsätzliches Problem (in meinen Augen): Wie erstelle ich eine connection zu einer datenbank die nicht existiert um sie dann zu erstellen? (ist doch paradox?) Ich hab hier noch ziemliche grundsatzprobleme .
edit: Soweit ich das jetzt weiter gesehen habe gibt es folgenden code um eine db zu erstellen:
String DB_SERVER_URL = "localhost"; int DB_SERVER_PORT = 3050; String DB_PATH = "c:\\"; String DB_NAME = "test.fdb"; String DB_USER = "sysdba"; String DB_PASSWORD = "masterkey"; FBManager fbManager = new FBManager(); fbManager.setServer(DB_SERVER_URL); fbManager.setPort(DB_SERVER_PORT); try { fbManager.start(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } try { fbManager.createDatabase(DB_PATH + "\\" + DB_NAME, DB_USER, DB_PASSWORD); } catch (Exception e) { // TODO Auto-generated catch block System.out.println(DB_PATH + "\\" + DB_NAME + "|" + DB_USER + "|" + DB_PASSWORD); e.printStackTrace(); }
Jedoch wird mir hier auch wieder gesagt das er mit localhost nichts anfangen kann (hab auch schon 127.0.0.1 und meine netzwerk-ip versucht, aber immer dasselbe)
Also jetzt weis ich überhaupt nicht mehr weiter. Vielen Dank für jegliche Hilfe!
-
Hallo,
meines Wissens muss eine Datenbank existieren, bevor man auf sie zugreifen kann. Es gibt auch andere Möglichkeiten, wie beispielsweise bei der Java-Datenbank Derby, bei der man innerhalb der Verbindungs-URL "create=true" angeben kann, um somit die DB zu erzeugen. Wie die Datenbank mit Firebird erstellt wird, zeigt offenbar dein Codebeispiel.
Um dann eine Verbindung mit der DB aufzunehmen, sollte die URL vielleicht noch den Pfad enthalten:
DriverManager.getConnection("jdbc:firebirdsql:embedded:" + pfad, user, password)
Zweite Sache: Wurde zuvor – falls auch wirklich notwendig – die Klasse des Treibers geladen? Bei Derby sähe das so aus:
Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
Da ich mich mit Firebird nicht auskenne, weiß ich nicht, ob die Informationen wirklich helfen. Gibt's dafür keine anständige Dokumentation?
-
Der Treiber muss geladen werden.
Das geht so:try { Class.forName("org.firebirdsql.jdbc.FBDriver").newInstance(); } catch (Exception evt) { System.err.println("Unable to load driver."); evt.printStackTrace(); } Connection conn = DriverManager.getConnection( "jdbc:firebirdsql://localhost:3050//path/to/firebird/test.fdb", "firebird", "myPass");
-
Treiber ist vorher geladen worden aber es ging trotzdem nicht. Egal, ich bin auf hsqldb umgestiegung und siehe da es geht auf Anhieb.