UCanAccess "Benutzer verfügt nicht über Berechtigung oder Objekt nicht gefunden" Fehler auf beim öffnen der Datenbank

Ich habe ein Java-Programm, das herausziehen muss aus einer Microsoft Access-Datenbank. Vor kurzem hatte ich den code ändern zur Verwendung UCanAccess anstelle von ODBC als die JDBC-ODBC-Bridge wird nicht unterstützt in Java SE 8 (Die Manipulation einer Access-Datenbank aus Java ohne ODBC)

Wenn ich den code unten gezeigt (nur den Beispielcode auf der UCanAccess website), bekomme ich eine Fehlermeldung -

ERROR: net.ucanaccess.jdbc.UcanaccessSQLException: user lacks privilege or object not found: NULL

Den code wie folgt

Connection conn=DriverManager.getConnection("jdbc:ucanaccess://Z:\\Assignment.accdb");
Statement s = conn.createStatement();
ResultSet rs = s.executeQuery("SELECT * FROM tbl2014janjun"); //tbl2014janjun ORDER BY ID
while (rs.next()) {
    System.out.println(rs.getString(1));
}

Während des Tests habe ich bemerkt, dass eine separate Datenbank, Arbeitsauftrag, ist in der Lage, auf die zugegriffen werden, indem dieser code und die Ausgabe ist wie erwartet. Darüber hinaus, wenn immer dieser code versucht zu führen, es produziert die Verriegelung laccdb-Datei im server-Verzeichnis. Weil dieses, ich glaube, das Problem liegt bei den Benutzerrechten. Bei der Suche dieser Website für mögliche Antworten, von denen sich die meisten auf die zweite Hälfte der Fehlermeldung - die Tabelle war falsch, etc. Ich stellte sicher, dass die Rechtschreibung/Verzeichnis/Datei-Struktur korrekt ist.

Vielen Dank für jede Hilfe können Sie zur Verfügung stellen.

  • Ich habe noch nie verwendet UCan.. aber ich denke, dein Erster Hinweis ist am Ende der Meldung, wo es heißt 'Null' - wie es ist etwas fehlt. Dann wenn man sich den Pfad zu Ihrer Datenbank, sind Sie sicher, es ist die Lösung "//Z:\\Assignment.accdb" richtig? Ist das der richtige Weg? Als test, warum nicht voll qualifizieren, der Weg (vorausgesetzt, Ihr '\\' ist beabsichtigt). Da bekommen Sie die LDB-Datei, die Ihre Berechtigungen kann ok sein.
  • Ich bin sicher, dass der Pfad korrekt aufgelöst wird. Um zu klären, die zugänglichen Datenbank befindet sich im selben Verzeichnis, und erhalte ich die korrekte Ausgabe. Jedoch einfach ändern Sie den Dateinamen, um die Zuordnung erstellt, das oben genannte problem. Soweit ich das beurteilen kann, sind keine nennenswerten Unterschiede zwischen den beiden Datenbanken.
  • Können Sie nach dem gleichen code für die db arbeitet? Wenn Sie auf eine andere db, die im gleichen Ordner ist, dann würde ich vergleichen Sie alle Berechtigungen, die zwischen den beiden db ' s (sollte nicht erforderlich sein, zu überprüfen, Ordner, Berechtigungen).
  • Problem könnte passieren, an der Verbindung Zeit, so dass Ihr Bericht unvollständig. Bitte hängen Sie entlang der exception-stacktrace.
  • Sorry, meinen Arbeitsplatz in ' s internet ging gestern. Ich glaube das problem liegt in der Datenbank Berechtigungen, wie kann ich den Zugriff auf andere Datenbanken im gleichen Verzeichnis. Ich werde versuchen das problem zu beheben, verwenden Sie diese Informationen, und Fragen sich vielleicht einen neuen Fokus mehr Frage, wenn ich noch nicht finden können, eine Antwort. Vielen Dank für Ihre Hilfe.
  • Die UCanAccess Verteilung enthält die Dienstprogramme, die console.bat für Windows und console.sh für Linux (et. al.). Sie wird Sie auffordern, den Speicherort der Datenbank-Datei und dann Scannen Sie es, öffnen Sie jede Tabelle/Abfrage und reporting-Fehler, auf die es trifft. Versuchen Sie, und sehen, ob es gibt Ihnen zusätzliche Hinweise auf die Ursache Ihrer Schwierigkeiten.
  • Danke, dass du mich so bewusst von der console.bat - Dienstprogramm. Nach der überprüfung die Fehlermeldung, es scheint, dass die Verbindung nicht laden der Tabellen, aber irgendwie lädt die relevanten Indizes. Ich bin nicht sicher, warum dies der Fall sein könnte. Ich kann die Ergebnisse posten, aber Sie nicht mir sagen, viel mehr als das.
  • Nur als eine Art Letzte Aktualisierung, die ich letztendlich hatte gerade ein Rollback auf Java 7 und re-verwenden Sie den alten code. Aus welchem Grund auch immer, kann der Zugriff Zuordnung.accdb gut.

InformationsquelleAutor user3656992 | 2014-12-29
Schreibe einen Kommentar