3

私の Java アプリケーションは、ディスク上に存在する Mysql データベース ファイルに接続する必要があります。

そのためには、Mysql サーバーを起動し、サーバーを使用してファイルを読み取る必要があります。問題は、Java コード内からサーバーを起動し、Mysql ファイルを読み取り、変更を加えてからサーバーを停止する方法がわからないことです。

現在、以下のようなものを使用していますが、コードからサーバーを起動する方法がわかりません。

MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setUser("root");
dataSource.setPassword("root");
dataSource.setServerName("MysqlServer");
Connection conn = dataSource.getConnection();

これを使用して、私は遭遇します

スレッド「メイン」の例外 java.lang.RuntimeException: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 通信リンク障害

サーバーが稼働していないためだと思います。コードからサーバーを起動するにはどうすればよいですか?

4

5 に答える 5

4
  • オプション 1 : コマンド ラインから mysql を起動する方法を確認します。次に、ProcessBuilderを使用してそれを行います
  • オプション 2: 埋め込み可能なバージョンの mysql を使用します。それが適している場合: 詳細を見る
于 2013-04-24T02:01:51.000 に答える
3

mysql サーバーを起動するには、'mysqld.exe' を実行する必要があります。このファイルは、mysql メイン フォルダーの「bin」フォルダーにあります (Windows で作業していると仮定します)。私の場合は 'mysql-5.6.10-win32\bin\mysqld.exe' です。

同じことをしたい場合はJavaから-次のコードを使用しましたが、うまくいきました。それが役に立てば幸い。

================================================== ====

String command = "~path~\\mysql-5.6.10-win32\\bin\\mysqld.exe";

try
{
    Process process = Runtime.getRuntime().exec(command);
} 
catch (IOException e)
{
    e.printStackTrace();
}
于 2013-06-20T03:29:15.567 に答える
1

コンソール経由で mySQL を起動できるようにする Runtime.exec() を調べます。

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Runtime.html

于 2013-04-24T01:51:04.007 に答える
0
Runtime runTime = Runtime.getRuntime();
Process p = runTime.exec(String[] cmdarray, String[] envp, File dir);
p.waitFor();
于 2014-10-27T03:11:09.887 に答える
-3

最も簡単な方法は、JDBCを使用することです。あとは、クエリをサーバーに送信して結果を解釈するだけです。簡単な接続方法を以下に示します。

import java.sql.*;
Connection conn;
private void connect()
{
    try
    {
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        conn = DriverManager.getConnection("jdbc:mysql://serverURL","user","pass);
        System.out.println("Connection Established");
    }
    catch (Exception ex) 
    {
        System.err.println("Unable to load the MySQL driver.");
        ex.printStackTrace();
    }
于 2013-04-24T02:46:39.627 に答える