我是新來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
使用調用二者分貝類型:
public enum DBType {
HSQLDB, MYSQL
}
接着我有使用switch語句基於main method
用戶偏好不同的數據庫連接到分配的方法。這是我的文章的焦點,我必須在這裏調用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枚舉。
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();
}
}
}
}
所以......有什麼問題嗎? – Mureinik
您可能想要堅持常規的Java命名約定,例如,成員變量以小寫字母開頭。此外,像屬性這樣的東西可能希望生活在一個屬性文件,因爲有像這樣的東西的罐裝解決方案,但這是一個單獨的問題。 –
我知道並理解,那些最初是常量但我改變類型的數據成員是因爲我不能使用常量而是一種設置方法,並且忘記更改名稱格式。 Eclipse還提供了一個警告。不管怎麼說,還是要謝謝你。 – Asynchronous