package com.dtqy.dcn.test;
import java.sql.SQLException;
import java.util.Properties;
import oracle.jdbc.OracleStatement;
import oracle.jdbc.dcn.DatabaseChangeListener;
import oracle.jdbc.dcn.DatabaseChangeRegistration;
import oracle.jdbc.driver.OracleConnection;
import oracle.jdbc.pool.OracleDataSource;
public class Test {
public static void main(String[] args) throws SQLException {
OracleDataSource dataSource = new OracleDataSource();
dataSource.setUser("jsxl_admin");
dataSource.setPassword("root");
dataSource.setURL("jdbc:oracle:thin:@124.130.149.119:1521:orcl");
final OracleConnection conn = (OracleConnection) dataSource
.getConnection();
Properties prop = new Properties();
prop.setProperty(OracleConnection.DCN_NOTIFY_ROWIDS, "true");// 要取得更改记录的rowid
// 设置超时,这里是1个小时,届时数据库和驱动器的资源自动释放。如果为0或不设置,则用不过期,直到程序停止监听,当数据库发送更新通知时,因为没有监听端口,数据库随后释放资源
prop.setProperty(OracleConnection.NTF_TIMEOUT, "0");
DatabaseChangeRegistration databaseChangeRegistration = conn
.registerDatabaseChangeNotification(prop);
DatabaseChangeListener databaseChangeListener = new DataBaseChangeListenerTest();
databaseChangeRegistration.addListener(databaseChangeListener);
OracleStatement statement = (OracleStatement) conn.createStatement();
statement.setDatabaseChangeRegistration(databaseChangeRegistration);
statement.executeQuery("select * from DTQY_JXKH_CJ_RY t where 1=2");
statement.executeQuery("select * from DTQY_JXKH_CL where 1=2");
statement.close();
conn.close();
System.err.println("数据库更改通知开启:");
}
}
此博客展示了使用Java实现Oracle数据库更改通知的代码。通过OracleDataSource建立连接,设置相关属性,注册数据库更改通知,添加监听器,执行查询语句等操作,最终开启数据库更改通知功能。

1046

被折叠的 条评论
为什么被折叠?



