2014-09-22 91 views
0

我試圖使用過程EXEC從Java運行MySQL失敗

代碼運行的Java進程MySQL命令:

String s = "mysql -h192.168.0.1 -u USER -PASSWORD DB_NAME-e \"select * from table\" 
System.out.println(s); 
Process p = r.exec(s); 
p.waitFor(); 

當我從命令行運行它的偉大工程的SQL查詢,但是從Java進程中,我得到' 用法:mysql [選項] [數據庫] ...與所有MySql選項。

沒有-e參數它似乎工作,沒有錯誤,但當然沒有發生。 在Win &機器上它的功能也很棒,而不是在部署Linux機器上。

任何想法我做錯了什麼?使用MySQL的Java

回答

1

實施例:

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.sql.ResultSet; 

// assume that conn is an already created JDBC connection (see previous examples) 

Statement stmt = null; 
ResultSet rs = null; 

try { 
    stmt = conn.createStatement(); 
    rs = stmt.executeQuery("SELECT foo FROM bar"); 

    // or alternatively, if you don't know ahead of time that 
    // the query will be a SELECT... 

    if (stmt.execute("SELECT foo FROM bar")) { 
     rs = stmt.getResultSet(); 
    } 

    // Now do something with the ResultSet .... 
} 
catch (SQLException ex){ 
    // handle any errors 
    System.out.println("SQLException: " + ex.getMessage()); 
    System.out.println("SQLState: " + ex.getSQLState()); 
    System.out.println("VendorError: " + ex.getErrorCode()); 
} 
finally { 
    // it is a good idea to release 
    // resources in a finally{} block 
    // in reverse-order of their creation 
    // if they are no-longer needed 

    if (rs != null) { 
     try { 
      rs.close(); 
     } catch (SQLException sqlEx) { } // ignore 

     rs = null; 
    } 

    if (stmt != null) { 
     try { 
      stmt.close(); 
     } catch (SQLException sqlEx) { } // ignore 

     stmt = null; 
    } 
} 

here兩者。

+0

謝謝,我有很多Java代碼連接到MySql。但現在需要yse axec sinnce我不能使用java代碼來連接數據庫 – Arnold 2014-09-22 17:06:08

1

試試這個,看看它是否有助於你的努力

http://pastebin.com/XpRyGQBq

用法:
                  DBConnectionHandler |新DBConnectionHandler(的ConnectionURL,用戶名*,密碼*)
                 的ResultSet | +查詢(字符串sqlStatementGoesHere)
                 無效| +更新(字符串sqlStatementGoesHere)
                 的ResultSet | + getTables()

*表示可選

+0

謝謝,但我需要使用MySql作爲外部過程,而不是使用java代碼。 – Arnold 2014-09-22 17:08:26

+0

您已經引用了[JavaDocs](http://docs.oracle.com/javase/8/docs/api/java/lang/Process.html)的權利? – 2014-09-22 17:14:28

+0

當然,正如我寫的,如果我刪除了它的作品-e參數,錯誤不在java代碼中,而是在我假設的Mysql命令中。 – Arnold 2014-09-22 17:18:47