文档章节

Finalizing a Cursor that has not been deactivated or closed

w
 walala_Lee
发布于 2014/04/26 10:10
字数 247
阅读 48
收藏 0

Finalizing a Cursor that has not been deactivated or closed

 


先贴出代码:

 

 

public List<UnitInfo> findAllGroup() {
		List<UnitInfo> infos=new ArrayList<UnitInfo>();
		try {
			db = dbManager.openDatabase();
			String sql="SELECT * FROM dict_unit_display";
			System.out.println("-------db---open------:"+db.isOpen());
			cursor=db.query("dict_unit_display", null, null, null, null, null, null);
			System.out.println("---------------cursor--close---:"+cursor.isClosed());
			while (cursor.moveToNext()) {
				UnitInfo unit=new UnitInfo();
				unit.setId(cursor.getLong(cursor.getColumnIndex("ID")));
				unit.setUnitCode(cursor.getString(cursor.getColumnIndex("UNIT_CODE")));
				unit.setUnitName(cursor.getString(cursor.getColumnIndex("UNIT_NAME")));
				unit.setUnitSimpleName(cursor.getString(cursor.getColumnIndex("UNIT_SIMPLE_NAME")));
				unit.setUnitNode(cursor.getString(cursor.getColumnIndex("UNIT_NODE")));
				unit.setUnitFatherNode(cursor.getString(cursor.getColumnIndex("UNIT_NODE_FATHER")));
				System.out.println("----------------------------------");
				System.out.println("-----ID-----:"+ unit.getId());
				System.out.println("-----UNIT_CODE-----:" + unit.getUnitCode());
				System.out.println("-----UNIT_NAME-----:" + unit.getUnitName());
				System.out.println("-----UNIT_SIMPLE_NAME-----:" + unit.getUnitSimpleName());
				System.out.println("-----UNIT_NODE-----:" + unit.getUnitNode());
				System.out.println("-----UNIT_NODE_FATHER-----:" + unit.getUnitFatherNode());
				System.out.println("----------------------------------");
				infos.add(unit);
			}
		} catch (Exception e) {
			System.out.println("------findAllGroup-----数据读取错误");
		} finally {
			DBManager.closeDatabase(db, cursor);
		}
		return infos;
	}
 

代码写的看似没有任何问题,但是由于Cursor的独特性,不得不吐糟下,Cursor取值采用的是先取下标再根据下标去取对应的返回值,这里面就有个问题,如果当前字段在数据库中为 空值 那么通过Cursor  getString()或者getLong()的时候就会出现问题,进而导致一连串的错误。


解决方法就是直接用下标去取值就行了。

 

© 著作权归作者所有

共有 人打赏支持
w
粉丝 3
博文 167
码字总数 50381
作品 0
深圳
关于Finalizing a Cursor that has not been deactivated or closed.

项目运行中,抛出这样的异常Finalizing a Cursor that has not been deactivated or closed. 07-14 15:53:24.698: ERROR/Cursor(10891): android.database.sqlite.DatabaseObjectNotClosedEx......

黑菜妞妞
2011/07/14
11.8K
14
Android 访问数据库报错,什么原因

11-21 06:32:38.150: E/Database(1254): close() was never explicitly called on database '/data/data/com.bankb2c.activity/databases/BankService.db' 11-21 06:32:38.150: E/Database(1......

蓝色鸣鸟
2012/11/21
1K
3
Monitoring Open and Cached Cursors

Just about every DBA has had to deal with ora-1000 errors, "Maximum open cursors exceeded." This article will discuss initialization parameters that affect open cursors, the dif......

东皇巴顿
2017/09/07
0
0
Attempted to access a cursor after it has been clo

http://blog.csdn.net/ID19870510/article/details/7682030 [html] view plaincopy android.database.StaleDataException: Attempted to access a cursor after it has been closed. at andr......

塔塔米
2014/02/15
0
0
关于PhantomReference研究的一个问题

package com.sunhang; //: containers/References.java// Demonstrates Reference objectsimport java.lang.ref.;import java.util.; class VeryBig { private static final int SIZE = 1000......

蚂蚁的世界
2015/07/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Python爬虫:Scrapy框架的安装和基本使用

大家好,本篇文章我们来看一下强大的Python爬虫框架Scrapy。Scrapy是一个使用简单,功能强大的异步爬虫框架,我们先来看看他的安装。 Scrapy的安装 Scrapy的安装是很麻烦的,对于一些想使用S...

糖宝lsh
36分钟前
3
0
Android Dialog几种对话框

1,普通对话框 2,单选对话框 3,多选对话框 4,日期选择对话框 5,时间选择对话框 6,日期选择对话框 7,进度条对话框 普通对话框 AlertDialog.Builder builder = new AlertDialog.Builde...

lanyu96
43分钟前
1
0
awk命令

-F选项的作用是指定分隔符。如果不加-F选项,则以空格或者tab为分隔符。print为打印操作,用来打印某个字段。$1为第1个字段,$2为第2个字段,以此类推。但是$0比较特殊,它表示整行: [root@cen...

野雪球
51分钟前
2
0
一切都靠大数据:滴滴已封禁4.3万人员、车辆

这段时间以来,滴滴出行相继出炉了各种整改措施,包括自身安全建设和外部社会共建,昨日就刚刚宣布正在筹备建立安全监督顾问委员会。 据媒体最新报道,9月30日,上海市交通委员会执法总队、上...

linuxCool
今天
7
0
awk命令用法介绍

10月18日任务 9.6/9.7 awk 1.awk(上)(下) 1.awk 分段操作功能 指定分隔符,并把第一段打印出来,不会改动文件内容 将所有内容打印出来 awk 没有指定分隔符号,则会默认用空格或者空白字符...

hhpuppy
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部