2012-09-27 12 views
8

javaコードのエクスポートとインポートを実行するには、MySQLのインストールパスを取得する必要があります。現在、Eclipseと連携しています。私は文字列変数 "mySqlPath"でインストールパスを取得する必要があります。MySQLのインストールパスを取得

File fMysqlPath = new File("C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\"); 
String executeCmd = "mysqldump -u " + Constants.DB_USER + " -p" + 
        Constants.DB_PASSWORD + " " + Constants.DB_NAME + " -r " + 
        FilePath + "\\" + FileName; 
Process runtimeProcess = Runtime.getRuntime().exec(executeCmd, null, fMysqlPath); 

これは私が行ったことです。これには依存性の問題があります。

どうすればこの問題を解決できますか?

+0

あなたはどんな問題に直面していますか? – gprathour

+0

@GPS別のシステムでプログラムを実行すると、mysqlパスにエラーが発生します。 – Gapchoos

答えて

10

は、あなたはこれを試してみました:あなたは直接のmysqlを照会し、あなたにパスを与えるために自分自身を求めることができ

import java.sql.*; 
import javax.sql.*; 

public class MysqlPathFinderDemo{ 

public static void main(String args[]){ 
String dbtime; 
String dbUrl = "jdbc:mysql://your.database.domain/yourDBname"; 
String dbClass = "com.mysql.jdbc.Driver"; 
String query = "Select * FROM users"; 

try { 

     Class.forName("com.mysql.jdbc.Driver"); 
     Connection con = DriverManager.getConnection (dbUrl); 
     Statement stmt = con.createStatement(); 
     res = Myconnection.st.executeQuery("select @@datadir"); 
     String Mysqlpath = ""; 

     while(res.next()){ 
      Mysqlpath=res.getString(1) ; 
     } 

     Mysqlpath = Mysqlpath.replace("Data", "bin"); 
     System.err.println("Mysql path is :"+a); 
    } catch(Exception ee) { 
    } 
} 
} 
+1

+1、これは良いハックです;) – Sujay

+2

代わりに@@ basedirを使用できますか? – Gapchoos

+0

@Franklinこれは例外を作成します。この場合私のMySQLパスはC:\ Documents and Settings \ All Users \ Application Data \ MySQL \ MySQL Server 5.5 \ binです。 replaceステートメントは、Application DataとしてApplication Dataを置き換えます。 – Gapchoos

3

SHOW VARIABLES LIKE 'basedir'; 

またはより簡単に、

SELECT @@basedir; 

を与える必要がありますあなたにはインストールパスがあります。

します。C:\ Program Files \ MySQLの\ MySQLサーバ5.1 \

datadirは、(データがある)データディレクトリのパスを取得することと同じです。どちらも、のようなものになるはずです

関連する問題