Oracle 数据库更改事件 - 获取更改行
Oracle Database Changed Event - get Changed Row
class DCNDemoListener implements DatabaseChangeListener
{
String rid;
DBChangeNotification demo;
DCNDemoListener(DBChangeNotification dem)
{
demo = dem;
}
public void onDatabaseChangeNotification(DatabaseChangeEvent e)
{
Thread t = Thread.currentThread();
// System.out.println("DCNDemoListener: got an event ("+this+" running on thread "+t+")");
// System.out.println(e.toString());
TableChangeDescription[] tableChangeDescription = e.getTableChangeDescription();
QueryChangeDescription[] queryChangeDescription = e.getQueryChangeDescription();
RowChangeDescription[] rowChangeDescriptions = queryChangeDescription.getTableChangeDescription()[0].getRowChangeDescription(); // error here
for (RowChangeDescription rowChangeDescription : rowChangeDescriptions)
{
rowChangeDescription.getRowid();
}
}
我在 getTableChangeDescription()[0]
收到一个错误,它说找不到符号。我已经正确导入了 class 和 ojdbc6.jar 文件,我也检查了 API 文档,但我不知道为什么会出现错误。
基本上,我试图拉取 ROWID 以了解 insert/update/delete 的确切执行位置。
查看其他一些用户之前的 post1, post2 有相同的步骤来解决问题,但我的不起作用。
让我们看一下这两行:
QueryChangeDescription[] queryChangeDescription = e.getQueryChangeDescription();
RowChangeDescription[] rowChangeDescriptions = queryChangeDescription.getTableChangeDescription()[0].getRowChangeDescription(); // error here
您在 queryChangeDescription.getTableChangeDescription()
上遇到编译错误。变量的类型是什么 queryChangeDescription
?
是QueryChangeDescription[]
。那是数组类型。
您收到错误消息,因为方法 getTableChangeDescription
不在数组中。
我想你想在数组的第一个元素上调用方法,而不是在数组本身上。如果是这样,试试
RowChangeDescription[] rowChangeDescriptions = queryChangeDescription[0].getTableChangeDescription()[0]
class DCNDemoListener implements DatabaseChangeListener
{
String rid;
DBChangeNotification demo;
DCNDemoListener(DBChangeNotification dem)
{
demo = dem;
}
public void onDatabaseChangeNotification(DatabaseChangeEvent e)
{
Thread t = Thread.currentThread();
// System.out.println("DCNDemoListener: got an event ("+this+" running on thread "+t+")");
// System.out.println(e.toString());
TableChangeDescription[] tableChangeDescription = e.getTableChangeDescription();
QueryChangeDescription[] queryChangeDescription = e.getQueryChangeDescription();
RowChangeDescription[] rowChangeDescriptions = queryChangeDescription.getTableChangeDescription()[0].getRowChangeDescription(); // error here
for (RowChangeDescription rowChangeDescription : rowChangeDescriptions)
{
rowChangeDescription.getRowid();
}
}
我在 getTableChangeDescription()[0]
收到一个错误,它说找不到符号。我已经正确导入了 class 和 ojdbc6.jar 文件,我也检查了 API 文档,但我不知道为什么会出现错误。
基本上,我试图拉取 ROWID 以了解 insert/update/delete 的确切执行位置。
查看其他一些用户之前的 post1, post2 有相同的步骤来解决问题,但我的不起作用。
让我们看一下这两行:
QueryChangeDescription[] queryChangeDescription = e.getQueryChangeDescription();
RowChangeDescription[] rowChangeDescriptions = queryChangeDescription.getTableChangeDescription()[0].getRowChangeDescription(); // error here
您在 queryChangeDescription.getTableChangeDescription()
上遇到编译错误。变量的类型是什么 queryChangeDescription
?
是QueryChangeDescription[]
。那是数组类型。
您收到错误消息,因为方法 getTableChangeDescription
不在数组中。
我想你想在数组的第一个元素上调用方法,而不是在数组本身上。如果是这样,试试
RowChangeDescription[] rowChangeDescriptions = queryChangeDescription[0].getTableChangeDescription()[0]