如何oracle数据更新时触发java代码

如何oracle数据更新时触发java代码,第1张

oracle数据更新时触发java代码的步骤如下:

1。编写JAVA程序

public class Main {  

 public static void modify(String statTime)  

    {  

         String datas = "/var/spool/cron/oracle";  

        File data = new File(datas);  

        StringBuffer backup = null;  

        try {  

             StringBuffer content = new StringBuffer();  

              backup = new StringBuffer();  

            BufferedReader san = new BufferedReader(new FileReader(data));  

            String line = null;  

            while((line=sanreadLine())!=null)  

            {  

                backupappend(line);  

                backupappend("/n");  

            }  

           contentappend("15 ");  

           contentappend(statTimetrim());  

           contentappend("    /home/oracle/tasksh");  

           contentappend("/n");  

  

           contentappend("13 ");  

           contentappend(statTimetrim());  

           contentappend("   /home/oracle/tj_task/task2sh");  

           contentappend("/n");  

             

           FileWriter writer = new FileWriter(data,false);  

            writerwrite(contenttoString());  

            writerflush();  

  

            } catch (FileNotFoundException e) {  

                eprintStackTrace();  

            } catch (IOException e) {  

                try  

                {  

                    FileWriter writer = new FileWriter(data,false);  

                    writerwrite(backuptoString());  

                    writerflush();  

                }catch(Exception ex)  

                {  

                    exprintStackTrace();  

                }  

            }  

    }  

}

注意,这里写JAVA程序不需要遵循标准的JAVA程序,一定要有main入口函数,相反,这里的函数一般不要取名为main,除非格式是标准的main 函数格式

2。把JAVA程序LOAD进oracle

在$ORACLE_HOME/bin目录下有个LOADJAVA命令,使用这个命令将刚写好的JAVA程序LOAD进数据库

loadjava -user test/test@test -o -v -f -r Mainjava

如果成功的话,会打印出来信息提示成功,若程序有编译错误的话,也会提示错误的地方。

3。修改权限

首先以管理员身份登录进数据库

sqlplus / as sysdba

然后执行

begin

dbms_javagrant_permission('TEST','SYS:javaioFilePermission','/var/spool/cron/oracle','read,write,execute,delete');

end;

/

执行完毕后,在数据库里执行上述JAVA程序时,就拥有读写该文件的权限了。

4。创建存储过程

进入到数据库,在SQLPLUS命令行

create or replace procedure Modify(name varchar2) as language java name 'Mainmodify(javalangString)';

/

会提示创建存储过程成功。

5。增加trigger

TOAD里直接针对某个表增加trigger,所以关键部分的代码

begin

if :oldname = 'time' then

Modify(:newvalue);

end if;

end;

安装完Oracle客户端后,里面有个jdbc的文件夹,该文件夹下就包含了OCI驱动和THIN驱动。所以是不需要去网上下载的。这个驱动在jdbc/lib文件夹下,主要有classes12jar、nls_charset12jar等等。其中以12结尾的驱动包适应于jdk11以上的版本。以11结尾的适应于jdk11以下的版本。文件名中含有classes的jar包就是驱动程序,文件名中含有nls的jar包是与国际化有关的类。

找到文件后,就需要把class和nls的jar包的绝对路径加入CLASS_PATH环境变量,否则会报ClassNotFound的异常。

设置环境变量后,就可以直接使用OCI驱动了,不要被“驱动”两个字吓坏了,(驱动就是一个可执行文件和一个连接字符串)。很简单,无非是连接字符串的问题。标准的连接字符串如下所示:

ClassforName("oraclejdbcdriverOracleDriver");

Connection con = DriverManagergetConnection("jdbc:oracle:oci:@xxzc","duansiyuan", "oracle_password");

只要这两行,就可以保证连接到数据库,而这个数据库不管是单个数据库还是集群数据库。其中xxzc就是数据库名,duansiyuan就是用户名,oralce_password就是密码。这种方式和C#中的方式比较类似。

需要注意的问题:

1、oracle_home/jdbc文件夹下有大量的样板代码和帮助文档,里面对如何安装和使用jdbc都有详细的说明,请引起高度重视并耐心阅读。里面有很多知识仅通过自己反复的实践是无法获取的。

2、如果想要高性能,请使用OCI连接,如果不想装Oracle客户端,请使用thin连接。

/ stmt=null; /

// sqlstring="insert into datacong(用户名,密码,真实姓名,性别,电话,Email,身份z号码)"+

// "values('"+cong_username+"','"+cong_password+"','"+cong_realname+"','"+cong_gender+"','"+cong_tel+"','"+cong_email+"','"+cong_ID+"')";

String sqlstring2="update datacong set tel=tel+1";

int i=stmtexecuteUpdate(sqlstring2);

responsesendRedirect("Login_congjsp");

注意我用/ /标注的 在先看你下面用到了这个变了你给他的值是什么自己想想吧

ClassforName("commysqljdbcDriver"); //加载Mysql驱动

Connection connection = DriverManagergetConnection("jdbc:mysql://ip:port/database","userName","passWord");//得倒connection

PrepareStatement ps = connectionprepareStatement(sql); //设置执行的sql语句

psexecute();//执行sql

以上就是关于如何oracle数据更新时触发java代码全部的内容,包括:如何oracle数据更新时触发java代码、Java调用oracle来更新数据库信息、java.lang.NullPointerException 关于数据库更新 *** 作的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9433744.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存