Problem beim Connect zu Access DB

Moin zusammen,

ich habe ein Problem beim Connect zu einer Access DB.
Ich habe bisher mit Sun Studio Creator gearbeitet und bei dem konnte man die Datenbank direkt durch anklicken auswählen und dadurch wurde auch der Treiber gesetzt.
Da ich jetzt unter Eclipse programmier und Daten aus ner Access DB per Java in Excel übertragen soll, bin ich etwas naja… ich habe halt keine Ahnung, warum ich von Eclipse nicht zur DB komme…

Hier mal mein Code…:

import java.sql.*;
import java.lang.System;
import java.util.*;

public class dbconnect {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

Class.forName(„sun.jdbc.odbc.JdbcOdbcDriver“);
String myDB =
„jdbc:odbc:smiley:river={Microsoft Access Driver (*.mdb)};DBQ=C:/Documents and Settings/mrommel2/My Documents/AccessDB/Laender.MDB“;
DBConn = DriverManager.getConnection(myDB,"","");

}

/Code
Und hier der Fehler:
Exception in thread „main“ java.lang.Error: Unresolved compilation problems:
DBConn cannot be resolved
Syntax error, insert „}“ to complete ClassBody

at dbconnect.main(dbconnect.java:20)
/Fehler

Wenn ich jetzt ne andere Variable als DBConn hin packen will, mault der mich wegen nem nicht passendem Typen an…

Wie kann ich hier weiter vorgehen, damit ich den Zugriff bekomme.

Muss noch dazu sagen, dass ich auf die Art noch nicht so oft programmiert habe…

Schon mal Danke im Voraus für Eure Hilfe…

Gruß

Micha

Noch schnell nen Nachtrag…

Bin mal was weiter gekommen…

Code:

import java.sql.*;
import java.lang.System;

public class dbconnect {

/**
* @param args
*/
public static void main(String[] args) throws SQLException,ClassNotFoundException {
// TODO Auto-generated method stub

Class.forName(„sun.jdbc.odbc.JdbcOdbcDriver“);
String myDB = „jdbc:odbc:smiley:river={Microsoft Access Driver (*.mdb)};DBQ=C:/Documents and Settings/mrommel2/My Documents/AccessDB/Laender.MDB}“;
Connection conn = DriverManager.getConnection(myDB, „“, „“);
System.out.println(„DB wurde gefunden \n“);

}
}

/Code

Dafür sieht mein Fehler etwas anders aus…

Fehler:

Exception in thread „main“ java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Could not find file ‚(unknown)‘.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at dbconnect.main(dbconnect.java:14)

/Fehler

Kann mir jemand helfen den Fehler raus zu bekommen…?

Gruß Micha

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo.

Code bitte in pre-Tags setzen:

Code:

> import java.sql.\*;  
> import java.lang.System;  
>   
> public class dbconnect {  
>   
> /\*\*  
> \* @param args  
> \*/  
> public static void main(String[] args) throws  
> SQLException,ClassNotFoundException {  
> // TODO Auto-generated method stub  
>   
> Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  
> String myDB = "jdbc:odbc:smiley:river={Microsoft Access Driver  
> (\*.mdb)};DBQ=C:/Documents and Settings/mrommel2/My  
> Documents/AccessDB/Laender.MDB}";  
> Connection conn = DriverManager.getConnection(myDB, "", "");  
> System.out.println("DB wurde gefunden \n");  
>   
> }  
> }

Aber ein Rateversuch: bei C:/Documents and Settings/mrommel2/My
Documents/AccessDB/Laender.MDB die „/“ durch „“ ersetzen
Vielleicht auf FAQ:875 probieren.

mfg M.L.

Ähm…
Erstmal ne Frage…
Was sollen pre-Tags sein…
Das hat mir bisher noch keiner gesagt, dass ich den Code in sowas packen soll…
(werde es aber gerne auch nutzen…)

Jetzt zu deinem Vorschlag mit dem Ändern der / in …
Wenn ich das mache, dann nimmt Eclipse (bzw so ziemlich alle Entwicklungsumgebungen, die ich bisher kenne) an, dass nachfolgend ein Steuerzeichen ist… also sowas wie „\n“ oder sowas…

Danke erstmal für den Link…
Aber naja… entweder ich bin blind, oder ich suche an der falschen Stelle, aber ich finde nichts zu MS Access … ich finde zu Oracle und MySQL…
Weißt du nen weitere Adresse wo ich nachschauen kann…?

Gruß Micha

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo erstmal.

Was sollen pre-Tags sein…

Sieht optisch erstens besser aus und erleichtert das Copy’n’Paste Vorgehen:

import system.io.\*;
public class Hallo {
system.out.println("Hallo Welt");
}

Weißt du nen weitere Adresse wo ich nachschauen kann…?

http://www.java-forum.org/de/viewtopic.php?t=46827&h…

mfg M.L.

Hab mal den Code was umgestellt…

Nen Kollege von mir hat den so eingegeben und da hat er direkt von Eclipse Riesenfehler ausgeschmissen bekommen.
Deshalb die Änderung in den folgenden Code…

public class Temp {

 public static void main(String args[]) {

 Connection con; 
 try{

 try{
 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
 con = DriverManager.getConnection("jdbc:odbc:BLander");
 Statement stmt = con.createStatement();
 stmt.execute("Create Table bndlaender"+
 "(RANG Integer,"+
 "Bundeslaender Varchar(30),"+
 "Einwohner Integer)");

 // Execute some SQL to create a table in your database.
 // If the table already exists, an exception is thrown!
 stmt.executeUpdate("" +
 "INSERT INTO bndlaender (Rang, Bundesland, Einwohner) VALUES (1,'Nordrhein-Westfalen',18.10)" +
 "INSERT INTO bndlaender (Rang, Bundesland, Einwohner) VALUES (2,'Bayern',12.50)" +
 "INSERT INTO bndlaender (Rang, Bundesland, Einwohner) VALUES (3,'Baden-Württemberg',10.70)" +
 "INSERT INTO bndlaender (Rang, Bundesland, Einwohner) VALUES (4,'Niedersachsen',8.00)" +
 "INSERT INTO bndlaender (Rang, Bundesland, Einwohner) VALUES (5,'Hessen',6.10)" +
 "INSERT INTO bndlaender (Rang, Bundesland, Einwohner) VALUES (6,'Sachsen',4.30)" +
 "INSERT INTO bndlaender (Rang, Bundesland, Einwohner) VALUES (7,'Rheinland-Pfalz',4.10)" +
 "INSERT INTO bndlaender (Rang, Bundesland, Einwohner) VALUES (8,'Berlin',3.40)" +
 "INSERT INTO bndlaender (Rang, Bundesland, Einwohner) VALUES (9,'Schleswig-Holstein',2.80)" +
 "INSERT INTO bndlaender (Rang, Bundesland, Einwohner) VALUES (10,'Brandenburg',2.60)" +
 "INSERT INTO bndlaender (Rang, Bundesland, Einwohner) VALUES (11,'Sachsen-Anhalt',2.50)" +
 "INSERT INTO bndlaender (Rang, Bundesland, Einwohner) VALUES (12,'Thüringen',2.40)" +
 "INSERT INTO bndlaender (Rang, Bundesland, Einwohner) VALUES (13,'Hamburg',1.70)" +
 "INSERT INTO bndlaender (Rang, Bundesland, Einwohner) VALUES (14,'Mecklenburg-Vorpommern',1.70)" +
 "INSERT INTO bndlaender (Rang, Bundesland, Einwohner) VALUES (15,'Saarland',1.00)" +
 "INSERT INTO bndlaender (Rang, Bundesland, Einwohner) VALUES (16,'Bremen',0.70)");
 }
 // Catch any exceptions that are thrown.
 catch(ClassNotFoundException e){

 System.out.println(e.toString());

 }
 }
 catch(SQLException e){

 System.out.println(e.toString());

 }
 }
}

Jetzt bekomm ich den Fehler:

java.sql.SQLException: No data found

Und genau da kommt mir die Frage, ich lege oben die DB an und dann will das Ding nichts finden…??? Warum?
Weiß da wer was…

Ach ja… die DB habe ich nach der Anleitung
http://www.mundayweb.com/progs/jdbc-odbc-tut.php
erstellt… nur fehlt da nen Try{} Block zwischen drin…

Gruß Micha

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

So…
Für alle, die es vielleicht verfolgt haben…
Hier mal der funktionierende Code…
Nur die Werde müsst ihr selbst in die Access DB einfügen… :wink:

import java.sql.\*;

public class Temp {

 public static void main(String args[]) {

 Connection con; 
 try{

 try{
 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
 con = DriverManager.getConnection("jdbc:odbc:Laender");

 }
 \*/
 System.out.println("Datenbankkontakt hergestellt...");

 con.close();
 System.out.println("Datenbank ist wieder weg...");


 }

 // Catch any exceptions that are thrown.
 catch(ClassNotFoundException e){

 System.out.println(e.toString());

 }
 }
 catch(SQLException e){

 System.out.println(e.toString());

 }

 }
}

sollte so lauffähig sein…
Liebe Grüße

Micha

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

und jetzt kannst du dir noch die 2 try{ sparen…

try{
 //Befehle
} catch (IrgendwasException ie){
 //Handling
} catch (NeAndreException nae){
 //Und nochwas
}

geht auch…

Micha

Problem dabei war, dass Eclipse da nicht mit machen wollte…

Ich hatte es genau so von nem Beispiel übernommen und umgeändert, nur kompilieren ließ es sich nicht, weil angeblich nen Try Block gefehlt hätte… und es stand halt genauso da, wie dein Code…
Naja… mal sehen, ob es vielleicht doch irgendwie so geht…
Mal testen… :wink:

Gruß Micha

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]