Как динамически изменить IP и PORT класса Java Database Connection? - PullRequest
1 голос
/ 11 февраля 2012

Я создал класс Java для , подключающийся к базе данных MySQL для моего приложения Java SWING.

public class DB1 {

private static Connection c;

public static Connection getMyConnection() throws Exception {
    if (c == null) {
        JTextField myUserNameTextField = new JTextField();
        JTextField myPasswordTextField = new JTextField();
        JTextField myIPTextField = new JTextField();
        JTextField myPortTextField = new JTextField();
        String myUserName = myUserNameTextField.getText();
        String myPassword = myPasswordTextField.getText();
        String myURL = "jdbc:mysql:// " + myIPTextField.getText() + ":" + myPortTextField.getText() + "/DBName";

        Class.forName("com.mysql.jdbc.Driver");

        c = DriverManager.getConnection(myURL, myUserName, myPassword);
    }
    return c;

}

public static void InsertEditDelete(String sql) throws Exception {
    getMyConnection().createStatement().executeUpdate(sql);
}

public static ResultSet Search(String sql) throws Exception {
    return getMyConnection().createStatement().executeQuery(sql);
}
}

Я хочу динамически изменить IP , который здесь localhost и номер порта из Jtextfields , поэтому вы не перекомпилируете каждый раз, когда u change IP и номер порта. Эти поля JText должны открыться в JFRAME

Ответы [ 4 ]

2 голосов
/ 11 февраля 2012
ResultSet rs = st.executeQuery("SELECT username, password, host, port FROM  myAllData where id=1");

String myURL = "jdbc:mysql:// " + rs.getString("host") + ":" + rs.getString("port") + "/DBName"
String myUserName = rs.getString("username");
String myPassword = rs.getString("password");

Class.forName("com.mysql.jdbc.Driver");

c = DriverManager.getConnection(myURL, myUserName, myPassword);

Обновление 1

Если вам нужно JTextField, используйте ниже.

String myUserName = myUserNameTextField.getText();
String myPassword = myPasswordTextField.getText();
String myURL = "jdbc:mysql:// " + myIPTextField.getText() + ":" + myPortTextField.getText() + "/DBName"

Class.forName("com.mysql.jdbc.Driver");

c = DriverManager.getConnection(myURL, myUserName, myPassword);

Удачи !!!

1 голос
/ 11 февраля 2012

Примерно так и должно быть:

String host = textFieldHost.getText();
String port = textFieldPort.getText();

DriverManager.getConnection(String.format("jdbc:mysql://%s:%s/DBName",host,port), "root", "123");
1 голос
/ 11 февраля 2012

Вы можете поместить эти настройки в файл .properties или XML, а затем прочитать их при необходимости.

Эта ссылка должна помочь

http://docs.oracle.com/javase/6/docs/api/java/util/Properties.html

0 голосов
/ 11 февраля 2012

Просто используйте конкатенацию строк

String host = ...
int port = ...
String jdbcurl = "jdbc:mysql://" + host + ":" + port + "/DBName";
DriverManager.getConnection(jdbcurl,"root","123");
...