【发布时间】:2017-03-08 20:02:51
【问题描述】:
大家好,我有一个包含多个配置文件(“Admin”、“Delegate”)的应用程序,并且在我的数据库中,我有相同的用户进行操作。我想使用 ComboBox 设置数据库用户,其中用户根据用户配置文件通过我的所有数据库调用登录并使用该数据。
我的连接数据在 Connection 类 SQL 中被硬编码,例如:
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;
}
每次我使用我的 DAO 时,我都必须调用 SQL 类:
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;
}
但每次我实例化时,它都会采用硬编码值。
如何设置连接数据user 和password 覆盖 SQL 类中的“已烧毁”连接字符串?
感谢您对这位新手程序员的帮助。
【问题讨论】:
-
删除
String loggedUser = "root" ;和String loggedUserPass = "";,用user和pass代替
标签: java sql swing connection