Moin liebe Gemeinde,
kann mir evtl jemand auf die Sprünge helfen warum ich bei dem Login scheinbar keine DB Verbindung bekomme aber über den Check den ich vor dem Login mache um die Verfügbarkeit der DB anzuzeigen schon?
Stehe anscheinend mal wieder auf dem Schlauch. Vielleicht ist es auch die müssige Code Blindheit die ich manchmal habe und ich verpasse mir später ein facepalm.
Danke schon mal vorab für jede Reaktion. Ich bin übrigens auch an sonstiger Kritik zu meinem Code interessiert.
Das hier ist die Klasse die ich für die MySQL DB erstellt habe. Diese benutze ich bei dem nächsten Codeblock unterhalb der die DB Verfügbarkeit vorab prüft:
Das hier ist der Part der augenscheinlich bei der Initialisierung funktioniert.
Ich bekomme die Meldung "DB Server: checked!".
Das hier ist die Klasse mit der ich prüfe ob der Login korrekt ist.
Und das hier ist der Part der augenscheinlich nicht funktioniert. Ich bekomme vom sysout ein False zurück, da connection laut Debugger null zurückliefert.
Ach so: Die userString und passwordString habe ich korrekt eingegeben.
(Das new Datenbank() und das new LoginModel() rufe ich natürlich oberhalb aller hier aufgeführten Methoden auf)
Noch mal vielen Dank an jeden der sich bis hier her durchgequält hat.
kann mir evtl jemand auf die Sprünge helfen warum ich bei dem Login scheinbar keine DB Verbindung bekomme aber über den Check den ich vor dem Login mache um die Verfügbarkeit der DB anzuzeigen schon?
Stehe anscheinend mal wieder auf dem Schlauch. Vielleicht ist es auch die müssige Code Blindheit die ich manchmal habe und ich verpasse mir später ein facepalm.
Danke schon mal vorab für jede Reaktion. Ich bin übrigens auch an sonstiger Kritik zu meinem Code interessiert.
Das hier ist die Klasse die ich für die MySQL DB erstellt habe. Diese benutze ich bei dem nächsten Codeblock unterhalb der die DB Verfügbarkeit vorab prüft:
Code:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Datenbank {
public static final String DB_SERVER = "localhost:3306";
public static final String DB_NAME = "meinDBName";
public static final String DB_USERNAME = "meinDBUsername";
public static final String DB_PASSWORD = "meinDBPasswort";
public static final String DB_CONNECTION_STRING = "jdbc:mysql://" + DB_SERVER + "/" + DB_NAME;
private Connection connection;
public boolean open() {
try {
Connection connection = DriverManager.getConnection(DB_CONNECTION_STRING, DB_USERNAME, DB_PASSWORD);
return true;
} catch (SQLException e) {
return false;
}
}
public Connection getConnection() {
return connection;
}
}
Das hier ist der Part der augenscheinlich bei der Initialisierung funktioniert.
Ich bekomme die Meldung "DB Server: checked!".
Code:
@Override
public void initialize(URL location, ResourceBundle resources) {
btn_login.setDisable(true);
boolean isConnected = database.open();
if (isConnected) {
lbl_available.setTextFill(Color.web("GREEN"));
lbl_available.setText("DB Server: checked!");
} else {
lbl_available.setTextFill(Color.web("RED"));
lbl_available.setText("DB Server: failed!");
}
}
Das hier ist die Klasse mit der ich prüfe ob der Login korrekt ist.
Code:
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class LoginModel {
public boolean isLogin(String username, String password, Connection connection) throws Exception {
PreparedStatement ps = null;
ResultSet rs = null;
String sql = "SELECT * FROM login WHERE user = ? AND password = ?";
try {
ps = connection.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, password);
rs = ps.executeQuery();
return true;
} catch (Exception e) {
return false;
}
}
}
Und das hier ist der Part der augenscheinlich nicht funktioniert. Ich bekomme vom sysout ein False zurück, da connection laut Debugger null zurückliefert.
(Das new Datenbank() und das new LoginModel() rufe ich natürlich oberhalb aller hier aufgeführten Methoden auf)
Code:
Datenbank database = new Datenbank();
LoginModel loginModel = new LoginModel();
@FXML
void action_btn_login(ActionEvent event) {
String userString = txtUsername.getText();
String passwordString = txtPassword.getText();
Connection connection = database.getConnection();
try {
boolean loggedIn = loginModel.isLogin(userString, passwordString, connection);
System.out.println(loggedIn); // LIEFERT FALSE ZURÜCK :-(
} catch (Exception e) {
e.printStackTrace();
}
}
Noch mal vielen Dank an jeden der sich bis hier her durchgequält hat.