最初に、これが何らかの形で重複していることをお詫びしますが、私はこのサイトからさまざまなことを数時間試してきましたが、運がありませんでした。そして、記録のために、私はOS X10.11.5を実行しています。
私はJDBCを使用してこの単純なアプリケーションを作成し、ローカルホストに保存されている作成したデータベースに接続しました(ヘルプがある場合はphpMyAdminを使用しています)。
@Override
public void actionPerformed(ActionEvent e) {
// The ID to search for
int search = Integer.parseInt(textField.getText());
// Setting up the connection to the database.
String url = "jdbc:mysql://my_ip_address:3306/javaDatabase";
String user = "root"; // root user
String password = ""; // no password
Connection con = null;
PreparedStatement searchID; // I used a prepared statement so I could include user input
ResultSet result = null; // results after SQL execution
try {
con = DriverManager.getConnection(url, user, password); // connect to MySQL
// Creating the prepared statement
searchID = con.prepareStatement("SELECT * FROM Names WHERE ID = ?");
// Setting the parameter to the user input
searchID.setInt(1, search);
result = searchID.executeQuery(); // execute the SQL query
while (result.next()) { // loop until the end of the results
String ID = result.getString("ID");
String FirstName = result.getString("FirstName");
String LastName = result.getString("LastName");
textArea1.setText("ID: " + ID + "\n" +
"First Name: " + FirstName + "\n" +
"Last Name: " + LastName + "\n");
}
} catch(SQLException e1) {
System.out.println("Exception caught " + e1.getMessage());
} finally {
try {
if (result != null) {
result.close();
}
if (con != null) {
con.close();
}
} catch(SQLException e2) {
System.out.println("SQLException caught " + e2.getMessage());
}
}
}
public static void main(String[] args) {
JavaWithSQL newJava = new JavaWithSQL();
}
現在、このアプリケーションを実行可能な.JARファイルとしてパッケージ化しており、他の誰かのコンピューターで実行してデータベースにアクセスし、レコードを返すことができるようにしたいと考えています。
私はこことここからの指示を試しましたが、運がありませんでした。Macでポート3306を開くことを確認しましたが、ファイアウォールがオフになっていますが、それは問題ではないようです。また、以下を使用して、問題のデータベースでGRANT特権を使用しようとしました。
GRANT ALL PRIVILEGES ON javaDatabase.* TO '%'@'%' IDENTIFIED BY '';
無駄に。ただし、次のようにコンピューターのIPアドレスを明示的に書き込むと、他のコンピューターでも機能します。
GRANT ALL PRIVILEGES ON javaDatabase.* TO 'root'@'other_computer_ip' IDENTIFIED BY '';
ただし、講師のコンピューター、理論的には他の人のコンピューターで、全員のIPアドレスを知らなくても実行できる必要があります。
これどうやってするの?私は何かが足りないのですか?
編集:
さて、私はコマンドを実行しました
GRANT SELECT ON javaDatabase.* TO 'remoteUser'@'%' IDENTIFIED BY '';
FLUSH PRIVILEGES;
これで、同じネットワークに接続されているすべてのコンピューターで完全に機能しますが、別のネットワークに接続している場合でも機能する必要があります。
私は本当にこれへのポインタが必要です。
使用しています TO '%'@'%' IDENTIFIED BY '';
それがうまくいくかどうかはわかりません。あなたの場合、rootユーザーに対応する必要があります。
GRANT ALL PRIVILEGES ON javaDatabase.* TO 'root'@'%' IDENTIFIED BY '';
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加