Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用Java编程启动Mysql服务器?_Java_Mysql_Jdbc - Fatal编程技术网

如何用Java编程启动Mysql服务器?

如何用Java编程启动Mysql服务器?,java,mysql,jdbc,Java,Mysql,Jdbc,我的Java应用程序需要连接到磁盘上的Mysql数据库文件 为此,它需要启动一个Mysql服务器并使用该服务器读取文件。问题是,我不知道如何从Java代码中启动服务器,读取Mysql文件,对其进行修改,然后停止服务器 目前,我正在使用下面这样的东西,但我没有看到从代码启动服务器的方法 MysqlDataSource dataSource = new MysqlDataSource(); dataSource.setUser("root"); dataSource.setPassword("roo

我的Java应用程序需要连接到磁盘上的Mysql数据库文件

为此,它需要启动一个Mysql服务器并使用该服务器读取文件。问题是,我不知道如何从Java代码中启动服务器,读取Mysql文件,对其进行修改,然后停止服务器

目前,我正在使用下面这样的东西,但我没有看到从代码启动服务器的方法

MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setUser("root");
dataSource.setPassword("root");
dataSource.setServerName("MysqlServer");
Connection conn = dataSource.getConnection();
用这个,我遇到了

线程“main”java.lang.RuntimeException中出现异常:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障

我想这是因为服务器没有启动。如何从代码启动服务器?

查看Runtime.exec(),它将允许您通过控制台启动mySQL

  • 选项1:了解如何从命令行启动mysql。那就用它来做吧
  • 选项2:使用可嵌入版本的mysql ,如果你觉得合适的话:看
最简单的方法是使用所有需要执行的操作,然后将查询发送到服务器并解释结果。下面是一个简单的连接方法

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();
    }

您需要运行“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();
}

1) 我建议使用
ProcessBuilder
而不是
Runtime.exec()
2)尝试在回答中链接到更为最新的文档。现在,您正在链接到Java1.5Fair。这只是谷歌最早出现的Java文档链接,在1.7版本中仍然可以使用。如果mysql是手动启动的,你能运行这个应用程序吗?网络错误可能来自防病毒软件/防火墙etc@yan:是的,如果mysql服务器正在运行,应用程序就可以工作。@Sai:我正在使用OSX,但正在寻找一种平台独立的解决方案。如果您希望平台独立,为什么不使用Apache Derby而不是mysql?这要求服务器正在运行。他需要开始。
Runtime runTime = Runtime.getRuntime();
Process p = runTime.exec(String[] cmdarray, String[] envp, File dir);
p.waitFor();