2012-09-27 187 views
8

我需要获取MySQL的安装路径才能执行导出并通过java代码导入数据库。目前正在使用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

你有没有尝试过这样的:

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;替换语句将Application Data替换为Application bin。 – Gapchoos

3

您可以直接查询和mysql问自己,给你的路径:

SHOW VARIABLES LIKE 'basedir'; 

或更容易,

SELECT @@basedir; 

应该给你的安装路径。双方应该导致这样的:

C:\ Program Files文件\的MySQL \ MySQL服务器5.1 \

datadir是等于拿到数据目录(数据所在)的路径。