如何更改数据库连接以创建Java应用程序的安装程序?

时间:2014-05-05 09:41:50

标签: java mysql

我在netbeans中创建了一个连接到localhost Mysql数据库的java应用程序。

-----------------------------------连接代码--------- ---------------------------------

public static Connection getConexao()throws SQLException{
        try{
            Class.forName("com.mysql.jdbc.Driver");
            return DriverManager.getConnection("jdbc:mysql://localhost/World","root", "root");
        }catch(ClassNotFoundException e) {
            throw new SQLException(e.getMessage());
        }
    }

我希望我的应用程序已在多台计算机上使用,但由于数据库被视为localhost,我不知道如何更改此设置以使其不能仅在我的计算机上使用。

任何人都可以帮助我或提供一些提示,以便您可以解决我的问题吗? 抱歉我的英文。

我不知道自己是否解释得很好,但有任何疑问,请不要犹豫。

ps:基本上认为qa解决方案将是改变链接数据库,但我不确定,不确定这将解决我的问题。所以我在寻求帮助。

对于给您带来的不便,我深表歉意 谢谢你们。

问候

2 个答案:

答案 0 :(得分:0)

您可以使用main方法创建一个类,该方法接受数据库连接设置的命令行参数

相应地,您的数据库设置将被更改,您将能够连接到任何MySQL

您可以从键盘获取输入并传递这些值以获取数据库连接

    package in.sblog.db;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ReadDBSettings {

  /**
   * @param args
   */
  public static void main(String[] args) {

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    String connectionURL = null;
    String username = null;
    String password = null;

    try {
      System.out.print("Enter your DB connection URL: ");
      connectionURL = br.readLine();
      System.out.print("Enter your DB username: ");
      username = br.readLine();
      System.out.print("Enter your DB password: ");
      password = br.readLine();
      System.out.println("connectonURL:" + connectionURL + ", username:" + username + ", password:" + password);
      try {
        Connection conn = getConexao(connectionURL, username, password);
        //do your code
      } catch (SQLException e) {
        e.printStackTrace();
      }
    } catch (IOException ioe) {
      ioe.printStackTrace();
      System.exit(1);
    }
  }

  public static Connection getConexao(String connectionURL, String username, String password) throws SQLException {
    try {
      Class.forName("com.mysql.jdbc.Driver");
      return DriverManager.getConnection("jdbc:mysql://" + connectionURL, username, password);
    } catch (ClassNotFoundException e) {
      throw new SQLException(e.getMessage());
    }
  }

}

答案 1 :(得分:0)

基本上你需要的是动态值:

  • 数据库主机/名称
  • 用户
  • 密码

您可以更改方法,以便将这些值作为参数并构建连接字符串:

public static Connection getConnection(String host, String user, String pwd)
{
        String dbHost = "jdbc:mysql://" + host;   //needs checking etc, error handling
        Class.forName("com.mysql.jdbc.Driver");
        return DriverManager.getConnection(dbHost, user, pwd);
}

从哪里获得这些价值并不重要。您可以从命令行从配置文件(属性)中读取它们,或者创建某种GUI,用户可以在其中输入值。

从命令行读取参数的示例。当您启动程序时,只需在程序名称后面添加空格分隔的三个值。 例如,如果你的程序在jar文件中:

java -jar MyDatabaseTest.jar localhost/World root rootPwd

然后在你的主要方法中读取这些值:

public static void main(String[] args)
{
   //first check length/null of args etc.
   String host = args[0];
   String user = args[1];
   String pwd = args[2];

   Connection con = YourDatabaseClass.getConnection(host, user, pwd);
}