PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Firebird + Java mit JDBC/Jaybird


Durcairion
2006-08-17, 18:24:13
Hat hier jemand schonmal mit Jaybird und Java auf ne Firebird Datenbank zugegriffen und kann mir kurz und knapp sagen wie ich das anstelle? :(

Aus der Hilfe auf Sourceforge werd ich einfach nciht schlau, die sagt ich soll Dateien runterladen die es da gar nicht gibt. Oder nicht mehr gibt, auf jeden Fall hab ich 0 Plan wie ich das nun anstellen soll :(

HellHorse
2006-08-17, 19:22:22
examples/DataSourceExample.java
examples/DriverExample.java

http://jaybirdwiki.firebirdsql.org/jaybird/doku.php?id=config:driver_config#obtaining_connection_via_drivermanager
http://java.sun.com/docs/books/tutorial/jdbc/index.html
www.google.com

Durcairion
2006-08-17, 19:51:05
http://jaybirdwiki.firebirdsql.org/jaybird/doku.php?id=config:driver_config#obtaining_connection_via_drivermanager

Der Link ist ja schön und gut nur leider funktioniert nix was da steht :/

Zumindest bei mir nicht ... ich kann weder

Class.forName("org.firebirdsql.jdbc.FBDriver");

eingeben noch dieses andere Zeugs für die CMD.

Niemand da der ma 5 min Zeit hat mir ganz einfach zu erklären welche Dateien ich wohin kopieren muss und wie ich dann im Programm ne DB Verbinde (DB: Firebird 2.0)

HellHorse
2006-08-17, 20:26:53
Niemand da der ma 5 min Zeit hat mir ganz einfach zu erklären welche Dateien ich wohin kopieren muss und wie ich dann im Programm ne DB Verbinde (DB: Firebird 2.0)
Wenn du dir 5 min Zeit nehmen würdest, dass genaue Problem zu schildern (StackTrace ...) und die release notes zu lesen :rolleyes:


Downloaden von der Downloadseite, http://jaybirdwiki.firebirdsql.org/jaybird/doku.php?id=download:start :rolleyes:
Entpacken und release notes lesen :rolleyes:
Wie in den release notes beschieben Jaybird-2.1.0.jar dem classpath hinzfügen :rolleyes:

Durcairion
2006-08-17, 21:14:26
Gut das ich 1. kein Plan hab wasn classpath ist und 2. wie man das wo und warum und weshalb einbindet.

aber :up: für die hilfe!

HellHorse
2006-08-17, 21:32:00
Gut das ich 1. kein Plan hab wasn classpath ist und 2. wie man das wo und warum und weshalb einbindet.
Na also, geht doch. Konkretes Problem, konkrete Antwort:

Im classpath sucht Java nach Klassen. Das ist mehr oder weniger ein Liste von Verzeichnissen mit .class files drin oder Pfaden von .jar files.

Wie du den anpasst hängt ganz davon ab, wie du die Java Applikation startest.

Falls direkt oder indirekt durch aufruf von java geschiet, ist das -cp pfad

z.B so in der Richtung
java -cp /pfad/zu/Jaybird-2.1.0.jar name.der.Hauptklasse
(bei Windows Windowspfade verwenden).

Falls du eine IDE verwendest ist es dort von Fall zu Fall verschieden. Bei der bösen, gehypten IDE:
Project -> Properties -> Java Build Path -> Libraries -> Add External JARs...

Durcairion
2006-08-17, 21:37:02
Und was wenn ich danach die Beispiele auf der von dir geposteten Seite trotzdem nicht ohne Fehler in der gehassten IDE eingeben kann? :(

PS: Weitere konkrete Frage:

Wenn ich die .jar eingebunden habe,

Was muss ich schreiben um zu meiner Firebird 2.0 DB welche als DB.FDB gespeichert ist verbinden?

Usernamen vom Server sind noch std auf SYSDBA und masterkey.

Und wenn die verbindung steht wie kann ich sachen auslesen,update,eintragen bliblub :>

Ich stehe vor nem großen schwarzen Loch :(

HellHorse
2006-08-17, 23:02:01
Und was wenn ich danach die Beispiele auf der von dir geposteten Seite trotzdem nicht ohne Fehler in der gehassten IDE eingeben kann? :(
Exakten Fehler Posten. Posten was du gemacht hast, .....


Was muss ich schreiben um zu meiner Firebird 2.0 DB welche als DB.FDB gespeichert ist verbinden?
Im entpackten File sind folgende Beispieldateien:
examples/DataSourceExample.java
examples/DriverExample.java
desweiteren:
http://jaybirdwiki.firebirdsql.org/j..._drivermanager


Und wenn die verbindung steht wie kann ich sachen auslesen,update,eintragen bliblub :>
http://java.sun.com/docs/books/tutorial/jdbc/basics/index.html

Durcairion
2006-08-18, 18:04:54
Exakten Fehler Posten. Posten was du gemacht hast, .....

Ich habe eine Java Anwendung die mir eine Oberfläche erzeugt. Die komplette Oberfläche und die Eigenschaften (Handler) der Buttons stecken in der Klasse "Application".

Und da ich auf Buttondruck DB Abfragen machen will, wollte ich nun in diese Klasse die DB Verbindung einbauen. Also habe ich es so versucht wie in dem Beispiel beschrieben.




...
import java.sql.*;
...
public class Application {
// anlegen der Buttons,Listen etc.
...
Class.forName("org.firebirdsql.jdbc.FBDriver");
...
public Component createComponents()
{
... // hier werden dann die Buttons etc. eingebunden und die Handler definiert
}
}


Die Jaybird-full .jar habe ich wie von dir beschrieben über external JAR eingebunden.

Wenn ich dann aber die Zeile "Class.forName("org.firebirdsql.jdbc.FBDriver");" am Anfang meiner main() einfüge, unterstreicht mir eclipse die Zeile mit der Meldung "ClassNotFound". Muss ich die noch wo anderst angeben?

HellHorse
2006-08-19, 12:27:05
Ich habe eine Java Anwendung die mir eine Oberfläche erzeugt. Die komplette Oberfläche und die Eigenschaften (Handler) der Buttons stecken in der Klasse "Application".
Aufsplitten, aufsplitten, aufsplitten!

Und da ich auf Buttondruck DB Abfragen machen will,
Ich hoffe schwer, du machst das in einem neuen Thread und nicht im EDT

wollte ich nun in diese Klasse die DB Verbindung einbauen.
Doofe Idee. DB Code gehört nicht in eine GUI Klasse. Mach eine eigene Klasse dafür



...
import java.sql.*;
...
public class Application {
// anlegen der Buttons,Listen etc.
...
Class.forName("org.firebirdsql.jdbc.FBDriver");
...
public Component createComponents()
{
... // hier werden dann die Buttons etc. eingebunden und die Handler definiert
}
}

Class.forName("org.firebirdsql.jdbc.FBDriver"); Steht ausserhalb einer Methode? Das kann ja nicht funktionieren. Hast du die Tutorials und den Beispiel Code angeschaut? Dort steht so viel Text, weil man genau erklärt was passiert.


Wenn ich dann aber die Zeile "Class.forName("org.firebirdsql.jdbc.FBDriver");" am Anfang meiner main() einfüge, unterstreicht mir eclipse die Zeile mit der Meldung "ClassNotFound". Muss ich die noch wo anderst angeben?
Kannst du mal bitte nur den DB Code posten?

Durcairion
2006-08-19, 12:44:45
Welchen DB Code?

Ich kann ja nichtmal den JDBC Driver dem Driver Manager bekanntmachen.

Meine einzige DB Zeile im ganzen Code wäre

Class.forName ("org.firebirdsql.jdbc.FBDriver");

Nur das geht eben nicht und damit haben die auch angefangen ...

Und nein es steht nicht auserhalb, es steht direkt als 1. Anweisung in meiner main() funktion.


public static void main(String[] args)
{
// Create the database connection
Class.forName ("org.firebirdsql.jdbc.FBDriver");

javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
CreateAndShowGUI(); // Create and start the GUI
}
});
}

Aber da er mir bringt org.firebirdsql.jdbc.FBDriver -> ClassNotFound hab ich ma wieder kein Plan wie ich das behebe denn über External JAR hab ich die eingebunden.

HellHorse
2006-08-19, 14:59:24
Class.forName ("org.firebirdsql.jdbc.FBDriver");
Ist das Problem zur Compilezeit oder zur Laufzeit? Bitte genauen Fehler und Wortlaut. "Geht nicht" ist nicht gerade sehr hilfreich.

Was meint Eclipse wenn du
org.firebirdsql.jdbc.FBDriver driver = null;
tippst? Bitte genauen Fehler und Wortlaut.

Durcairion
2006-08-19, 16:32:16
org.firebirdsql.jdbc.FBDriver driver = null;

Geht ohne Probleme :)

Das bedeutet? :)

HellHorse
2006-08-21, 16:34:40
Poste mal den genauen und vollen Fehler (wenn's ein Trace ist, dann natürlich den vollen) und wann genau er auftritt (Compilezeit, Laufzeit, ...).

Durcairion
2006-08-21, 18:30:02
Ok, ich glaub ich fang nochmal von vorne an :)

Ich habe nun meine Programmoberfläche fertig, d.h. ich kann einfügen, editieren usw. bisher alles nur im Programm selbst mit Objekten.

Nun möchte ich diese Objekte auf eine Datenbank auslagern d.h. das Programm muss mit einer Firebird 2.0 Datenbank kommunizieren.

Nun habe ich das Problem das ich nicht zurechtkomme mit den ganzen FAQ Seiten da ich bisher recht wenig Erfahrung in Java gemacht habe, das Programm aber unbedingt für mein Studium schreiben muss ( Labor :/ ).

z.B. auf der von dir genannten Seite:

http://jaybirdwiki.firebirdsql.org/jaybird/doku.php?id=config:driver_config#obtaining_connection_via_drivermanager

java.sql.DriverManager is the first and the most simple way to access drivers using JDBC driver. You have to either list JDBC driver in ‘jdbc.drivers’ startup JVM property

Ist das damit schon erledigt das ich die .jar in ecLipse unter Properties/Buld Path über External Jars geladen habe?

Jedoch egal wie:

Sollte es nicht reichen, dann geht der alternative Weg von der FAQ Seite, welcher dann wäre:

Class.forName("org.firebirdsql.jdbc.FBDriver"); um die Treiber beim DriverManager zu registrieren nicht.

Sobald ich diese Zeile in mein Programm einbaue (direkt als 1. Anweisung in der main(), unterstreicht eclipse mir den kompletten Ausdruck. Gehe ich mit der Maus darüber steht nur da: "Unhandled exception type ClassNotFoundException"

Sollte das oben ausgereicht haben um den Treiber bei dem DriverManager zu registrieren, kann ich die Verbindung nicht aufbauen:

Sobald ich

Connection cn = DriverManager.getConnection("jdbc:firebirdsql:localhost/3050:c:/db.fdb","SYSDBA","masterkey"); eingebe, unterstreicht er mir alles rechts neben dem "=" und zeigt hier an wenn ich mit der Maus darüberfahre: "Unhandled exception type SQLException"

Ist der Audruck in der () soweit richtig? Da in dem Beispiel ja eine .gdb Datenbank verwendet wird. Oder müsst ich da irgendwo noch was abändern das es mit der Firebird .fdb Datei funktioniert?

Ich hoffe ich konnte nun mein Problem klar darstellen.

Schonmal vielen Dank das du dir überhaupt die Zeit nimmst und dir die Sache mal anschaust.

HellHorse
2006-08-23, 20:14:18
...
Sobald ich diese Zeile in mein Programm einbaue (direkt als 1. Anweisung in der main(), unterstreicht eclipse mir den kompletten Ausdruck. Gehe ich mit der Maus darüber steht nur da: "Unhandled exception type ClassNotFoundException"

.....
eingebe, unterstreicht er mir alles rechts neben dem "=" und zeigt hier an wenn ich mit der Maus darüberfahre: "Unhandled exception type SQLException"
.....
Oh Mann, warum nicht gleich so.
Dass Problem ist, dass die beiden Zeilen eine Exception werfen können (ClassNotFoundException resp. SQLException) und du keine ExceptionHandlers drum herum hast.