我正在使用编写Trigger.io插件来管理Android上的本机数据库,并且最近开始出现此异常:
androID.database.sqlite.sqliteException: not an errorat androID.database.sqlite.sqlitequery.nativeFillWindow(Native Method)at androID.database.sqlite.sqlitequery.fillWindow(sqlitequery.java:86)at androID.database.sqlite.sqliteCursor.fillWindow(sqliteCursor.java:164)at androID.database.sqlite.sqliteCursor.getCount(sqliteCursor.java:156)at androID.database.AbstractCursor.movetoposition(AbstractCursor.java:161)at androID.database.AbstractCursor.movetoFirst(AbstractCursor.java:201)at io.trigger.forge.androID.modules.database.NotesDatabase.cursorToArray(NotesDatabase.java:176)at io.trigger.forge.androID.modules.database.NotesDatabase.queryToObjects(NotesDatabase.java:127)at io.trigger.forge.androID.modules.database.NotesDatabase.queryToObjects(NotesDatabase.java:120)at io.trigger.forge.androID.modules.database.API.query(API.java:50)
因此,堆栈跟踪中提到的功能是:
//"atomic" is always true when this is calledpublic synchronized JsONArray queryToObjects(String query, boolean atomic) throws JsONException{ if(atomic) open(); Cursor c = db.rawquery(query, null); JsONArray notes = cursorToArray(c); c.close(); if(atomic) close(); return notes;}private JsONArray cursorToArray(Cursor c) throws JsONException{ final String[] columnnames = c.getColumnnames(); JsONArray results = new JsONArray(); for (c.movetoFirst();!c.isAfterLast();c.movetoNext()){ JsONObject object = new JsONObject(); for(String name : columnnames){ int index = c.getColumnIndex(name); //"get" is defined elsewhere, but this line never executes object.put(name, get(c, index)); } results.put(object); } return results;}
我正在使用的查询是:
选择不同的主题标签作为名称,将count(主题标签)作为NoteTag组中按主题计数的计数
有没有人经历过这样的事情?预先感谢您可以提出的任何建议!
更新:
游标似乎根本上有问题:对“ getColumnnames”的调用返回一个空数组,并且调用c.getCount()会产生相同的错误.
另一个更新:
一些有效的查询:
select * from Notes where localID in (select distinct localID from NoteTag where hashTags == '#gold') and status != 'delete' order by timestamp desc limit 0,25select * from Notes where localID in (select distinct localID from NoteTag where hashTags == '#woot' intersect select distinct localID from NoteTag where hashTags == '#yeah') and status != 'delete' order by timestamp desc limit 0,25
解决方法:
解决方案:问题的根源是我在JavaScript端调用伪函数的方式.我正在传递一个对象,该对象需要一个字符串(“查询”参数),该字符串由本机桥强制转换为字符串.这种例外是sqlite所说的“这不是查询”的一种非常round回的方式.
总结以上是内存溢出为你收集整理的游标中的Android SQLiteException“不是错误”全部内容,希望文章能够帮你解决游标中的Android SQLiteException“不是错误”所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)