Connection

Hein_nieH

Bekanntes Mitglied
Moinsen,

ich bin Java-Neuling und versuche im Selbstudium durch die wesentlichen Themen durchzukommen.
Am Wochenende habe ich meinen ersten Gehversuch mit dem Auslesen von Datenbanken via Java gemacht, jedoch bin ih schon am elementarsten Problem gescheitert.

Wenn ich das Connectionobjekt instanziere, gibt es schon Mecker vom Compiler.
Jede Zeile, in der das Connection-Objekt verwendet wird, wird vom Compiler moniert.

Wenn ich das Connection-Objekt in einer Try-Catch Konstruktion anlege läuft der Comilierungsvorgang durch. Dann kann ich die Routine auch starten, jedoch können keine Metainformationen zum Connection-Objekt ausgelesen werden. Es besteht definitiv ein Zugriff auf die mdb-Datei aber es kommt auch keine Meldung vom Exception-Block.
Den Zugriff erkenne ich daran, dass nach dem Start eine ldb-Datei erzeugt wird.

Was mache ich falsch.

Das Beispiel dient für mich nur zur Übung. Ich weiss, dass die Verwendung von ACCESS-Datenbanken nicht die beste Wahl ist. Aber irgendwie muss ich ja beginnen.

Hier mein Code
Java:
import java.util.*;
import java.io.*;
import java.sql.*;
import java.text.*;



public class Bsp_JDBC_01	
{	
	static Connection con;
	static Statement stmt;
	static DatabaseMetaData dmd;
	int nextID;
	
	public Bsp_JDBC_01() //Konstruktor
	{
		try
		{
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //Treiber in die virtuelle Maschine laden
		}
		catch (Exception e)
		{
			System.out.println("Fehler bei ODBC-JDBC-Bridge " + e );
			return;
		}
		
		try
		{
			String url;
			url = "jdbc:odbc:JDBC_ODBC_TEST";
			con = DriverManager.getConnection(url);
		}
		catch (Exception e)
		{
			System.out.println("Fehler bei Connection-Objekt " + e );
			return;		
		}
		
		//Metadaten ausgeben
		dmd=con.getMetaData();
		System.out.println();
		System.out.println("Connection URL : " + dmd.getURL());
		
		con.close();
	}// Konstruktor
	
	
	public static void main(String[] args)
	{
		Bsp_JDBC_01 x = new Bsp_JDBC_01();
	}
}// Class Bsp_JDBC_01


JDBC_ODBC_TEST habe ich im ODBC Datenquellen Administrator eingerichtet.
Zu einem konstruktiven Hinweis wäre ich sehr dankbar.


Gruss Hein_nieH
 
Zuletzt bearbeitet von einem Moderator:

jgh

Top Contributor
versuch mal folgendes:

Java:
import java.util.*;
import java.io.*;
import java.sql.*;
import java.text.*;

public class Bsp_JDBC_01 {
	static Connection con;
	static Statement stmt;
	static DatabaseMetaData dmd;
	int nextID;

	public Bsp_JDBC_01() throws ClassNotFoundException // Konstruktor
			, SQLException {
		Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // Treiber in die
														// virtuelle
														// Maschine laden

		String url;
		url = "jdbc:odbc:JDBC_ODBC_TEST";
		con = DriverManager.getConnection(url);

		// Metadaten ausgeben
		dmd = con.getMetaData();
		System.out.println();
		System.out.println("Connection URL : " + dmd.getURL());

		con.close();
	}// Konstruktor

	public static void main(String[] args) {
		try {
			Bsp_JDBC_01 x = new Bsp_JDBC_01();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}// Class Bsp_JDBC_01
 

Hein_nieH

Bekanntes Mitglied
Hallo JGH,

es erscheint der gleiche Fehler.:noe:
Zur Nachvollziehbarkeit habe ich die Fehlermeldung mit angehängt.

Ich bin am Verzweifeln!;(

Gruss Hein_nieH

Code:
                                   ^
Bsp_JDBC_01.java:46: unreported exception java.sql.SQLException; must be caught or declared to be thrown
                System.out.println("Connection URL : " + dmd.getURL());
                                                                   ^
Bsp_JDBC_01.java:48: unreported exception java.sql.SQLException; must be caught or declared to be thrown
                con.close();
                         ^
Bsp_JDBC_01.java:58: exception java.lang.ClassNotFoundException is never thrown in body of corresponding try statement
                catch (ClassNotFoundException e)
                ^
Bsp_JDBC_01.java:63: exception java.sql.SQLException is never thrown in body of corresponding try statement
                catch (SQLException e)
                ^
5 errors
Exception in thread "main" java.lang.NoClassDefFoundError: Bsp_JDBC_01
Caused by: java.lang.ClassNotFoundException: Bsp_JDBC_01
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: Bsp_JDBC_01.  Program will exit.

Hier der aktuelle code:
Java:
import java.util.*;
import java.io.*;
import java.sql.*;
import java.text.*;



public class Bsp_JDBC_01	
{	
	static Connection con;
	static Statement stmt;
	static DatabaseMetaData dmd;
	int nextID;
	
	public Bsp_JDBC_01() //Konstruktor
	{
		try
		{
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //Treiber in die virtuelle Maschine laden
		}
		catch (Exception e)
		{
			System.out.println("Fehler bei ODBC-JDBC-Bridge " + e );
			return;
		}
		
		try
		{
			String url;
			url = "jdbc:odbc:JDBC_ODBC_TEST";
			con = DriverManager.getConnection(url);
		}
		catch (Exception e)
		{
			System.out.println("Fehler bei Connection-Objekt " + e );
			return;		
		}
		
		//Metadaten ausgeben
		dmd=con.getMetaData();
		System.out.println();
		System.out.println("Connection URL : " + dmd.getURL());
		
		con.close();
	}// Konstruktor
	
	
	public static void main(String[] args)
	{
		try 
		{
            Bsp_JDBC_01 x = new Bsp_JDBC_01();
        } 
		catch (ClassNotFoundException e) 
		{
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
		catch (SQLException e) 
		{
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

	}
}// Class Bsp_JDBC_01
 
Zuletzt bearbeitet:

Hein_nieH

Bekanntes Mitglied
Hallo Volvagia,

ich bin fest davon überzeugt, dass die Schreibweise nicht unbedingt zu meiner Problemlösung beiträgt.

Vielmehr interessiert mich in erster Linie, warum keine ordnungsgemäße Verbindung zur Datenbank aufgebaut wird.

Gruss Hein_nieH
 

Volvagia

Top Contributor
Schlecht formuliert. Es war eigendlich nicht das Behandeln, sondern das Fangen von Fehlern. SQLExceptions sind checked Exceptions und müssen aufgefangen werden. Daher der Fehler.
 

Hein_nieH

Bekanntes Mitglied
Hallo Volvagia,

... aha.
Jetzt merke ich das die Hinweise zur Schreibweise nicht dein eigentlicher Kommentar waren, sondern zu deiner Signatur gehören.:)
Ich werde es heute nachmittag ausprobieren die SQL-Exception abzufabgen.
Eine Antwort gibt es danach ....:)

Gruss Hein_nieH
 

Hein_nieH

Bekanntes Mitglied
Hallo,

ich verliere den Glauben.
Das Connection-Objekt lässt sich anlegen.
con = DriverManager.getConnection(url);


Wenn ich aber das Connection-Objekt nutzen will meckert der Compiler
Bei dmd=con.getMetaData();
con.close();

gibt es beim Compilieren schon eine Fehlermeldung.

Lasse ich hinter
con = DriverManager.getConnection(url);
alles weg, dann wird auch eine Verbindung zur DB hergestellt.

Die ldb-Datei, die scheinbar den Zugriff signalisiert, wird jedoch erst 2-3 Sekunden
nach dem Erzeugen des Connection-Objektes angelegt.
Kann das die Ursache sein.

Gruss Hein_nieH
 

Bernd Hohmann

Top Contributor
Natürlich meckert der Compiler. .getMetaData() wirft eine SQLException, .getURL() ebenfalls. Beide werden in Deinem Code nicht abgefangen, also kompiliert das nicht.

Entweder Du packst das einzeln in einen try/catch Block oder machst einen ganz großen try/catch für den Inhalt der Methode oder schreibst an die Methode "throws SQLException", dann musst Du den Fehler weiter "oben" abfangen.

Bernd
 

Hein_nieH

Bekanntes Mitglied
Hallo Bernd,

danke für den Hinweis. Dann hatte Volvagia ja Recht.

Habe es ebend mal ausprobiert. Und nun funktioniert es.

Danke.:applaus:

Gruss Hein_nieH
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Hallolu PONG Parent-Child connection Java Basics - Anfänger-Themen 3
B MySQL (jdbc) -> connection liefert NULL Java Basics - Anfänger-Themen 3
G sql server connection mit windows authentication Java Basics - Anfänger-Themen 2
X Connection reset, wieso? Java Basics - Anfänger-Themen 4
P java.net.ConnectException: Connection refused: connect Java Basics - Anfänger-Themen 8
S Input/Output URL Connection Problem Java Basics - Anfänger-Themen 5
B Prüfung auf erfolgreiche Connection? Java Basics - Anfänger-Themen 2
K Frage zu einer Connection in Java Java Basics - Anfänger-Themen 3
R JDK installieren Nach Update auf java 1.7 Connection refused Java Basics - Anfänger-Themen 9
M "Connection reset" gbxRemote Socket Java Basics - Anfänger-Themen 9
M Netzwerkprogrammierung => Is connection alive? Java Basics - Anfänger-Themen 6
D Mysql Connection Close? Java Basics - Anfänger-Themen 14
B JDBC DB2 Connection Java Basics - Anfänger-Themen 1
D Facebook Connection problem Java Basics - Anfänger-Themen 2
M Audio Stream läuft auf :connection abort: socket write error Java Basics - Anfänger-Themen 2
G java.sql.Connection Connect ungleich null, aber geschlossen Java Basics - Anfänger-Themen 2
G JavaMail: Unrecognized SSL message, plaintext connection? Java Basics - Anfänger-Themen 3
G EJB - ConnectionPooling: Wie Connection erhalten? Java Basics - Anfänger-Themen 10
A Connection Prob Java Basics - Anfänger-Themen 3
S MySQL - connection Java Basics - Anfänger-Themen 8
J Kleine Connection Frage Java Basics - Anfänger-Themen 4
B java.net.ConnectException: Connection refused: connect ? Java Basics - Anfänger-Themen 2
T MySQL connection Java Basics - Anfänger-Themen 7
G db connection Java Basics - Anfänger-Themen 2
L Connection Pooling Grundlagenfragen Java Basics - Anfänger-Themen 2
K JDBC - Typ Connection in jeder Klasse neu öffnen? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben