我正在尝试创建一个程序来读取数据库并输出它。我已经按照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.
这是否意味着我使用的驱动程序不存在?
答案 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;";