hawkeye78 Geschrieben 19. Mai 2004 Geschrieben 19. Mai 2004 Hallo, ich würde gerne eine kleine Adressenverwaltung schreiben. Dazu habe ich nun 3 Klassen anlegt. In der ersten (aufruf.class) habe ich nun die Mainroutine drin, die alle weiteren Funktionen aufruft. In der zweiten Datei/Klasse (interface.class) liegt die grafische Benutzeroberfläche für die Adressverwaltung. In der dritten Datei (datenbank.class) habe ich nun alle Funktionen zusammengefaßt, welche zum Aufbau/Abbau der Datenbankverbindung etc. benötigt werden. Als Quellcode gestaltet sich das momentan so (leicht zusammen gekürtzt): Code: public class Aufruf { public static void main(String args[]) { Interface i1; i1=new Interface(); i1.setSize(385,250); i1.show(); } } import java.awt.*; import java.awt.event.*; import java.sql.SQLException; import javax.swing.*; public class Interface extends JFrame implements WindowListener { // Erzeugung der Labels private JLabel LNachname=new JLabel("Nachname: "); [...] // Erzeugung der Textfelder JTextField TNachname=new JTextField(50); [...] // Erzeugung der Buttons private JButton vorwaerts=new JButton(">>>"); [...] public Datenbank db1; // Konstruktur für die Klasse Interface Interface() { super("Adressverwaltung mit DB-Zugriff"); try { 1) db1=new Datenbank(); } catch(SQLException e) { 2) this.LMeldung.setText("Zugriff auf die Datenbank ist fehlgeschlagen"); } } import java.sql.*; public class Datenbank { Statement statement; // Objekt für den Handle auf die Datenbank Connection connection; // Objekt für die Verbindung zur Datenbank ResultSet result; // Ergebnisfeld für die Datenbankabfrage // Methode zum Aufbau der Verbindung zur Datenbank public Datenbank() throws SQLException { // Laden des Treibers try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundException e) { System.out.println("Fehler1"); } // Aufbau der Verbindung zur Datenbank connection=DriverManager.getConnection("jdbc:odbc:adressen", "Admin",""); // Erstellung des Handle's auf die Datenbank statement=connection.createStatement(); } } Mein Problem ist nun das zwar der Aufruf der GUI ohne Probleme funktioniert, er aber sobald er versucht das Objekt für die Datenbank (siehe Punkt 1) zu initialisieren mit einer SQLException in den Catch-Block läuft (Punkt 2). Ich hatte erst die Vermutung das vielleicht die in Windows eingestellte ODBC Quelle falsch wäre, aber mit einem reinen DOS-Programm wo alle Anweisungen in einer Methode stehen läuft der Zugriff ohne Probleme. Meine Frage ist daher, wo ist der Fehler? Ich nehme momentan an das irgendwas bei der Initialisierung des Objktes für die Verbindung zur Datenbank falsch läuft, und da ich momentan ziemlich ratlos bin wäre ich über einen entsprechenden Tip sehr dankbar. Gruß Dan Zitieren
zirri Geschrieben 19. Mai 2004 Geschrieben 19. Mai 2004 fuer die beantwortung der frage waere der stacktrace nich interessanter als der quelltext, wobei die angabe des quelltextes sicherlich nicht verkehrt ist... aber ohne fehlermeldung kann es mehrere ursachen haben gruss Zitieren
hawkeye78 Geschrieben 19. Mai 2004 Autor Geschrieben 19. Mai 2004 Hallo zirri, erst einmal danke für dein Antwort, wenn du mir vorher erklärst wie ich mit Eclipse einen Stacktrace ziehen kann, kann ich dir auch gerne diesen noch Posten . Aber das mit der Fehlermeldung ist genau das was mir sorgen macht, er ruft die GUI auf und zeigt dann an das er wohl in die Catch-Anweisung für die Initialisierung des Objektes (unter Punkt zwei im Quellcode) gelaufen ist. Und da ich momentan offenbar auch zu blöde bin diesen sch?#!§% Debugger nicht zum laufen bekomme, habe ich auch keine chance noch einmal selbst in den programmablauf hinein zu schauen. gruss Zitieren
PerdianMG Geschrieben 22. Mai 2004 Geschrieben 22. Mai 2004 Mein Problem ist nun das zwar der Aufruf der GUI ohne Probleme funktioniert, er aber sobald er versucht das Objekt für die Datenbank (siehe Punkt 1) zu initialisieren mit einer SQLException in den Catch-Block läuft (Punkt 2) Dann lass dir doch an der Stelle man die _genauen_ Fehlermeldung der Exception ausgeben, post sie hier rein und wir sehen weiter. Christian Zitieren
hawkeye78 Geschrieben 23. Mai 2004 Autor Geschrieben 23. Mai 2004 Hallo, erst einmal vielen Dank für dein Posting, aber das Problem hat sich mitterweile gelöst. Aber der vollständigkeitshalber die Fehlermeldung war: "java.sql.SQLException: Result set type is TYPE_FORWARD_ONLY", wobei ich dieses Problem durch die Modifikation des Statements gelöst habe: Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); Trotzdem noch einmal vielen Dank für dein Posting. Gruß Dan Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.