求一句   java中调用 sqlplus执行sql脚本  的语句格式!感激不尽!

解决方案 »

  1.   

    System.runtime.exec('sqlplus @script.sql');
      

  2.   

    括号里面我是这样写的,怎么不可以 ! sqlplus test/test@orcl @C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\ROOT\setup/data/oracle/database.sql在sqlplus中单独执行sqlplus test/test@orcl可以通过然后执行@D:\sql\database.sql;也可以通过,但是把@D:\sql\database.sql;改成@C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\ROOT\setup/data/oracle/database.sql就不可以了是怎么回事?
    路径是正确的!
      

  3.   

    这是通过java执行cmd的方式
    Runtime.getRuntime().exec("sqlplus username/pwd@tnsname @你的sql的脚本文件") 需要sqlplus环境,和正确的tnsname配置,如果是远程的话,这里基本和命令行的方式一样了。还有通过纯的java方式的
    可以使用dbutils的工具包,这是apache提供的一个java包。
    里面可以通过api的方式直接执行脚本,还可以从execl文件导入数据,等高级功能。
      

  4.   

    inthirties
     
    (Inthirties) 可以说清楚一点吗?什么配置?我是按你那样写的可是程序直接挂起不跑了!
      

  5.   

    Process proc = rt.exec(cmd);
    InputStream stderr = proc.getErrorStream();
    InputStreamReader isr = new InputStreamReader(stderr);
    BufferedReader br = new BufferedReader(isr);
    String line = null;

    System.out.println("----------------");
    while ((line = br.readLine()) != null){
    System.out.println(br.readLine());
    }
    System.out.println("到这里了!");
    System.out.println("到这里了!");就没有执行了
      

  6.   

    现在cmd是这样写的    cmd="sqlplus test/test@orcl @d://sql//database.sql";
        
     
        Runtime rt=Runtime.getRuntime();   rt.exec(cmd);
    InputStream stderr = proc.getErrorStream(); 
    InputStreamReader isr = new InputStreamReader(stderr); 
    BufferedReader br = new BufferedReader(isr); 
    String line = null; System.out.println("----------------"); 
    while ((line = br.readLine()) != null){ 
    System.out.println(br.readLine()); 

    System.out.println("到这里了!"); 
    程序到这里:System.out.println("到这里了!");的前面就挂起了,进程被锁,请问有什么方法解决??
      

  7.   

    你怎么没有catch语句啊,加上去,看看到底发生了什么
      

  8.   

    问题更新:      我按网上的开启了两个线程可是在这里还是被挂起exitVal = proc.waitFor();不知道是为什么!请高手指点!代码:cmd= "cmd.exe /c sqlplus "+user2+"/"+pwd2+"@orcl @"+fPath;
    //cmd= "cmd.exe /c "+"start d:\\sql\\database.sql"; 

    System.out.println("cmd="+cmd);
    Process proc = rt.exec(cmd);

    StreamGobbler errorGobbler = new StreamGobbler(proc.getErrorStream(),"Error");
    StreamGobbler outputGobbler = new StreamGobbler(proc.getInputStream(),"Output");  
                          
    errorGobbler.start();
    outputGobbler.start();System.out.println("----------------");

    exitVal = proc.waitFor();

    System.out.println(exitVal+"到这里你就成功了!");执行到这里还被挂起:proc.waitFor();
      

  9.   

    我想知道isqlplus里怎么调用脚本!