2013-09-29 56 views
0

我是使用Java和MS Access的初學者。LoginForm:比較數據庫中的用戶名和密碼

基本上,我需要傳遞一個用戶名和密碼(用MD5加密),並將其與我的數據庫表中的數據進行比較。如果找到了,它應該返回一個布爾值true。

我收到以下錯誤信息:

ERROR: java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x3b0 Thread 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

的可能重複[「常規錯誤無法打開註冊表項臨時(揮發性)......」從訪問ODBC(HTTP:/ /stackoverflow.com/questions/26244425/general-error-unable-to-open-registry-key-temporary-volatile-from-access) –

回答

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. 退出註冊表編輯器。
+0

謝謝。我嘗試過,但同樣的錯誤。 –

0

這裏有很多東西。

這不是密碼問題;這是一個普遍的連接問題。有一些關於文件名和數據庫名稱字符串處理看起來不正確。斜槓是否朝着正確的方向發展?用連接字符串創建一個helloWorld程序,並首先運行。

你並不需要調用的executeQuery()兩次:

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

仍然無法正常工作。我擺脫了它,也一樣。請幫幫我 –

相關問題