2016-05-03 15 views
1

Ich habe ein sehr interessantes Problem und ich habe kein Glück, die Quelle des Problems zu finden.Ucanaccess Verbindung wird nicht erstellt

Meine Firma hat vor kurzem auf eine neuere Version von Java aktualisiert und die alte ODBC-Verbindungsmethode für die Verbindung zu einer MS Access DB funktioniert nicht mehr. Ich bin gerade dabei, auf eine neue Methode zu aktualisieren.

Ich fand Ucanaccess, die eine gute Alternative zu sein scheint, da die Verbindung nur gelesen werden kann.

Nach dem ersten Start habe ich die Details im Code für Ucanaccess aktualisiert.

Dies ist, wo ich auf ein interessantes Problem stieß.

Ich habe folgendes mein Projekt

  • ucanaccess-3.0.4.jar
  • commons-lang-2.6.jar
  • commons-logging-1.1.1.jar
  • hinzugefügt
  • hsqldb.jar

jackcess-2.1.3.jar

und bis Datum der Verbindung Erstellungscode an folgende

System.out.println("Establisting Connection....."); 
Connection con = DriverManager.getConnection("jdbc:ucanaccess://Z:\\Database\\test.accdb"); 
System.out.println("Connection Establisted....."); 

Die erste Datenbank, die ich ein Passwort geschützt wurde verwendet, so dachte ich, dass vielleicht das Problem verursachen, damit ich in eine neue Datenbank geschaltet. Die zweite Datenbank befand sich auf einem freigegebenen Laufwerk, also habe ich den Speicherort auf den oben genannten abgebildet. Selbst mit diesen zwei Änderungen bekomme ich immer noch das gleiche Problem.

Das Problem ist, dass jedes Mal, wenn ich die DriverManager.getConnection Linie den Code ausführen, es erreicht nie die System.out.println ("Connection Establisted ....."); Linie. Es gibt keine Fehlermeldungen und das Programm läuft noch immer, also kein Absturz. Das Seltsame ist, dass ich, wenn ich einen ungültigen Pfad einstelle, zu dieser Zeile komme. Ich bekomme zwar eine Fehlermeldung, dass die Datei nicht existiert.

Ich hatte kein Glück, eine Lösung für dieses Problem zu finden.

+0

Versuchen Sie, "console.bat" (befindet sich im selben Ordner wie "ucanaccess-3.0.4.jar") von einer Windows-Eingabeaufforderung. Sehen Sie, ob das Ihnen einen Hinweis darauf gibt, was passieren könnte. –

+0

Der Konsolenfledermaus scheint gut zu funktionieren, es geladen die Informationen aus der DB fein – theNewb

Antwort

2

Ich denke, könnte Probleme mit der URL-Verbindung sein. Es funktioniert für mich:

public class ConnectionUcanaccess { 

    static 
    { 
     try { 
      Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); 
      System.out.println("driver loaded"); 
     } catch (ClassNotFoundException e) { 
      System.out.println("the class driver can't be loaded"); 
     } 
    } 

    static Connection getConnection() throws SQLException { 
    return DriverManager.getConnection("jdbc:ucanaccess:///Users/shared/Desktop/database.accdb"); 
    } 

    public static void main(String[] args){ 

     try { 
      Connection con = ConnectionUcanaccess.getConnection(); 
      System.out.println("Connected: " + !con.isClosed()); 

     } catch (SQLException e) { 
      System.out.println("Error:" + e.getMessage()); 
     } 
    } 
} 
+0

Was ist Ihr Fehler? –