当我更新数据库中的blob时,DatabaseChangeNotification必须触发,但它没有发生。
正常的字符串/ varchar正常工作,但它不能用于blob。 我正在尝试如下
OracleConnection conn = connect();
Properties prop = new Properties();
prop.setProperty(OracleConnection.DCN_NOTIFY_ROWIDS,"true");
prop.setProperty(OracleConnection.DCN_QUERY_CHANGE_NOTIFICATION,"true");
DatabaseChangeRegistration dcr = conn.registerDatabaseChangeNotification(prop);
try {
DCNDemoListener list = new DCNDemoListener(this);
dcr.addListener(list);
Statement stmt = conn.createStatement();
((OracleStatement) stmt).setDatabaseChangeRegistration(dcr);
ResultSet rs = stmt.executeQuery("select * from TEST_MODEL");
rs.close();
stmt.close();
stmt = conn.createStatement();
ResultSet rss = stmt.executeQuery("select TESTSUITE_NAME,TESTSUITE_DEFINITION from TESTSUITE_MODELS");
while (rss.next()) {
System.out.println(rss.getString("TESTSUITE_NAME"));
System.out.println(rss.getBlob("TESTSUITE_DEFINITION"));
}
rss.close();
stmt.close();
有人可以帮助我吗?
如果我正在尝试查询哪个conatian blob列我正在获取“ORA-29977:在blolb的保证模式下查询注册不支持的列类型”异常
ResultSet rss = stmt.executeQuery(“从TESTSUITE_MODELS选择TESTSUITE_NAME,TESTSUITE_DEFINITION”);
答案 0 :(得分:0)
我还没有使用数据库更改通知(感谢提示,看起来非常有趣!),但在documentation中找到了以下内容:
要在保证模式中注册QRCN,查询必须符合以下规则: 它引用的每一列都是
NUMBER
数据类型或VARCHAR2
数据类型。
尽力而为模式中有关QRCN的部分似乎没有此限制。
有人知道如何使用JDBC的尽力而为模式吗?