首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的光标在Android活动中没有关闭?

为什么我的光标在Android活动中没有关闭?
EN

Stack Overflow用户
提问于 2012-10-10 23:18:12
回答 1查看 977关注 0票数 4

在我的Android活动中,我需要从数据库中读取东西。我已经创建了一个帮助类来处理我的数据库访问。这个助手类有几种不同的方法,设计它们可以读取不同的东西并返回它们,而不太费事。以下是一个例子。

代码语言:javascript
复制
public String GetName(int id)
{
    String toReturn = null;
    Cursor cursor = null;

    try
    {
        cursor = db.query(TABLE_NAME,
            new String[] {"name"},
            "id = " + id,
            null,
            null,
            null,
            null,
            null);

        assert(cursor.getCount() == 1);

        cursor.moveToFirst();

        toReturn = new String(cursor.getString(0)); 
    }
    finally
    {
        if(cursor != null)
            cursor.close();
    }

    return toReturn;
}

我一直在犯错误

10-10 15:52:18.991: W/SQLiteCompiledSql(28313):在终结器中释放语句。请确保在游标上显式调用close():从android.database.sqlite.DatabaseObjectNotClosedException:中选择名称,其中id =0 10-10 15:52:18.991: W/SQLiteCompiledSql(28313):android.database.sqlite.DatabaseObjectNotClosedException:应用程序没有关闭在这里打开的游标或数据库对象

使用堆栈跟踪,该跟踪直接指向此函数(以及与其非常相似的),尽管该活动运行良好。我做错了什么?我在这里查看了一段时间,然后添加了try/ for,以确保始终关闭游标,但仍然会收到错误。我怎么才能解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-03 08:17:10

您正在正确地关闭游标,但也需要关闭数据库,请确保您正在关闭数据库:

代码语言:javascript
复制
if(db.isOpen()) db.close();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12829917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档