我爲oracle數據庫寫了一個java程序到insert and update
數據。我需要在插入或更新數據之前使用一些觸發器DISABLE
。在插入或更新數據後還需要先前使用ENABLE
DISABLED觸發器。我寫了兩個sql腳本,分別爲pre_script.sql
和post_script.sql
到DISABLE
和ENABLE
觸發器。通過Java運行Oracle Sql腳本
我怎樣才能使用java來運行這些文件?有沒有任何方法來傳遞這些sql文件在java中執行?
我爲oracle數據庫寫了一個java程序到insert and update
數據。我需要在插入或更新數據之前使用一些觸發器DISABLE
。在插入或更新數據後還需要先前使用ENABLE
DISABLED觸發器。我寫了兩個sql腳本,分別爲pre_script.sql
和post_script.sql
到DISABLE
和ENABLE
觸發器。通過Java運行Oracle Sql腳本
我怎樣才能使用java來運行這些文件?有沒有任何方法來傳遞這些sql文件在java中執行?
import java.io.*;
import java.sql.*;
假設conn
連接對象從連接對象創建一個SQL語句:
Statement DMLString conn.createStatement();
創建一個字符串變量,並用alter trigger語句填充:
String sql = "ALTER TRIGGER [TRIGGER_NAME] DISABLE";
按照DB
執行SQLString result = DMLString.execute(sql.toString());
對不起應該提到,你可以閱讀將文件(pre_script.sql,post_script.sql)轉換爲Java,並使用上述方法將每個語句推送到數據庫。 –
哦,有沒有人知道我爲什麼被標記爲這個答案?我仍在調整我的StackOverflow體驗.... –
您的'ALTER TRIGGER'語法不正確,應該是'ALTER TRIGGER [TRIGGER_NAME] DISABLE' – Phil
最簡單的選擇是將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();
[從Java運行的Oracle SQL腳本]的可能重複(http://stackoverflow.com/questions/200513/run-oracle-sql-script-from-java) –