# JDBCODBC - Connection-Objekt



## Hein_nieH (26. Nov 2012)

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.???:L

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.:rtfm:

Hier mein Code

```
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.
:applaus:

Gruss Hein_nieH


----------



## MChrista (26. Nov 2012)

```
public Vector getTabellennamen() throws SQLException {
        Vector tabNamen=new Vector();
        connectToMySql();
        DatabaseMetaData md = (DatabaseMetaData) connection.getMetaData();
        ResultSet rs = md.getTables(database, null, null, null);
        while (rs.next()) {
            System.out.println(rs.getString("TABLE_NAME"));
            tabNamen.add(rs.getString("TABLE_NAME"));
        }
        connectionClose();
        abfrageAusgeben(tabNamen);
        return tabNamen;


    }
```

dies liest tabellennamen aus einer Mysql Db aus
wenn dein Connect steht, solltest du mit diesem Code tabellen auslesen können.
Anschließend musst du TABLE_Name mit URL ersetzen. den Befehl musst du googeln. den weiß ich nicht auswendig


----------



## Hein_nieH (26. Nov 2012)

Hallo MChrista,

danke für die Antwort.
Im konkreten Fall ist für mich von Interesse, ob ein in meinem Skript ein logischer Fehler vorliegt, oder ob die Ursache beim Treiber zu suchen ist.

Gruss Hein_nieH


----------



## MChrista (26. Nov 2012)

meine vermutung ist, dass bei dir das resultset fehlt.
und du dieses noch auslesen musst. die connection sieht bei meiner sql db exakt gleich aus.

grüße


----------

