我现在有个显示数据的页面,我需要在数据库有变动的时候,自动刷新以下页面。
这样的话我考虑需要做一个触发器。但是由于公司的新项目刚开始用orcal所以对他还不是很了解,希望达人们帮帮忙,看看如何实现数据库变动然后orcal通知java类,然后让他执行刷新。希望能尽量详细。。

解决方案 »

  1.   

    我还真不知道触发器可以通知class,谁能解决我也学习一下……
      

  2.   

    oracle 能调用java类,单对java不熟悉,具体内容不会。
      

  3.   

    "可以编写  调用JAVA类  的存储过程 触发器 对象类型方法以及函数"<<Oracle 9i参考手册>>36章的第一句话是这么说的,在那里简单介绍了存储过程调用JAVA类.
    至于你的问题能不能实现,我也不敢肯定,我知道的也就这么多,自己看看资料吧...
    如果实现了,别忘了给大家学习学习^_^
      

  4.   

    如果你知道了可以分享下,比较符合实际的解决方案 写个轮询java程序不断的检查数据库的变化,简单些,如果项目紧的话可以先这么干
      

  5.   

    Create or replace trigger <触发器名>
    before | after  | instead of     --指定是在完成操作前还是操作后触发触发器
    Insert [or delete] [or update] of  <列名>  on  <表名|视图名>
    [ REFERENCING  [ NEW  AS  new_row_name ]  [ OLD  AS  old_row_name ] ] –给new或者old定义一个别名,在下面的程序中用别名代替new或者old使用
    [for each row]  --指定每行触发一次,默认情况下,数据库触发器每个表触发一次
    [When (<条件>)]
    declare
    ------
    Begin
            --------
    exception
    --------
    End;
      

  6.   

    在C#里面可以做一个DLL。然后在Oracle里面执行这个DLL。但是你这个DLL要在前台实时的调用。所以这个方法还不如直接调用查询方法好得多。
      

  7.   

    这种东西放在应用程序里面实现好了jsp页面修改一下,可以使用jquery异步发送请求给中间件服务器,业务逻辑在java里面,查询数据库,比较之后,返回一些字符串(json格式,或者各种格式都可以,怎么顺手怎么用).页面判断一下,是否执行刷新操作(最好使用jquery局部修改页面,而不要直接使用刷新页面的操作).
      

  8.   

    我是C/C++开发的,懂些PROC罢了。
      

  9.   

    首先 : 触发器 分被数据修改前触发,数据修改过程中修改,和数据修改后修改你要明白触发器的特点,只要你的表中被语句修改或某个值被修改,你的触发器就会被激活。明白来上面的道理就比较简单了1.建立你的表对应的语句级或字段行级触发器
    2.建立java和oracle关系  网上有很多例子(比如说存储过程或者什么的,主要是引入的过程)
    3.在触发器中编辑当被激活时调用2中的存储过程
    5.存储过程调用java,java进程通过webserviece或者 socket通知 你正在运行的服务器,有数据改变,则数据刷新
    6.编写java端的接口问题解决了。
    这个是一个初步的想法,但是我觉得不是特别的好。我提一个方法不需要什么触发器什么的,  就是监控的过程,你设置一个time 每隔多久的时间就去执行一遍刷新的过程不久行了么,虽然不是非常的即时,但是目前为止  大家做的 java和oracle的通讯一般情况下都是单向的。
    1、创建一java文件:OraclejavaProc.java
      public class OraclejavaProc {     
        public static void main(String[] args) {
              System.out.println("It's a oraclejavaproc!");
       }
     }
     
     
     
    2、使用oracle目录下的D:\oracle\product\10.2.0\db_1\jdk\bin javac来编译
     
        javac OraclejavaProc.java
     
    3、java OraclejavaProc 测试一下是否可成功输出信息。
     
    4、登录oracle (可使用sql*plus或plsql)
     
     
     
     1 SQL> conn system/manager
     
     2 SQL> grant create any directory to scott; --授权
     
     3 SQL> conn scott/tiger  ---如果是管理员登录操作的可省略此步
     
     4 SQL> create or replace directory oracle_dir as 'd:\test';
     
     5 --目录已创建。
     
     6 SQL> create or replace java class using bfile(oracle_dir,'OraclejavaProc.class');
     
     7 Java 已创建。
     
     8 --SQL> select object_name,object_type,STATUS from user_objects; --可查看object_type是否有java class的数据。
     
     9 SQL> create or replace procedure oracle_java as language java
     
    10 name 'OraclejavaProc.main(java.lang.String[])';
     
    11 --过程已创建。
     
    12 SQL> set serveroutput on size 5000   --使用pl/sql时此句可不用也可打印出
     
    13 SQL> call dbms_java.set_output(5000);
     
    14 --调用完成。
     
    15 SQL> execute oracle_java;
     
    16   It's a oraclejavaproc!
     
    17
     
    18 PL/SQL 过程已成功完成。
     
    19 SQL> call test_java();
     
    20     It's a oraclejavaproc!
     
    21
     
    22 --调用完成。