本文主要是介绍java.lang.IllegalStateException: Process 20535 exceeded cursor quota 100, will kill it,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这是一个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: Process 20535 exceeded cursor quota 100, will kill it的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!