LoginForm: Vergleichen Sie Benutzername & Passwort aus der Datenbank
Ich bin ein Anfänger in der Verwendung von Java und MS Access.
Eigentlich übergeben müssen einen Benutzernamen und ein Passwort (was wird verschlüsselt mit MD5) und vergleicht ihn mit den Daten in meiner Datenbank-Tabelle. Wenn es gefunden wird, es sollte einen booleschen Wert zurückgeben wahr.
Bekomme ich die folgende Fehlermeldung:
FEHLER: java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]allgemeiner Fehler Unable to open registry key Temporary (volatile) Ace-DSN for process 0x3b0 Thread 0xfd4 DBC 0x5a91fcc
Dies ist meine Funktion zum überprüfen von Passwörtern:
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;
}
- möglich, Duplikat der "General error Unable to open registry key Temporary (volatile) ..." von Access-ODBC
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint ein Berechtigungs-Problem - check-out dieser Vorschlag vom MS support:
http://support.microsoft.com/kb/295297
Einfügen relevante Abschnitte gibt es, wie vorgeschlagen, @minitech Kommentar:
Ursache:
Das Konto, das verwendet wird, um Zugriff auf die Seite keinen Zugriff auf den HKEY_LOCAL_MACHINE\SOFTWARE\ODBC-Registrierungsschlüssel.
Auflösung:
Mehrere Dinge hier.
Es ist kein Passwort-problem ist; es ist ein Allgemeines Verbindungsproblem. Es ist etwas über die Dateinamen und der Datenbank-name string Aufarbeitung, die nicht richtig Aussehen. Sind die Schrägstriche in die richtige Richtung gehen? Erstellen Sie ein helloWorld-Programm mit nur den connection string und das läuft erste.
Brauchen Sie nicht zu rufen executeQuery() zweimal auf: