我在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解决方案将是改变链接数据库,但我不确定,不确定这将解决我的问题。所以我在寻求帮助。
对于给您带来的不便,我深表歉意 谢谢你们。
问候
答案 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);
}