Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Java运行Oracle Sql脚本_Java_Oracle_Triggers_Oracle11g - Fatal编程技术网

通过Java运行Oracle Sql脚本

通过Java运行Oracle Sql脚本,java,oracle,triggers,oracle11g,Java,Oracle,Triggers,Oracle11g,我编写了一个java程序来插入和更新oracle数据库的数据。在插入或更新数据之前,我需要禁用一些触发器。插入或更新数据后,还需要启用以前禁用的触发器。我编写了两个sql脚本,分别是pre\u script.sql和post\u script.sql到禁用和启用触发器 如何使用java运行这些文件?是否有任何方法可以传递这些sql文件以在java中执行 import java.io.*; import java.sql.*; 假设连接对象为conn 从连接对象创建SQL语句: Statemen

我编写了一个java程序来插入和更新oracle数据库的数据。在插入或更新数据之前,我需要禁用一些触发器。插入或更新数据后,还需要启用以前禁用的触发器。我编写了两个sql脚本,分别是
pre\u script.sql
post\u script.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";
对数据库执行SQL

String  result = DMLString.execute(sql.toString());

最简单的选择是将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();

抱歉,你应该提到你可以将文件(pre_script.sql,post_script.sql)读入Java,然后使用上面的方法将每个语句推送到DB中。哦,有人知道我为什么会因为这个答案而被记下来吗?我仍然在调整我的StackOverflow体验……比如,你的
ALTER TRIGGER
语法不正确。应该是
ALTER TRIGGER[TRIGGER_NAME]DISABLE
@phil-谢谢,我已经修改了上面的示例。可能是