更新 Blob 内容时不会触发数据库更改通知



当我在数据库中更新 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();

谁能帮我?

如果我尝试查询表,我得到"ORA-29977:在保证模式下 blolb 的查询注册不支持的列类型"异常

ResultSet rss = stmt.executeQuery("select TESTSUITE_NAME,TESTSUITE_DEFINITION from TESTSUITE_MODELS"(;

我没有使用数据库更改通知(感谢您的提示,看起来很有趣!(,但在文档中发现了以下内容:

若要在保证模式下注册 QRCN,查询必须符合以下规则: 它引用的每一列都是NUMBER数据类型或VARCHAR2数据类型。

关于尽力而为模式下的 QRCN 的部分似乎没有此限制。

有谁知道如何使用 JDBC 的最大努力模式?

最新更新