nathaniells freak
Mitglied
Hallo alle zusammen.
Ich versuche ein Programm zu schreiben mit dem ich auf MS Access Datenbank Dateien zugreifen will. Sprich *.mdb .
Wenn ich den Code in Windows laufen lasse funktioniert er, aber wenn ich den Code auf Linux portiere bekomme ich in der Entwicklungsumgebung Netbeans eine Exception.
In Windows entwickle ich auch mit Netbeans.
Auf Basis von Linux habe ich das ganze versucht so umzusetzen:
Aber alles hat nichts geholfen um das Problem zu lösen egal was ich mache er schmeisst mir immer diese Fehlermeldung raus:
JDBC-ODBC driver loaded ok.
----------------------------
Driver Name = sun.jdbc.odbc.JdbcOdbcDriver
MajorVersion = 2
minorVersion = 1
isJdbcCompliant = true
----------------------------
Register JDBC-ODBC driver ok.
null
java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcDriver.initialize(JdbcOdbcDriver.java:436)
java.lang.NullPointerException
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 java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
at java.awt.Component.processMouseEvent(Component.java:6041)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3995)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
===========================================
Und wenn ich den Code umarbeite auf:
Dann sagt er mir folgendes:
JDBC-ODBC driver loaded ok.
----------------------------
Driver Name = sun.jdbc.odbc.JdbcOdbcDriver
MajorVersion = 2
minorVersion = 1
isJdbcCompliant = true
----------------------------
Register JDBC-ODBC driver ok.
Verbindung ist fehlgeschlagen: No suitable driver found for /Buecher.mdb
Kein Server vorhanden!
===========================================
In Windows läuft das ganze nur mit Java und das OS startet auch kein MSACCESS oder so, sondern es läuft nur das Java Programm auch bei der Auslastung sieht man im Taskmanager das kein anderes Programm gestartet wird oder die CPU in Anspruch nimmt. In Linux dachte ich mir muss es ja dann ähnlich gehen ohne DB Server, da in Windows ja auch keiner läuft.
Weiss jemand etwas über das Problem Warum er mir einen Fehler anzeigt und/ oder Wie ich Ihn beheben kann!?
Ich habe schon ausgeschlossen das dass herüber kopieren der Buecher.mdb Datei die Datei beschädigt hat, in dem ich mir mit mdbtools diese Datei anzeigen lassen habe.
Über dass Problem findet man jede Menge Threads aber keines das eine Lösung beinhaltet. Teile dieser Threads sind von 2004 - 2005 und auch 2006 und 2007.
Aber niemand weiss bisher woran das liegen könnte denn nirgends habe ich dazu eine eindeutige Antwort finden können.
Ich hoffe Ihr könnt mir helfen aber das Problem scheint sich über Jahre hinweg als sehr hartnäckig erwiesen zu haben.
Wenn ihr einen Server kennt, unter Linux, der *.mdb Dateien laden kann, dann gebt mir bitte bescheid, denn das wäre eine Alternative.
CU Micha
Ich versuche ein Programm zu schreiben mit dem ich auf MS Access Datenbank Dateien zugreifen will. Sprich *.mdb .
Wenn ich den Code in Windows laufen lasse funktioniert er, aber wenn ich den Code auf Linux portiere bekomme ich in der Entwicklungsumgebung Netbeans eine Exception.
In Windows entwickle ich auch mit Netbeans.
Java:
try {
String treiber=null, DbUrl=null ;
//*** "Name des Datenbanktreibers eingeben
treiber = "sun.jdbc.odbc.JdbcOdbcDriver";
//*** "Url der Databank eingeben *********
DbUrl = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\\Buecher.mdb";
Class.forName(treiber).newInstance();
System.out.println("JDBC-ODBC driver loaded ok.");
// Listet alle geladenen Treiber auf
List drivers = Collections.list(DriverManager.getDrivers());
for (int i=0; i<drivers.size(); i++) {
Driver driver = (Driver)drivers.get(i);
System.out.println("----------------------------");
// Get name of driver
String name = driver.getClass().getName();
System.out.println("Driver Name = " + name);
// Get version info
int majorVersion = driver.getMajorVersion();
System.out.println(" MajorVersion = " + majorVersion);
int minorVersion = driver.getMinorVersion();
System.out.println("minorVersion = " + minorVersion);
boolean isJdbcCompliant = driver.jdbcCompliant();
System.out.println("isJdbcCompliant = " + isJdbcCompliant);
System.out.println("----------------------------");
}
DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
System.out.println("Register JDBC-ODBC driver ok.");
java.sql.Connection cn = DriverManager.getConnection(DbUrl,"","");
System.out.println("DB URL ok.");
java.sql.Statement p = cn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE, java.sql.ResultSet.CONCUR_UPDATABLE);
System.out.println("Statement Create ok.");
String qry = "SELECT Tabelle.Spalte FROM Tabelle;";
java.sql.ResultSet rss = p.executeQuery(qry);
// auswerten kann ich ja nicht in linux deswegen entfällt der code
// weil ich noch nicht einmal bis dahin im linux komme sondern er beim
// connection create statement scheitert
}
catch(ClassNotFoundException cnfe) {
System.out.println("Treiber kann nicht geladen werden: "+ cnfe.getMessage());
System.out.println(cnfe.getMessage());
}
catch(SQLException sqle) {
System.out.println("Verbindung ist fehlgeschlagen: " + sqle.getMessage());
System.out.println("Kein Server vorhanden!");
}
catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
System.out.println(e.toString());
}
}
Auf Basis von Linux habe ich das ganze versucht so umzusetzen:
Java:
DbUrl = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=/Buecher.mdb";
// Oder mit "./Buecher.mdb"
// Oder mit "//Buecher.mdb"
// Oder mit "\\Buecher.mdb"
java.sql.Connection cn = DriverManager.getConnection(DbUrl,"","");
Aber alles hat nichts geholfen um das Problem zu lösen egal was ich mache er schmeisst mir immer diese Fehlermeldung raus:
JDBC-ODBC driver loaded ok.
----------------------------
Driver Name = sun.jdbc.odbc.JdbcOdbcDriver
MajorVersion = 2
minorVersion = 1
isJdbcCompliant = true
----------------------------
Register JDBC-ODBC driver ok.
null
java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcDriver.initialize(JdbcOdbcDriver.java:436)
java.lang.NullPointerException
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 java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
at java.awt.Component.processMouseEvent(Component.java:6041)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3995)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
===========================================
Und wenn ich den Code umarbeite auf:
Java:
DbUrl = "/Buecher.mdb";
java.sql.Connection cn = DriverManager.getConnection(DbUrl,"","");
Dann sagt er mir folgendes:
JDBC-ODBC driver loaded ok.
----------------------------
Driver Name = sun.jdbc.odbc.JdbcOdbcDriver
MajorVersion = 2
minorVersion = 1
isJdbcCompliant = true
----------------------------
Register JDBC-ODBC driver ok.
Verbindung ist fehlgeschlagen: No suitable driver found for /Buecher.mdb
Kein Server vorhanden!
===========================================
In Windows läuft das ganze nur mit Java und das OS startet auch kein MSACCESS oder so, sondern es läuft nur das Java Programm auch bei der Auslastung sieht man im Taskmanager das kein anderes Programm gestartet wird oder die CPU in Anspruch nimmt. In Linux dachte ich mir muss es ja dann ähnlich gehen ohne DB Server, da in Windows ja auch keiner läuft.
Weiss jemand etwas über das Problem Warum er mir einen Fehler anzeigt und/ oder Wie ich Ihn beheben kann!?
Ich habe schon ausgeschlossen das dass herüber kopieren der Buecher.mdb Datei die Datei beschädigt hat, in dem ich mir mit mdbtools diese Datei anzeigen lassen habe.
Über dass Problem findet man jede Menge Threads aber keines das eine Lösung beinhaltet. Teile dieser Threads sind von 2004 - 2005 und auch 2006 und 2007.
Aber niemand weiss bisher woran das liegen könnte denn nirgends habe ich dazu eine eindeutige Antwort finden können.
Ich hoffe Ihr könnt mir helfen aber das Problem scheint sich über Jahre hinweg als sehr hartnäckig erwiesen zu haben.
Wenn ihr einen Server kennt, unter Linux, der *.mdb Dateien laden kann, dann gebt mir bitte bescheid, denn das wäre eine Alternative.
CU Micha