如何使用Java Process读取mysql控制台输出

时间:2012-05-31 11:44:50

标签: java mysql windows console

我目前正在使用Java编写Windows shell模拟器。当我使用Process.getOutputStream()方法读取和显示程序的输出时,大多数程序似乎工作正常。当我从我的程序运行MySql控制台时,这似乎不适用。 MySql似乎没有打印到默认的系统控制台。

如何挂钩到MySql控制台以显示其输出并允许用户通过我的模拟器提供输入?

1 个答案:

答案 0 :(得分:0)

我认为有两个问题需要管理。第一个是救援输出,你可以使用这篇文章(http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.htm)来了解救援输出的方法。 所以我使用命令行来使用switch -e:

来保存mysql命令行软件的输出
             try {
                FileOutputStream fos = new FileOutputStream("c:/test.txt");
                Runtime rt = Runtime.getRuntime();
                Process proc = rt.exec("mysql.exe -u root -e \"select * from table_name\" database_name");

                StreamGobbler errorGobbler = new StreamGobbler(
                        proc.getErrorStream(), "ERROR");

                StreamGobbler outputGobbler = new StreamGobbler(  proc.getInputStream(), "OUTPUT", fos);

                errorGobbler.start();
                outputGobbler.start();

                int exitVal = proc.waitFor();
                System.out.println("ExitValue: " + exitVal);
                fos.flush();
                fos.close();
            } catch (Throwable t) {
                t.printStackTrace();
            }