不好意思,问一个也许很简单的问题?
我需要用java调用sqlplus执行一段orale语句。
1,我用insert_oracle.bat文件执行没有问题。
@echo off
sqlplus bidemo/abc@gaad @insert_oracle.sql
2,我用运行命令没有问题。
sqlplus bidemo/abc@gaad @%BIConf%insert_oracle.sql
但是,我用java调用出现问题:
1,String[] arg={"bidemo/abc@gaad", "@%Conf%insert_oracle.sql"};
Process sub = Runtime.getRuntime().exec("sqlplus",arg);
sub.waitFor(); //这句使程序死掉
sub.destroy();
2,改成
cmd="@%Conf%insert_oracle.bat"
Process sub = Runtime.getRuntime().exec(cmd);
同上一样
如果不要sub.waitFor();没有任何运行结果
insert_oracle.sql内容:
insert into title values('miss');
insert into education values('miss');
exit ;
3,我把insert_oracle.bat改成
@echo off
rem sqlplus bidemo/abc@gaad @insert_oracle.sql
没有问题
但是一加上pause语句,就死掉
看来是cmd需要用户处理的时候,用sub.waitFor();就处于死锁状态。
请问,有什么办法解决这个问题:
在java里如何调用sqlplus?