Arbeiten mit Java-Datenbank - Java, Datenbank, Nullpointerexception, Verbindung

Ich erstelle ein Java-Programm, das einen Benutzer benötigtum Zugangsdaten anzugeben, bevor Sie Zugang erhalten. Ich arbeite mit einer JavaDB, die ich die Daten in einer Tabelle namens LOGIN_DETAILS gespeichert habe, ich habe eine erfolgreiche Verbindung, aber das Problem ist, wenn ich das Programm ausführen, erhalte ich diesen Fehler:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Classes.Login.bActionPerformed(Login.java:188)

und login.java:188 Code ist: Statement st = con.createStatement();

Unten ist mein vollständiger Code;

    public void connect(){
try{
String host = "jdbc:derby://localhost:1527/db1";
String uName = "";
String uPass = "";
con = DriverManager.getConnection(host, uName, uPass);

}

catch(SQLException ex){
}

}

try{

Statement st = con.createStatement();
Menu MM = new Menu();
String user = t.getText().trim();
String pass = t1.getText().trim();

String sql = "SELECT USERNAME, PASSWORD FROM "
+ "APP.LOGIN_DETAILS WHERE "
+ "USERNAME =""+user+""PASSWORD =""+pass+""";
ResultSet rs = st.executeQuery(sql);

int count = 0;
while(rs.next()){
count = count + 1;
}

if(count ==1){
JOptionPane.showMessageDialog(null, "User Found, Access Granted");
this.dispose();
MM.setVisible(true);
}

else if(count > 1){
JOptionPane.showConfirmDialog(null, "Duplicate User, Access Denied");
this.setVisible(true);
}
else{
JOptionPane.showMessageDialog(null,"User not Found");
this.setVisible(true);
}
}

catch(SQLException | HeadlessException ex){
}

Bitte helfen Sie mir bei der Lösung des Problems, danke.

Antworten:

1 für die Antwort № 1

Es sei denn, dieses Codewort erscheint woandersscheint, dass Sie die Methode connect () (die die Verbindung einrichtet) nicht aufgerufen haben, bevor Sie createStatement () on con aufrufen. Somit deutet con wahrscheinlich immer noch auf Null an diesem Punkt. Wenn das der Fall ist, würde es die Ausnahme erklären.


0 für die Antwort № 2

con Es ist sehr wahrscheinlich, dass in dieser Situation aufgrund von connect() nicht angerufen werden. Obwohl, vielleicht connect() wird gerufen und da ist ein SQLException Ausnahme, die still gefangen wird. In den meisten Fällen ist es eine schlechte Idee, eine Ausnahme zu erfassen und nichts dagegen zu tun. Minimal sollten Sie log the exception.

Auch das ist falsch

String sql = "SELECT USERNAME, PASSWORD FROM "
+ "APP.LOGIN_DETAILS WHERE "
+ "USERNAME =""+user+""PASSWORD =""+pass+""";

Versuchen

String sql = "SELECT USERNAME, PASSWORD FROM "
+ "APP.LOGIN_DETAILS WHERE "
+ "USERNAME = "" +user+ " and "PASSWORD =""+pass+""";

Verwandte Fragen
Speisekarte