標籤:java 指令碼 執行sql
開始通過java執行cmd的方式調用sqlplus執行sql檔案,但是後來發現一旦進入sqlplus,指令碼執行完後就會一直等待而不關閉。後為了方便改成調用ant的SQLExec類提供的實現進行sql指令碼的執行。原始代碼如下,我是通過前端上傳sql指令檔後台服務端進行執行:
SQLExec sqlExec = new SQLExec(); //設定資料庫參數 sqlExec.setDriver("oracle.jdbc.driver.OracleDriver"); sqlExec.setUrl("jdbc:oracle:thin:@192.168.5.110:1521:tcis3"); sqlExec.setUserid("bam30"); sqlExec.setPassword("bam30"); sqlExec.setSrc(new File("d:\\test.sql")); //sqlExec.setOnerror((SQLExec.OnError)(EnumeratedAttribute.getInstance(SQLExec.OnError.class, "abort"))); sqlExec.setPrint(true); //設定是否輸出 //輸出到檔案 sql.out 中;不設定該屬性,預設輸出到控制台 sqlExec.setOutput(new File("d:/sql.log")); sqlExec.setProject(new Project()); // 要指定這個屬性,不然會出錯 sqlExec.execute();
通過以上代碼就會執行sql指令碼了。為了簡單起見,我對異常的捕獲是通過try catch來做的,沒有走異常流,然後再catch中將錯誤資訊進行捕捉然後返回,具體代碼就不列舉了。主要是sql指令碼的執行,通過對比,個人覺得這種方式效率也不錯,更重要的是避免了因為平台的問題導致的java調用cmd失效等問題。
本文出自 “菜鳥學習” 部落格,請務必保留此出處http://biyusheng.blog.51cto.com/2626140/1547314
Java執行上傳的sql指令檔