android数据库每次查询完都要关闭吗

wuwh____ 2011-11-23 04:52:27
public ArrayList<Info> queryDatabase(DatabaseHelper dbHelper,String table, String[] columns, String selection,
String[] selectionArgs, String groupBy, String having, String orderBy){

ArrayList<Info> infoList = new ArrayList<Info>();
db = dbHelper.getReadableDatabase();
Cursor cursor = db.query(table, columns, selection,
selectionArgs, groupBy, having, orderBy);
while(cursor.moveToNext()==true){
Info info = new Info();
info.id = Integer.valueOf(cursor.getString(cursor.getColumnIndex("id")));
info.accountname = cursor.getString(cursor.getColumnIndex("accountname"));
info.in_out = cursor.getString(cursor.getColumnIndex("in_out"));
info.logo = Integer.valueOf(cursor.getString(cursor.getColumnIndex("logo")));
info.moneys = cursor.getString(cursor.getColumnIndex("moneys"));
info.remark = cursor.getString(cursor.getColumnIndex("remark"));
info.sort = cursor.getString(cursor.getColumnIndex("sort"));
info.time = cursor.getString(cursor.getColumnIndex("time"));
info.user = cursor.getString(cursor.getColumnIndex("user"));
infoList.add(info);
}
cursor.close();

return infoList;
}
这个是我查询的方法,每查上3次log就会打出一堆error信息,应用还是可以继续查询的,没有影响,但老看着那些error就是不舒服,如果每次查询完都关闭数据库,效率上会不会降低很多?有别的方法解决吗
...全文
1347 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
门前大桥下 2013-07-24
  • 打赏
  • 举报
回复
onDestroied里面关闭的Cursor、数据库没有关过、不知道会不会有影响
wuwh____ 2011-11-24
  • 打赏
  • 举报
回复
我说清楚点··

查询数据库我都用的上面的代码,游标在while循环结束后也有cursor.close();

我的想法是在主页面结束后,也就是软件退出的时候再关闭数据库,在查询结束只关闭游标,现在的情况就是每查询几次后就会出error:

11-24 04:11:06.183: ERROR/Database(643): java.lang.IllegalStateException: /data/data/com.finance/databases/myRegister SQLiteDatabase created and never closed

这种情况怎么解决,需要频繁的关闭数据库吗
冰天狼 2011-11-24
  • 打赏
  • 举报
回复
努力赚分,楼主的问题问的不清楚。
qeqeqe236 2011-11-24
  • 打赏
  • 举报
回复
我就没搞懂你要关闭的是什么 游标对象 还是 数据库连接
tanjunjie621 2011-11-24
  • 打赏
  • 举报
回复
楼主要不你把关闭操作放在生命周期函数中,我曾经在注册广播时也有类似问题,放在onDestroied里就好了.
wuwh____ 2011-11-24
  • 打赏
  • 举报
回复
唉 那就关了试试吧···
六百万 2011-11-24
  • 打赏
  • 举报
回复
楼主,不要犹豫了,肯定的关啊,不光是android是这样的,别的也是这样;
不关肯定会有异常的
beannian 2011-11-23
  • 打赏
  • 举报
回复
肯定得关撒,这是编程的习惯,否则可能会出现溢出的
J明 2011-11-23
  • 打赏
  • 举报
回复
一定要关闭。在模拟器中不会有影响,在真机中会崩溃
Seawind 2011-11-23
  • 打赏
  • 举报
回复
Cursor用完后必须及时的关闭,否则时间操作过长会出现性能问题。
tangfei_honesty 2011-11-23
  • 打赏
  • 举报
回复
cursor用完必须关闭。数据库没怎么注意过
VincentTung 2011-11-23
  • 打赏
  • 举报
回复
过于频繁的开关数据库,必然影响应用的性能
Shan_zha 2011-11-23
  • 打赏
  • 举报
回复
只要把你的cursor放到所有查询完毕,也就是while完成之后关闭不就可以了吗?何必非要查一次就关一次,只要保证所有查询结束时关闭即可。
VincentTung 2011-11-23
  • 打赏
  • 举报
回复
频繁的开关必定影像应用的性能,但是不关的话可能报错。可以把连续的数据库操作放到一起,然后关闭

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧