Hallo Leute Ich habe eine App mit mehreren Profilen ("Admin", "Delegate"), und in meiner Datenbank habe ich die gleichen Benutzer, um Operationen zu machen. Ich möchte den Datenbankbenutzer mit einer ComboBox festlegen, wo sich Benutzer anmelden und diese Daten über alle meine Datenbankaufrufe gemäß dem Benutzerprofil verwenden.Einstellung mehrerer Benutzer/Passwort für Verbindungsklasse
Meine Verbindungsdaten werden in einer Verbindungsklasse SQL hartcodiert wie:
public class SQL {
private PreparedStatement PStatement;
private Connection connection;
private String user;
private String pass;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public Connection dbConection() {
String loggedUser = "root" ;
String loggedUserPass = "";
try {
Class.forName(cf.DB_DRIVER);
connection = DriverManager.getConnection(cf.SERVER_URL + cf.SERVER_DB, loggedUser, loggedUserPass);
if (connection == null) {
throw new SQLException("Connection no established");
}
return connection;
} catch (ClassNotFoundException | SQLException e) {
JOptionPane.showMessageDialog(null, e.getMessage(), cf.WINDOW_TITLE, JOptionPane.ERROR_MESSAGE);
}
return connection;
}
Jedes Mal, wenn ich meine DAOs benutzte ich die SQL-Klasse aufrufen müssen:
public int insert(Users user) throws SQLException {
SQL sql = new SQL();
query = sql.createPStatement(cf.INSERT_USER_DATA);
query.setInt(1, user.getUserId());
query.setInt(2, user.getUserCencos());
query.setInt(3, user.getUserProfile());
query.setString(4, user.getUserPassword());
query.setString(5, user.getUserName());
query.setString(6, user.getUserPosition());
query.setString(7, user.getUserOffice());
try {
result = query.executeUpdate();
} catch (SQLException | NumberFormatException e) {
throw e;
} finally {
SQLUtils.closeQuietly(sql.dbConection());
SQLUtils.closeQuietly(query);
}
return result;
}
Aber jedes Mal instanziiert ich, es Nimmt die Hardcoded-Werte.
Wie kann ich die Connect-Daten user
und password
überschreiben die "gebrannte" Verbindung Strings in der SQL-Klasse ?.
Vielen Dank für Ihre Hilfe zu diesem Neuling Kollegen Programmierer.
Entfernen Sie 'String loggedUser =" root ";' und 'String loggedUserPass =" ";', ersetzen Sie sie stattdessen mit 'user' und' pass' – MadProgrammer