LoginForm:比较用户名和&来自数据库的密码

时间:2013-09-29 13:53:46

标签: java sql database ms-access

我是使用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;
}

2 个答案:

答案 0 :(得分:2)

似乎是权限问题 - 请查看MS支持中的此建议: http://support.microsoft.com/kb/295297

根据@ minitech的评论中提出的那样,从那里粘贴相关部分:

<强>原因:

用于访问该页面的帐户无权访问HKEY_LOCAL_MACHINE \ SOFTWARE \ ODBC注册表项。

解决:

  1. 启动注册表编辑器(Regedt32.exe)。
  2. 在注册表中选择以下项:HKEY_LOCAL_MACHINE \ SOFTWARE \ ODBC
  3. 在“安全性”菜单上,单击“权限”。
  4. 键入访问网页的帐户所需的权限。
  5. 退出注册表编辑器。

答案 1 :(得分:0)

这里有多件事。

这不是密码问题;这是一般的连接问题。有一些关于文件名和数据库名称字符串的工作,看起来不正确。斜线是否朝着正确的方向发展?用连接字符串创建一个helloWorld程序,然后先运行它。

您不需要两次调用executeQuery():

ps.executeQuery();   // get rid of this one
ResultSet rs = ps.executeQuery(); // leave this one.