文档章节

Finalizing a Cursor that has not been deactivated or closed

w
 walala_Lee
发布于 2014/04/26 10:10
字数 247
阅读 48
收藏 0
点赞 0
评论 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
博文 163
码字总数 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 ⋅ 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 ⋅ 3

关于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

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

Oracle游标的查询

The initialization parameter OPEN_CURSORS in INITSID.ORA determines the maximum number of cursors per user. Check the parameter specified by executing the following SQL: select ......

jimbuster ⋅ 2005/12/26 ⋅ 0

Mongodb常用指令(持续更新)

日常管理 db.ensureIndex({"key":1}) // 1 for ascending db.getIndexes() // print indexes use db ; db.dropDatabase() // drop database db.collection.drop() // drop collection query.......

EdwardLi ⋅ 2013/03/07 ⋅ 2

Oracle Predefined PL/SQL Exceptions 预定义异常

Predefined PL/SQL Exceptions An internal exception is raised implicitly whenever your PL/SQL program violates an Oracle rule or exceeds a system-dependent limit. Every Oracle er......

baser ⋅ 2016/12/16 ⋅ 0

Android 装载器---例子

这个例子是在Fragment中显示一个ListView的完整实现,ListView中包含针对通讯录内容提供器的查询结果。它使用一个CursorLoader来管理基于内容提供器的查询。 因为这个应用程序访问了用户的通...

长平狐 ⋅ 2012/10/16 ⋅ 0

python模块介绍- collections(4)-namdedtuple 命名元组

python模块介绍- collections(4)-namdedtuple 命名元组 2013-04-17 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.com qq 37391319 博客:http://blog.csdn.net/oychw #版权......

长平狐 ⋅ 2013/12/25 ⋅ 0

Windows Phone 7 软件生命周期(一)

android如火如荼,wp7才刚开始,我并非着重于比较哪方技术优劣,我只是一介码农,靠学点技术,增加面试筹码,也借此提高工资而已,不管wp7以后如何,反正。我相信,现在开始,就现在,马上掌...

鉴客 ⋅ 2011/11/16 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

BS与CS的联系与区别【简】

C/S是Client/Server的缩写。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、InFORMix或 SQL Server。客户端需要安装专用的客户端软件。 B/S是Brower/...

anlve ⋅ 28分钟前 ⋅ 0

发生了什么?Linus 又发怒了?

在一个 Linux 内核 4.18-rc1 的 Pull Request 中,开发者 Andy Shevchenko 表示其在对设备属性框架进行更新时,移除了 union 别名,这引发了 Linus 的暴怒。 这一次 Linus Torvalds 发怒的原...

问题终结者 ⋅ 48分钟前 ⋅ 0

在树莓派上搭建一个maven仓库

在树莓派上搭建一个maven仓库 20180618 lambo init 项目说明 家里有台树莓派性能太慢。想搭建一个maven私服, 使用nexus或者 jfrog-artifactory 运行的够呛。怎么办呢,手写一个吧.所在这个...

林小宝 ⋅ 今天 ⋅ 0

Spring发展历程总结

转自与 https://www.cnblogs.com/RunForLove/p/4641672.html 目前很多公司的架构,从Struts2迁移到了SpringMVC。你有想过为什么不使用Servlet+JSP来构建Java web项目,而是采用SpringMVC呢?...

onedotdot ⋅ 今天 ⋅ 0

Python模块/包/库安装(6种方法)

Python模块/包/库安装(6种方法) 冰颖机器人 2016-11-29 21:33:26 一、方法1: 单文件模块 直接把文件拷贝到 $python_dir/Lib 二、方法2: 多文件模块,带setup.py 下载模块包(压缩文件zip...

cswangyx ⋅ 今天 ⋅ 0

零基础学习大数据人工智能,学习路线篇!系统规划大数据之路?

大数据处理技术怎么学习呢?首先我们要学习Python语言和Linux操作系统,这两个是学习大数据的基础,学习的顺序不分前后。 Python:Python 的排名从去年开始就借助人工智能持续上升,现在它已经...

董黎明 ⋅ 今天 ⋅ 0

openJdk和sun jdk的区别

使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的OpenJDK, 那么到底什么是OpenJDK,它与SUN JDK有什么关系和区别呢? 历史上的原因是,Ope...

jason_kiss ⋅ 今天 ⋅ 0

梳理

Redux 是 JavaScript 状态容器,提供可预测化的状态管理。 它是JS的状态容器,是一种解决问题的方式,所以即可以用于 react 也可以用于 vue。 需要理解其思想及实现方式。 应用中所有的 stat...

分秒 ⋅ 今天 ⋅ 0

Java 后台判断是否为ajax请求

/** * 是否是Ajax请求 * @param request * @return */public static boolean isAjax(ServletRequest request){return "XMLHttpRequest".equalsIgnoreCase(((HttpServletReques......

JavaSon712 ⋅ 今天 ⋅ 0

Redis 单线程 为何却需要事务处理并发问题

Redis是单线程处理,也就是命令会顺序执行。那么为什么会存在并发问题呢? 个人理解是,虽然redis是单线程,但是可以同时有多个客户端访问,每个客户端会有 一个线程。客户端访问之间存在竞争...

码代码的小司机 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部