当我在数据库中更新 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 的最大努力模式?