2013-09-29 3 views
0

Je suis un débutant dans l'utilisation de Java et MS Access.LoginForm: Comparer le nom d'utilisateur et mot de passe de la base de données

Fondamentalement, je dois passer un nom d'utilisateur et un mot de passe (qui est chiffré avec MD5) et le comparer avec les données dans ma table de base de données. Si elle est trouvée, elle devrait renvoyer une valeur booléenne true.

Je reçois le message d'erreur suivant:

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

Ceci est ma fonction des mots de passe de vérification:

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

double possible [ "Erreur générale Impossible d'ouvrir la clé de Registre temporaire (volatile) ..." à partir d'Access ODBC] (http://stackoverflow.com/questions/26244425/general-error-unable-to-open-registry-key-temporary-volatile-from-access) –

Répondre

2

On dirait un problème d'autorisations - vérifier cette suggestion d'un soutien MS: http://support.microsoft.com/kb/295297

Collage des sections pertinentes à partir de là, comme proposé dans le commentaire @ minitech:

Cause:

Le compte est utilisé pour accéder à la page n'a pas accès à la clé HKEY_LOCAL_MACHINE \ SOFTWARE \ clé de Registre ODBC.

Résolution:

  1. Démarrez Éditeur du Registre (Regedt32.exe).
  2. Sélectionnez la clé suivante dans le registre: HKEY_LOCAL_MACHINE \ SOFTWARE \ ODBC
  3. Dans le menu Sécurité, cliquez sur Autorisations.
  4. Saisissez les autorisations requises pour le compte qui accède à la page Web.
  5. Quittez l'Éditeur du Registre.
+0

merci. Je l'ai essayé mais la même erreur. –

0

Plusieurs choses ici.

Ce n'est pas un problème de mot de passe; C'est un problème de connexion général. Il y a quelque chose à propos du nom de fichier et du traitement des chaînes de noms de bases de données qui ne semble pas correct. Les barres obliques vont-elles dans la bonne direction? Créez un programme helloWorld avec juste la chaîne de connexion et commencez par l'exécuter.

Vous n'avez pas besoin d'appeler executeQuery() deux fois:

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

Ne fonctionne toujours pas. Je m'en suis débarrassé et pareil. Aidez-moi, s'il vous plaît –

Questions connexes