java.lang.IllegalStateException: Process 20535 exceeded cursor quota 100, will kill it

原创 2014年07月23日 21:22:55

这是一个SQLiteAndroid嵌入的数据库测试程序。

在添加的时候,每次启动程序都会自己再次插入一遍(不能做到数据库有的信息不插入,id是自动生成的)

上网找了一下方法说是添加什么触发器(话说SQL的触发器还可以,android的,额,这就不用说了)。

那只好插入的时候再次查找一遍,判断是否是第一次插入。

好了这个时候就出现问题了。

代码如下:

/**
	 * 保存数据
	 * flag判断数据是否以前插入过
	 * @param appInfos
	 */
	public void save(ArrayList<Country> appInfos) {
		drop();
		Cursor cursor1 = null;
		boolean flag = false;
		try {
			db = this.open();
			
			if (appInfos == null) {
				return;
			}
			for (Country appInfo : appInfos) {
				flag = false;
				cursor1 = db.rawQuery("select * from " + DBHelper.SORT_DB
						+ " where name='" + appInfo.name + "'", null);
				if (cursor1 != null && cursor1.moveToFirst()){
					flag = true;
				}
				if(!flag){
					db.execSQL("insert into " + DBHelper.SORT_DB
							+ "(name,target) values(?,?)", new Object[] {
							appInfo.name, appInfo.target });
				}
				cursor1.close();
			}
		} finally {
			
			if (db != null)
				db.close();
		}
	}

开始的时候判断是放在外边(另外一个函数),在网上找说是使用游标时一定要关闭。

好吧以为打开了再次调用函数会出现冲突,那就放在里面。

但是还是有这个错误,最后找到for循环里面每次都会给Cursor复制,所以在下次使用前一定关闭。

不知道说的对不对,但是这样做结果出来了。

有大神路过的求指教。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

java.lang.IllegalStateException: The maximum number of cell styles was exceeded.

1、错误描述java.lang.IllegalStateException: The maximum number of cell styles was exceeded. You can defin...

java.lang.IllegalStateException: Unable to process parts as no multi-part configuration has been pro

前台使用 上传文档,总是报 java.lang.IllegalStateException: Unable to process parts as no multi-part config...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

Cursor获取的时候有异常的处理 java.lang.IllegalStateException: trying to requery an already closed cursor

在获取memo的时候有一个根据Uri 获取Cursor的方法是用的Activity的方法:mCursor = managedQuery(mUri, PROJECTION, null, null, n...

java.lang.OutOfMemoryError: GC overhead limit exceeded

网上的解决方案: 1、 这种问题两种方法是:增加参数,-XX:-UseGCOverheadLimit,关闭这个特性,同时增加heap大小,-Xmx1024m 2、 通过排查问题后得出造成此类问题的原...

java.lang.OutOfMemoryError:GC overhead limit exceeded填坑心得

我遇到这样的问题,本地部署时抛出异常java.lang.OutOfMemoryError:GC overhead limit exceeded导致服务起不来,查看日志发现加载了太多资源到内存,本地的性...

解决android在mvn打包的时候,包java.lang.OutOfMemoryError: GC overhead limit exceeded

UNEXPECTED TOP-LEVEL ERROR: java.lang.OutOfMemoryError: GC overhead limit exceeded         at com.an...

【exception】android编译ANT打包异常java.lang.OutOfMemoryError: GC overhead limit exceeded

UNEXPECTED TOP-LEVEL ERROR: java.lang.OutOfMemoryError: GC overhead limit exceeded at com.androi...

Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded

OutOfMemoryError,大家都知道是内存溢出了,那么GC overhead limit exceeded又是什么意思呢?GC overhead limit exceeded 这是JDK6新...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)