2

Microsoft Access データベースからプルする必要がある Java プログラムがあります。Java SE 8 では JDBC-ODBC ブリッジがサポートされていないため、最近、ODBC の代わりに UCanAccess を使用するようにコードを変更する必要がありました ( ODBC なしで Java から Access データベースを操作する) 。

以下に示すコード (UCanAccess Web サイトにあるサンプル コードのみ) を実行すると、エラーが発生します -

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

コードは次のとおりです。

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));
}

テスト中に、別のデータベースである Work Order にこのコードでアクセスでき、出力が期待どおりであることに気付きました。さらに、このコードを実行しようとすると、サーバー ディレクトリにロック用の laccdb ファイルが生成されます。このため、問題はユーザー権限にあると思います。このサイトで考えられる答えを検索している間、それらのほとんどはエラーメッセージの後半に関連していました-表のスペルが間違っていたなど.スペル/場所/ファイル構造が正しいことを確認しました.

ご協力いただきありがとうございます。

4

1 に答える 1

2

Tomcat 6 から 7 に移行した後、まったく同じ問題が発生しました。2 つのデータベースが同じ場所にあり、同じテーブルと列があり、データだけが異なります (異なるプロジェクト)。1つは正常に機能し、もう1つは上記のエラーが発生しました。

Access Windows アプリ内から「データベースの最適化と修復」操作を実行して修正しました。(Access 2007 ではManage > Repair、メイン ツールバーのドロップダウンからです。)

于 2015-08-03T13:40:10.733 に答える