从Java调用mysql.exe

时间:2009-02-20 17:00:53

标签: java mysql windows

我从Java调用mysql.exe来加载数据库。因为进程刚挂起,我需要创建一个命令文件并传入用户名和密码。

command.bat的示例内容:

mysql --user="%1" --password="%2" mydatabase < myscript.sql

问题是我看不到mysql命令的输出,看看是否有任何错误。它们显示在命令行上,但我似乎无法将它们捕获到文件中以进行解析或InputStream。

如何查看mysql命令的输出?

注意:直接从Java调用mysql.exe会挂起,因为mysql似乎没有将信息发送到缓冲区。

注意:我们使用mysql.exe而不是JDBC,因为我们需要更新触发器等内容。为了将所有语句提交给db,我们需要解析所有命令并一次一个地传递它们。

注意:这是一个需要升级的正在运行的MySQL数据库。

4 个答案:

答案 0 :(得分:1)

如果您只是从Java中访问此数据库,则更好的解决方案是Connector/MXJ。这将允许您简单地进行格式良好的JDBC调用,并且库将自动为您启动数据库启动。

基本上,jar文件包含mysql服务器可执行文件的实例(或者,对于多个平台,实例)。它还包含一个框架,您可以在其中为数据库加载预填充数据。

第一次访问JDBC连接时,它会将正确的mysql服务器从jar中取出,并在当前目录中创建数据库(使用上面的预填充数据)。正如预期的那样,从那一点开始的任何变化都将是持久的。

以下是更多信息:

Launching via JDBC

Launching via a Java Object

答案 1 :(得分:0)

不确定为什么无法查看其输出。尝试将其输出到文件,然后使用Java同时从文件中读取。

我自己没试过。

答案 2 :(得分:0)

你应该看看Process Builder。它可以让您处理输入/输出和错误流。

答案 3 :(得分:0)

  

问题是我看不到mysql命令的输出,看看是否有任何错误。 &GT;它们显示在命令行上,但我似乎无法在文件中捕获它们以进行解析或   的InputStream。

使用2&gt; yourfilename

E.g。

mysql --user =“%1”--password =“%2”mydatabase&lt; myscript.sql 2&gt; myoutput.txt

应该捕获STDERR(MySQL.exe在这里发送输出的地方)

E.g。

mysql --user =“%1”--password =“%2”mydatabase&lt; myscript.sql&gt; myoutput.txt 2&gt;&amp; 1

将在同一个文件中捕获STDOUT和STDERR(= myoutput.txt)。