android Cursor.requery() deprecated问题

在Android的API文档中,Cursor的方法requery()这样写道:This method is deprecated.Don't use this. Just request a new cursor, so you can do this asynchronously and update your list view once the new cursor comes back. 这提示我们风险的存在,如果数据量大,会导致重写读取的事件长(也就是requery()的执行时间)。虽然手机是人手操作,互动频率较低,在数据库数据少的时候,例如上面的例子,我们仍然可以安全地使用requery。但是对于具有大量数据时,我们就需要修改上面的程序。

修订的方式步骤如下:1,通过后台线程来读取数据库;2、通过更换cursor来更新ListView。

原文参见

http://blog.csdn.net/flowingflying/article/details/6846991

转载于:https://www.cnblogs.com/gccBlog/p/3635909.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: adodb recordset刷新数据可以使用requery方法,该方法会重新执行查询并更新数据。具体操作如下: 1. 首先需要打开连接,创建recordset对象。 2. 执行查询语句,获取数据。 3. 在需要刷新数据的时候,调用recordset对象的requery方法。 4. requery方法会重新执行查询并更新数据,可以通过遍历recordset对象来获取更新后的数据。 示例代码如下: ``` '打开连接 Set conn = CreateObject("ADODB.Connection") conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb" '创建recordset对象 Set rs = CreateObject("ADODB.Recordset") '执行查询语句,获取数据 rs.Open "SELECT * FROM mytable", conn '刷新数据 rs.Requery '遍历recordset对象,获取更新后的数据 Do While Not rs.EOF '处理数据 rs.MoveNext Loop '关闭连接和recordset对象 rs.Close conn.Close ``` ### 回答2: ADODB Recordset是一种用来连接数据库并读取数据的常用方法,当从数据库中获取数据后,需要及时地刷新数据,以确保程序中使用的数据是最新的。 ADODB Recordset提供了两种刷新数据的方法:Requery和Resync。 Requery是一种强制更新数据的方法,它会发送新的SQL查询语句到数据库中重新查询数据,并替换现有的数据。使用Requery可以确保数据是最新的,但它需要花费更多的时间和资源,因为它需要重新连接数据库并执行新的查询语句。 Resync是一种在现有数据集中更新或添加数据的方法。它通常会启用缓存,仅更新修改或新增的记录,并不影响现有的记录。因此,它在性能方面比Requery更优秀,但需要在启用缓存的情况下进行操作。 在使用ADODB Recordset之前,建议首先评估使用场景,以确定哪种方法更适合。如果数据需要频繁刷新,请使用Resync,如果数据需要强制更新请使用Requery。 以下是使用ADODB Recordset刷新数据的示例: '打开连接 Dim cn As New ADODB.Connection cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyDatabase.mdb" cn.Open '读取数据 Dim rs As New ADODB.Recordset rs.Open "SELECT * FROM MyTable", cn '修改数据 rs.MoveFirst rs("ColumnName").Value = "New Value" rs.Update '刷新数据 rs.Requery '或者 rs.Resync adResyncAllRecords '关闭连接 rs.Close Set rs = Nothing cn.Close Set cn = Nothing 以上示例中展示了如何使用Requery和Resync方法刷新数据。要注意的是,刷新数据只有在数据集处于打开状态时才有效,如果数据集已关闭,则需要重新打开数据集以获取最新的数据。 ### 回答3: ADODB Recordset 是 VB6 中常用的一种数据访问对象,用于从数据库中读取数据并以 Recordset 的形式返回给程序使用。对于已经打开的 Recordset,我们可以通过 Refresh 方法来刷新其中的数据。 Refresh 方法可以重新查询当前 Recordset 对象所代表的数据源,将最新的数据更新到 Recordset 中。一旦 Refresh 方法执行完成,Recordset 中已经存在的所有记录都会被替换成最新的数据。如果在执行 Refresh 方法时,Recordset 正在编辑某一条记录,则该记录的数据不会被刷新,需要先将该记录保存或撤销修改后再执行 Refresh。 使用 Refresh 方法可以避免因数据源被其他用户修改而导致 Recordset 中的数据过时的情况。同时,由于 Refresh 方法会重新向数据源发出查询请求,所以可能会对性能产生一定的影响。因此,在实际使用中需要注意权衡数据实时性和性能的关系,选择合适的方法来刷新数据。 另外,对于使用 ADODB.Recordset,我们还可以使用 Move 方法来直接定位到 Recordset 中某一条记录并更新该记录的数据。Move 方法是 Recordset 中的常规方法之一,可以修改当前位置记录的某一字段的数据。无论使用 Refresh 还是 Move 方法更新 Recordset 的数据,都需要注意数据源的并发访问和事务管理等问题,以保证数据的一致性和完整性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值