Cursor invalid statement in fillwindow()

这个问题我纠结很久,通过上网搜索答案,再经过自己的再三调试,终于搞定了。这里跟大家分享?

简单一点说就是:我在A类中打开一个数据库的连接!代码如下:

db=dbHelper.getReadableDatabase();
c=dbHelper.findById(db, rowId);
startManagingCursor(c);
while (c.moveToNext()){
title.setText(c.getString(c.getColumnIndex("title")));
title.setText(c.getString(c.getColumnIndex("body")));
}

然后调用B类中的查询方法就是上面的findById(db,rowId)方法,返回一个Cursor对象。下面是重点

这是B类中的查询方法,代码如下:

public Cursor findById(SQLiteDatabase db,long rowId){
Cursor c=null;
try{
String sql="select _id,title,body from note where _id="+rowId;
c=db.rawQuery(sql, null);
return c;
}
catch (Exception e){
e.printStackTrace();
  }finally{

  if(db!=null){

   db.close();

}

}
return null;
}

上面红色标注的地方,就是报异常的地方,意思是不能提前关闭数据库连接,只要去掉红色地方的代码就行了!!




posted @   ppjj  阅读(225)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示