java使用单独的类从Get和Set方法获取值
我是新来的Java
我有下面的程序,它使用Enum
调用不同的数据库连接来连接不同的数据库
我需要将凭证、用户名和密码单独放在一个类中,但我不确定,因为它们都是使用get和set初始化的,我唯一能让它工作的方法是用同一个方法调用它们
首先,我有一个初始化连接字符串和数据元素的类
class DatabaseUtility {
private String USERNAME;
private String PASSWORD;
private String HSQLDB;
private String MYSQL;
public DatabaseUtility() {
USERNAME = null;
PASSWORD = null;
HSQLDB = null;
MYSQL = null;
}
public String getUsername() {
return USERNAME;
}
public void setUsername(String username) {
USERNAME = username;
}
public String getPassword() {
return PASSWORD;
}
public void setPassword(String password) {
PASSWORD = password;
}
public String getHsdbConn() {
return HSQLDB;
}
public void setHsdb(String hsdbConnection) {
HSQLDB = hsdbConnection;
}
public String getMySqlConn() {
return MYSQL;
}
public void setMySqlConn(String mySqlConnection) {
MYSQL = mySqlConnection;
}
}
接下来我有一个enum
用于调用这两种db类型:
public enum DBType {
HSQLDB, MYSQL
}
接下来我有一个方法,它使用switch语句根据main method
中的用户偏好分配不同的db连接
*这是我帖子的重点,我必须在这里同时调用get和set方法,我不想在同一个方法中设置凭据,但不确定如何将两者分开
import java.sql.*;
class DatabaseConnectivity {
DatabaseUtility dbUtil = new DatabaseUtility();
public Connection getConnection(DBType dbType) throws SQLException {
dbUtil.setHsdb("jdbc:hsqldb:data/explorecalifornia");
dbUtil.setMySqlConn("jdbc:mysql://jsa/explorecalifornia");
dbUtil.setUsername("dbuser");
dbUtil.setPassword("dbpassword");
switch (dbType) {
case MYSQL:
return DriverManager.getConnection(dbUtil.getMySqlConn(),
dbUtil.getUsername(), dbUtil.getPassword());
case HSQLDB:
return DriverManager.getConnection(dbUtil.getHsdbConn(),
dbUtil.getUsername(), dbUtil.getPassword());
default:
return null;
}
}
}
最后,这里是主类,请注意try catch block
中调用的DBType enum
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class MultiDatabaseConnectionMain {
public static void main(String[] args) throws SQLException {
DatabaseConnectivity databaseConnectivity = new DatabaseConnectivity();
Connection connection = null;
Statement statement = null;
ResultSet resultset = null;
try {
connection = databaseConnectivity.getConnection(DBType.MYSQL);
System.out.println("Connected");
System.out.println();
statement = connection.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
resultset = statement.executeQuery("SELECT * FROM states");
resultset.last();
System.out.println("Number of rows: " + resultset.getRow());
} catch (SQLException e) {
System.err.println(e);
} finally {
if (resultset != null) {
resultset.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
}
}
}
# 1 楼答案
我不是100%确定,但我认为您要问的是必须调用dbUtil。set*和dbUtil。用同样的方法
我建议您使用db属性创建enum,这样无论传递给参数的dbType是什么,您都可以对它们调用getter。您可以如下定义枚举
在DatabaseConnectivity中,getConnection方法