2013-04-24 111 views
2

我的Java應用程序需要連接到存在於磁盤上的Mysql數據庫文件。如何以編程方式啓動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:通信鏈路故障

我認爲這是因爲服務器沒有啓動。我如何從代碼啓動服務器?

+0

是你能如果MySQL手動啓動運行應用程序?網絡錯誤可能來自防病毒軟件/防火牆等。 – Jayan 2013-04-24 02:04:16

+0

您使用哪種操作系統? – 2013-04-24 02:08:21

+0

@yan:是的,如果mysql服務器正在運行,該應用程序將工作。 – Moeb 2013-04-24 02:13:46

回答

1

查看Runtime.exec(),它將允許您通過控制檯啓動mySQL。

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

+3

1)我會推薦使用'ProcessBuilder'而不是'Runtime.exec()'2)嘗試在答案中鏈接到更新的文檔。現在,你鏈接到Java 1.5 – syb0rg 2013-04-24 01:56:48

+0

足夠公平。它僅僅是谷歌首先推出的Java Doc鏈接,在1.7版本中仍然是一樣的。 – MarsAtomic 2013-04-24 06:40:50

4
  • 選項1:瞭解如何啓動命令行的MySQL。然後使用ProcessBuilder
  • 選項2:mysql的 使用嵌入式版本,如果適合你:見details
-1

最簡單的方法是使用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(); 
    } 
+3

這需要服務器正在運行。他需要開始它。 – 2013-04-24 03:11:24

1

您需要運行'mysqld.exe'來啓動mysql服務器。這個文件可以在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(); 
} 
0
Runtime runTime = Runtime.getRuntime(); 
Process p = runTime.exec(String[] cmdarray, String[] envp, File dir); 
p.waitFor(); 
相關問題