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

时间:2014-05-09 11:03:12

标签: java ms-access jdbc odbc jdbc-odbc

我正在尝试创建一个程序来读取数据库并输出它。我已经按照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());
    }



}

} 在Black Panther的评论之后,我收到了这个错误: 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

编辑:发生了新的错误:Exception: [Microsoft][ODBC Microsoft Access Driver] Not a valid file name.这是否意味着我使用的驱动程序不存在?

1 个答案:

答案 0 :(得分:3)

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

您应该执行类似的操作,以便在控制台中打印例外。

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文件服务器位于64位计算机上,请展开以下项:   HKEY_LOCAL_MACHINE►软件►WOW6432NODE►ODBC。

     

如果您的SAS PC文件服务器位于32位计算机上,请展开以下项:   HKEY_LOCAL_MACHINE►软件►ODBC。

     

右键单击ODBC文件夹,然后选择“权限”。

     

确保运行SAS进程的登录ID具有完全控制权。   由于Microsoft的旧ODBC驱动程序,特别是来自Office 2007,可能还会出现问题。   要安装较新的ODBC驱动程序,请转到Microsoft Access数据库引擎2010可再发行组件。

     

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

如果您尝试创建.mdb文件并使用它,请执行此操作

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

将数据库网址更改为

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

使用.mdb文件。

要使用.accdb文件,请尝试执行此操作,

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