Zum Inhalt springen

Problem mit JDBC oder Ein Objekt zu erzeugen


hawkeye78

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...