我是使用Java和MS Access的初学者。
基本上,我需要传递用户名和密码(使用MD5加密)并将其与数据库表中的数据进行比较。如果找到,则应返回布尔值true。
我收到以下错误消息:
错误:java.sql.SQLException:[Microsoft] [ODBC Microsoft Access驱动程序]常规错误无法打开注册表项临时(易失性)Ace DSN进程0x3b0线程0xfd4 DBC 0x5a91fcc
这是我检查密码的功能:
private boolean logChck(String username, String password)
{
String query;
boolean login = false;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String filename = "D:/Sand/program/JavaNetbeans/AllCodesHere/TestingCode/src/TestingCode/HotMan2.accdb";
String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=";
database+= filename.trim() + ";DriverID=22;READONLY=true}";
connection = DriverManager.getConnection( database ,"","");
query = "SELECT (StfFirName, StfPassword) FROM Staff WHERE (StfFirName = ? AND StfPassword = ?)";
PreparedStatement ps = connection.prepareStatement(query);
ps.setString(1, username);
ps.setString(2, password);
ps.executeQuery();
ResultSet rs = ps.executeQuery();
String checkUser = rs.getString(1);
String checkPass = rs.getString(2);
if((checkUser.equals(username)) && (checkPass.equals(password)))
{
login = true;
}
else
{
login = false;
}
connection.close();
}
catch (Exception err) {
System.out.println("ERROR: " + err);
}
return login;
}
答案 0 :(得分:2)
似乎是权限问题 - 请查看MS支持中的此建议: http://support.microsoft.com/kb/295297
根据@ minitech的评论中提出的那样,从那里粘贴相关部分:
<强>原因:强>
用于访问该页面的帐户无权访问HKEY_LOCAL_MACHINE \ SOFTWARE \ ODBC注册表项。
解决:强>
答案 1 :(得分:0)
这里有多件事。
这不是密码问题;这是一般的连接问题。有一些关于文件名和数据库名称字符串的工作,看起来不正确。斜线是否朝着正确的方向发展?用连接字符串创建一个helloWorld程序,然后先运行它。
您不需要两次调用executeQuery():
ps.executeQuery(); // get rid of this one
ResultSet rs = ps.executeQuery(); // leave this one.