如何观察数据库内容是否发生变化
我想知道如何观察 Cursor 的底层数据库表是否已更改,以便我可以更新 UI。
是否有任何内置机制?我读过有关 ContentObserver 类的内容,但据我了解,它们只能与 ContentProviders 一起使用,而不能在直接访问数据库时使用。
I'm wondering how to observe if the underlying database tables of a Cursor have changed, so I could update the UI.
Are there any build in mechanisms? I've read about the ContentObserver class but as far as I understand, they can only be used with ContentProviders and not when the database is accessed directly.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我们可以对oracle数据库做同样的事情。
但sqlite不支持存储过程。
你能做的就是运行一个线程来进行数据库操作。经常检查数据库中的数据。每当数据库发生任何更改时。检查数据库,如果数据库大小发生变化,那么您可以调用您的应用程序。
如何从db call
调用java程序 从oracle存储过程调用java程序。
假设有一个oracle存储过程OSP1和一个Java程序Java1。
现在需要在Java1上创建一个oracle存储过程OSP2。
然后我们可以简单地从OSP1调用OSP2。
breif中的步骤是:
$bin> loadjava -user scott/tiger Java1.class
上面的类现在已加载到数据库中,并且可以在 dba_object 视图中看到。
现在创建一个基于 Java1.class 构建的 Oracle 存储过程 OSP2,并将其加载到数据库中。
$bin>创建或替换过程 OSP2 作为语言 java
名称 'Java1.method1()';
其中 method1() 是 java 类 Java1 中的方法。
现在可以直接执行OSP2了:
执行OSP2;
或从 dbms_java 调用
或者可以从另一个oracle存储过程OSP1调用。
we can do he same with oracle database.
But sqlite doesnot support stored procedure.
What you can do is that you can run a thread for database operation. Check the data in database always. whenver any change occurred in database. check for the database if size of database changes then you can call your application.
How to call java program from db call
Call java program from oracle stored procedure.
Suppose there is oracle stored procedure OSP1 and a Java program Java1.
Now need to create a oracle stored procedure OSP2 on Java1.
Then we can simply call OSP2 from OSP1.
Steps in breif are:
$bin> loadjava -user scott/tiger Java1.class
The above class is now loaded in database and can be seen in dba_object view.
Now create an oracle stored procedure OSP2 built on Java1.class loaded in database.
$bin> create or replace procedure OSP2 as language java
name 'Java1.method1()';
where method1() is a method in java class Java1.
Now OSP2 can be directly executed :
execute OSP2;
or called from dbms_java
or can be called from another oracle stored procedure OSP1.