Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java LoginForm:比较用户名和;来自数据库的密码_Java_Sql_Database_Ms Access - Fatal编程技术网

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

Java LoginForm:比较用户名和;来自数据库的密码,java,sql,database,ms-access,Java,Sql,Database,Ms Access,我是Java和MS Access的初学者 基本上,我需要传递用户名和密码(用MD5加密),并将其与数据库表中的数据进行比较。如果找到它,它应该返回一个布尔值true 我收到以下错误消息: 错误:java.sql.SQLException:[Microsoft][ODBC Microsoft Access驱动程序]常规错误无法打开进程0x3b0线程0xfd4 DBC 0x5a91fcc的注册表项临时(易失性)Ace DSN 这是我检查密码的功能: private boolean logChck(S

我是Java和MS Access的初学者

基本上,我需要传递用户名和密码(用MD5加密),并将其与数据库表中的数据进行比较。如果找到它,它应该返回一个布尔值true

我收到以下错误消息:

错误:java.sql.SQLException:[Microsoft][ODBC Microsoft Access驱动程序]常规错误无法打开进程0x3b0线程0xfd4 DBC 0x5a91fcc的注册表项临时(易失性)Ace DSN

这是我检查密码的功能:

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;
}

似乎是权限问题-请查看MS支持部门的建议:

按照@minitech评论中的建议,从那里粘贴相关章节:

原因:

用于访问页面的帐户无权访问HKEY\U LOCAL\U MACHINE\SOFTWARE\ODBC注册表项

分辨率:

  • 启动注册表编辑器(Regedt32.exe)
  • 在注册表中选择以下项:HKEY\U LOCAL\U MACHINE\SOFTWARE\ODBC
  • 在安全菜单上,单击权限
  • 键入访问网页的帐户所需的权限
  • 退出注册表编辑器
  • 这里有很多东西

    这不是密码问题;这是一个普遍的连接问题。文件名和数据库名称字符串的处理看起来不正确。斜线的方向正确吗?创建一个只包含连接字符串的helloWorld程序,并首先运行该程序

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


    仍然不起作用。我把它扔掉了,还是一样。请帮助我找到可能的副本
    ps.executeQuery();   // get rid of this one
    ResultSet rs = ps.executeQuery(); // leave this one.