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]
收到错误它说无法找到符号。我已经正确导入了类和ojdbc6.jar文件,我也检查了API文档,但我不知道为什么会出错。
基本上,我试图拉ROWID以了解执行插入/更新/删除的确切位置。
答案 0 :(得分:1)
让我们来看看这两行:
QueryChangeDescription[] queryChangeDescription = e.getQueryChangeDescription();
RowChangeDescription[] rowChangeDescriptions = queryChangeDescription.getTableChangeDescription()[0].getRowChangeDescription(); // error here
您在queryChangeDescription.getTableChangeDescription()
上收到编译错误。变量queryChangeDescription
的类型是什么?
这是QueryChangeDescription[]
。这是一个数组类型。
您收到错误,因为方法getTableChangeDescription
不在数组上。
我想你想要在数组的第一个元素上调用方法,而不是在数组本身上调用。如果是这样,请尝试
RowChangeDescription[] rowChangeDescriptions = queryChangeDescription[0].getTableChangeDescription()[0]