我在java中运行sh命令时,执行sql语句
Process process =null;
String command = "cd /test/test/ ";  
String command0 = "sqlplus user/user @test.sql ";  
process = Runtime.getRuntime().exec(command);
process.waitFor();process = Runtime.getRuntime().exec(command0);
process.waitFor(); //执行该步时,无反应,不报错。sql文件没有被执行
上述代码,执行到后一个process.waitFor();时,无反应,sql文件不能被执行,求解。
另,尝试了将上述代码写到sh文件中,再去执行sh文件,同样的问题。

解决方案 »

  1.   

    你把这些命令写到.sh文件中,
    然后再执行sh文件试试
      

  2.   

    .sh文件是在linux下运行的。。
      

  3.   

    String command0 = "sqlplus user/user @test.sql "; 
    还差了一个东西,我没看见
    String command0 = "sqlplus user/user@tns_name @test.sql "; 看一下,如何+ 167765087 java开发技术交流
      

  4.   

    普通的sh脚本无法代填密码之类的东西,你需要expect
    参考:mysql.bakup.sh#!/usr/bin/expect
     
    spawn ./db.backup.sh  #调用这个脚本,里面含有mysql的备份命令
    expect "Enter password:"
    send "123456\n" #这是数据密码
    expect eofmysql.backup.sh这个脚本,当执行'db.backup.sh'备份数据时,遇到mysql要求输入密码的字符串"Enter password:",会自动输入密码"123456\n",'\n'相当于回车。