读取.accdb数据库时没有发生任何事情



我正在尝试创建一个程序,将读取数据库并输出它。我遵循了http://www.codeproject.com/Articles/35018/Access-MS-Access-Databases-from-Java上的教程。但是当我运行程序时,什么也没发生。甚至没有错误……

我可能错过了什么,但我不知道是什么。下面是我的代码:

import java.sql.*;
public class ReadDB {
public static void ReadDB() {
    try{
        //Source: http://www.codeproject.com/Articles/35018/Access-MS-Access-Databases-from-Java
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=ratingdb.accdb;";
        Connection conn = DriverManager.getConnection(database, "", "");
        Statement s = conn.createStatement();
        //Read Table
        String selTable = "SELECT * FROM RATINGS";
        s.execute(selTable);
        ResultSet rs = s.getResultSet();
        while((rs!=null) && (rs.next()))
        {
           System.out.println(rs.getString(1) + " : " + rs.getString(2));
        }


        s.close();
        conn.close();
    } catch(Exception e){
        System.out.println ("Unable to connect to the database");
        System.out.println ("Exception: " + e.getMessage());
    }

}

}在黑豹的评论之后,我得到了这个错误:java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x13f4 Thread 0x1204 DBC 0x42170d4

EDIT:一个新的错误发生:Exception: [Microsoft][ODBC Microsoft Access Driver] Not a valid file name.这意味着我使用的驱动程序不存在吗?

即使它抛出异常,您也无法看到它们,因为您以错误的方式处理了错误。你不应该只是抓住异常然后继续前进。这违背了异常处理的整个概念。

您应该这样做,以便在控制台中打印异常。

try {
  //code that throws exceptions
} catch(Exception e) {
  e.printStackTrace(); //prints the error to the console and you missed it
}
编辑:

您似乎遇到了一些权限问题。

节选自http://support.sas.com/kb/40/228.html

出现此问题有几个原因,包括没有对ODBC注册表项的权限。在这种情况下,更改注册表项的权限如下:

使用regedit命令启动注册表编辑器:选择开始►运行并输入regedit.

如果你的SAS PC Files Server是64位机器,展开下面的键:HKEY_LOCAL_MACHINE►SOFTWARE►WOW6432NODE►ODBC.

如果您的SAS PC Files Server在32位机器上,展开以下密钥:HKEY_LOCAL_MACHINE►SOFTWARE►ODBC.

右键单击ODBC文件夹,选择Permissions。

确保运行SAS进程的登录ID具有完全控制权。由于来自Microsoft(特别是来自Office 2007)的较旧的ODBC驱动程序,也可能出现问题。要安装新的ODBC驱动程序,请转到Microsoft Access Database Engine 2010 Redistributable。

如果您有32位Microsoft Office,请下载AccessDatabaseEngine.exe文件。只有当您有64位版本的Microsoft Office时,才能下载其他ODBC驱动程序。

如果你想创建一个.mdb文件并使用它,那么执行以下命令

File -> Options -> General, and set the Default File Format to Access 2002-2003

并将数据库URL更改为

"jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=ratingdb.mdb;";

使用.mdb文件

要使用.accdb文件,请尝试这样做,

"jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=ratingdb.accdb;";

相关内容

  • 没有找到相关文章

最新更新