首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在java应用程序中运行mysql查询

问无法在java应用程序中运行mysql查询
EN

Stack Overflow用户
提问于 2013-06-30 19:40:57
回答 2查看 71关注 0票数 0

我想要将MYSQL表从远程服务器备份到本地服务器,而我必须在我的java应用程序中执行此操作。我正在尝试运行以下查询来执行此操作:

C:\Program Files\MySQL\MySQL Server5.5\bin\mysqldump --opt --where='1 limit 10‘-h a.b.c.d -u根-proot remoteDB远程可远程|mysql -u根-pcanada localDB

当我通过命令行运行它时,查询运行得非常好,但是当我通过我的java应用程序运行它时,它不能创建任何备份,奇怪的是,它没有显示任何输出also.Following是代码:

代码语言:javascript
复制
    public static void main(String[] args) {
    Process p;
    String s="C:\\Program Files\\MySQL\\MySQL Server 5.5\\bin\\mysqldump --opt " +
                "--where='1 limit 1'  -h a.b.c.d  -u root -proot remoteDB remoteTable|mysql -u root -pcanada " +
                "localDB";
    try {
        p = Runtime.getRuntime().exec(s );
        p.waitFor();
        BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line=reader.readLine();

        while (line != null) {    
            System.out.println(line);
            line = reader.readLine();
        }
    }
    catch (InterruptedException e) {
        System.out.println("fsff"+e);
            e.printStackTrace();
    } catch (IOException e) {
        System.out.println("fsdaf"+e);
            e.printStackTrace();
    }

}

有没有人可以建议我为什么不提前通过我的java application.Thanks来运行它:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-30 19:45:40

Runtime.exec不是一个外壳。它只启动一个进程,并且不处理输入和输出流重定向,因此command1 | command2将无法工作。

作为一种解决办法,您可以将该命令写入.cmd文件并使用cmd.exe运行它。

票数 1
EN

Stack Overflow用户

发布于 2013-06-30 19:49:11

大多数开发人员会使用库从Java进行MySQL查询,而不是尝试向外部程序编写命令并收集输出。

例如,请参见http://dev.mysql.com/doc/refman/5.6/en/connector-j-usagenotes-statements.html#connector-j-examples-execute-select

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17389991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档