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 undconsole.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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte genau das gleiche Problem nach dem Umzug von Tomcat 6 und 7.
Zwei Datenbanken in der gleichen Stelle mit den gleichen Tabellen und Spalten, werden nur die Daten unterschiedlich ist (unterschiedliche Projekte).
Einer funktioniert, der andere gab die oben genannten Fehler.
Es behoben, indem ich eine "Datenbank komprimieren und Reparieren" - Vorgang innerhalb des Access-windows-app. (In Access 2007 ist es
Manage > Repair
von der Haupt-Symbolleiste dropdown-Liste.)