当前位置:编程学习 > wap >>

cursor为什么会变?

--------------------编程问答-------------------- 没有红色部分代码 你是如何看到cursor.getCount() = 0

有红色部分代码 cursor.getCount() = 1 说明正确

你使用地方可能有问题,把使用的方法多贴点代码 --------------------编程问答-------------------- "回复1楼"

没有红色部分代码 你是如何看到cursor.getCount() = 0

在 cursor = this.getContentResolver().query(uri...)
跟一句 system.out 

就看到了 cursor.getCount() = 0

刚又发现

其实在
ContentProvider部分的

Cursor cursor = null;
try{
cursor = mDB.query(......)
}
catch(Exception e){}
finally{关闭数据库代码}

System.out.println("query cursor = "+cursor.getCount());


try catch 代码块外面 检查cursor ,此时cursor 的 getCount() 已经变为 0 !!!

难道 cursor 生命周期 出问题了? --------------------编程问答-------------------- cursor 在用完之前是不能关闭数据连接的吧 --------------------编程问答-------------------- 你确保你两个查询是一样的吗?问题肯定出在查询的部分了。~ --------------------编程问答-------------------- 同意3楼,数据库连接关闭后,cursor就没了,应该是这个原因 --------------------编程问答--------------------
引用 3 楼  的回复:
cursor 在用完之前是不能关闭数据连接的吧


正解,但是数据库什么时候关掉呢?

不应该限制我什么时候使用cursor 吧?
曾经试图MockCursor 但是太麻烦了.

难道非要让我专门定义一个关闭数据库 uri ??
有这么干的吗??

--------------------编程问答-------------------- 什么时候用完数据什么时候关闭吧 --------------------编程问答-------------------- ContentProvider接口的返回类型明确规定是 Cursor 
这个不能改.

有没有什么办法既可以关掉数据库 又可以不限制使用 Cursor 使用时间(前提是保证这个Cursor 还是那一次查询的结果)的办法 ?

--------------------编程问答-------------------- --------------------编程问答-------------------- 有啊,把这对象深拷贝,或者做持久化! --------------------编程问答-------------------- 不考虑持久化,没有必要,应程序退出也就不需要查询结果了,

你说的深拷贝是什么意思? 
补充:移动开发 ,  Android
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,