2012-05-25 169 views
0

我爲oracle數據庫寫了一個java程序到insert and update數據。我需要在插入或更新數據之前使用一些觸發器DISABLE。在插入或更新數據後還需要先前使用ENABLE DISABLED觸發器。我寫了兩個sql腳本,分別爲pre_script.sqlpost_script.sqlDISABLEENABLE觸發器。通過Java運行Oracle Sql腳本

我怎樣才能使用java來運行這些文件?有沒有任何方法來傳遞這些sql文件在java中執行?

+0

[從Java運行的Oracle SQL腳本]的可能重複(http://stackoverflow.com/questions/200513/run-oracle-sql-script-from-java) –

回答

0
import java.io.*; 
import java.sql.*; 

假設conn

連接對象從連接對象創建一個SQL語句:

Statement DMLString conn.createStatement(); 

創建一個字符串變量,並用alter trigger語句填充:

String sql = "ALTER TRIGGER [TRIGGER_NAME] DISABLE"; 

按照DB

執行SQL
String result = DMLString.execute(sql.toString()); 
+0

對不起應該提到,你可以閱讀將文件(pre_script.sql,post_script.sql)轉換爲Java,並使用上述方法將每個語句推送到數據庫。 –

+0

哦,有沒有人知道我爲什麼被標記爲這個答案?我仍在調整我的StackOverflow體驗.... –

+0

您的'ALTER TRIGGER'語法不正確,應該是'ALTER TRIGGER [TRIGGER_NAME] DISABLE' – Phil

2

最簡單的選擇是將SQL腳本創建爲數據庫中的存儲過程或函數,然後只需要Java的簡單調用即可執行它們。

CallableStatement cs = conn.prepareCall("{ call pre_script_as_func() }"); 
cs.execute(); 

// do inserts, updates 

cs = conn.prepareCall("{ call post_script_as_func() }"); 
cs.execute();