我正在尝试创建一个程序,将读取数据库并输出它。我遵循了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;";