テスト目的でコンピュータに簡単なデータベースがあり、ノートパソコンからデータベースから情報を取得しようとしています。だから私は私のコンピュータのMySQLデータベース内の情報を見るように私のラップトップに要求する。以下は、自分のコンピュータにあるstudentsテーブルの最初のエントリを収集するためにラップトップで実行しようとしているJavaコードを示しています。java SQLコネクタを使用して別のコンピュータのデータベースに接続する方法
私は自分のラップトップとコンピュータの両方にMySQLワークベンチをインストールしています。コンピュータがデータを保存し、ラップトップだけがデータを抽出する場合、両方のマシンにいる必要があります。
私がこれまで研究して学んだことは、コンピュータのIPの代わりにURLでパブリックIPを使用する必要があることです。そのために追加しましたが、「Connection timed out」スタックトレース私はthisの回答とthisの回答を読んだことがありますが、両方の解決策を理解するのが難しく、MySQLを使用してデータベースからリモートでデータにアクセスするための初心者ガイドを参照できます。私はMySQLのワークベンチは私のラップトップとコンピュータの両方にインストールされている
public class TestRemote{
//JDBC variables
Connection connection;
Statement statement;
ResultSet resultSet;
//String variables
String url;
String user;
String password;
public static void main(String[] args) {
TestRemote sql = new TestRemote();
ArrayList<String> firstnames = sql.getColumn("students", "firstname", "studentid=4");
System.out.println(firstnames.get(0));
}
// Constructor
public TestRemote()
{
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
System.out.println("couldnt find class");
}
url = "jdbc:mysql://81.159.3.167:3306/test"; //?autoReconnect=true&useSSL=false";
user = "user";
password = "pass123";
connection = null;
statement = null;
resultSet = null;
}
private void closeConnection(){
try{
if(connection != null)
connection.close();
if(statement != null)
statement.close();
if(resultSet != null)
resultSet.close();
connection=null; resultSet=null; statement=null;
}catch(Exception e){
e.printStackTrace();
}
}
public ArrayList<String> getColumn(String table, String column, String where) {
ArrayList<String> resultsArray = new ArrayList<String>();
try {
connection = DriverManager.getConnection(url, user, password);
statement = connection.createStatement();
if(!where.equals(""))
resultSet = statement.executeQuery("SELECT "+column+" FROM "+table + " WHERE "+where);
else
resultSet = statement.executeQuery("SELECT "+column+" FROM "+table);
while(resultSet.next()) {
String val = resultSet.getString(1);
if(val==null)
resultsArray.add("");
else
resultsArray.add(val);
}
//resultsArray = (ArrayList<String>) resultSet.getArray(column);
} catch (SQLException ex) {
Logger lgr = Logger.getLogger(Model.class.getName());
lgr.log(Level.SEVERE, ex.getMessage(), ex);
}
closeConnection();
return resultsArray;
}
}
*両方のラップトップにインストールされたMySQLワークベンチ* - あなたはワークベンチではなく、接続するためにMySQLデータベースが必要です。また、1つだけで問題ありません。 Secondは、そのIPアドレスを使用して同じネットワーク上でアクセスすることができます。 – GurV