# jbcd : odbc Verbindung zu Accessdatei (*.mdb)



## mib1 (8. Mrz 2008)

Hi!

Ich möchte unter java eine Verbindung zu einer Access datei machen.
Diese heißt iab.mdb
Der Pfad dazu ist /home/mib/java/iab.mdb

soweit so gut nun der code


```
import java.sql.*;
import java.util.*;

public class Main {

    public static void main(String[] args) throws ClassNotFoundException {
        
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            
            String filename = "/home/mib/java/iab.mdb";
            String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
            database += filename.trim() + ";DriverID=22;READONLY=false}";
    
            Connection con = DriverManager.getConnection(database, "", "");
        } catch (SQLException ex) {
            //Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }

}
```

dabei sieht die variable database nun wie folgt aus: 


```
"jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=/home/mib/java/iab.mdb;DriverID=22;READONLY=false}"
```

Ich bekomme folgende fehlermeldung


```
init:
deps-jar:
Compiling 1 source file to /home/mib/java/v3/build/classes
compile:
Exception in thread "main" java.lang.NullPointerException
        at sun.jdbc.odbc.JdbcOdbcDriver.initialize(JdbcOdbcDriver.java:436)
        at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:153)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:185)
        at v3.Main.main(Main.java:55)
Java Result: 1
debug:
BUILD SUCCESSFUL (total time: 1 minute 35 seconds)
```
Dies ist in folgender Zeile:

```
Connection con = DriverManager.getConnection(database, "", "");
```

Hat wer ne ahnung warum ich diesen fehler bekomme?


----------



## L-ectron-X (8. Mrz 2008)

Hast du _database_ schon irgendwo definiert?

Edit: Ups, hast du...


----------



## mib1 (8. Mrz 2008)

ja ist als string definiert

siehe codezeile 13 und 14


----------



## mib1 (8. Mrz 2008)

Muss ich unter linux den pfad zur access datenbank anders angeben?
z.b. entwerten oder sonst was?

hat wer ne idee?


----------



## mib1 (8. Mrz 2008)

habe das gleiche programm unter vista gerade zum laufen gebracht

einzige änderung war die pfadangabe 

String filename = "C:\\Users\\xxx\\iab.mdb";

d.h. der Fehler liegt bei der Pfadangabe unter Linux


----------



## bronks (8. Mrz 2008)

mib1 hat gesagt.:
			
		

> ... d.h. der Fehler liegt bei der Pfadangabe unter Linux


Hast Du den MS-Access-Odbc-Treiber für Linux installiert?


----------



## mib1 (8. Mrz 2008)

Ist der nicht im jdk 1.6 eingebunden?

Wie installiert man den?


----------



## bronks (8. Mrz 2008)

mib1 hat gesagt.:
			
		

> Ist der nicht im jdk 1.6 eingebunden?
> 
> Wie installiert man den?


Der ist bei Windows dabei, aber nicht im JDK. Als Krücke für nur lesen könnte man evtl. das Verwenden: http://linux.softpedia.com/get/Database/Database-Engines/MDB-Tools-658.shtml

Aber sonst empfehle ich eine andere DB. Evtl. etwas von SUN: Mysql


----------



## mib1 (8. Mrz 2008)

Andere DB geht leider nicht
nur lesen bringts leider auch nicht => ich brauch schreibzugriff

gibs da noch ne andere möglichkeit, oder muss ich das prog dann immer auf nem win rechner laufen lassen?


----------



## bronks (9. Mrz 2008)

mib1 hat gesagt.:
			
		

> ... muss ich das prog dann immer auf nem win rechner laufen lassen?


Da wirst Du m.E. leider nicht umherumkommen.


----------

