Android的SQLITE非法状态异常 [英] Android SQLITE Illegal State Exception

查看:211
本文介绍了Android的SQLITE非法状态异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用下面的code以添加项目到数据库:

I am using the following code to add items to the Database :

public static void insertQuestion(Context c,JSONArray jarr,String search) throws JSONException {
        DatabaseWrapper databaseWrapper = new DatabaseWrapper(c);
        SQLiteDatabase database = databaseWrapper.getWritableDatabase();
        ContentValues values = postToContentValues2(jarr);
        values.put(QuestionORM.COLUMN_SEARCH,search);
        long questionId = database.insert(QuestionORM.TABLE_NAME, "null", values);
        Log.e(TAG, "Inserted new Question with ID: " + questionId);
        database.close();
    }

不过,我得到一个错误说

But I get an error saying

试图重新打开一个已关闭的对象

"attempt to re-open an already-closed object"

在这条线:

SQLiteDatabase database = databaseWrapper.getWritableDatabase();

我如何解决此问题?

How do I resolve this ?

谢谢!

推荐答案

在开放式检查

if(database != null && database.isOpen()){
// if open then don't open
} 

---- ----更新

---- UPDATE ----

//在你的类CALSS添加此方法

// add this method in your class calss

private SQLiteDatabase myDataBase;

...

    public boolean isDatabaseOpened() {
        if (myDataBase == null) {
            return false;
        }
        return myDataBase.isOpen();
    }

如果方法返回false,那么只调用getWritableDatabase()或getReadableDatabas()按您的要求。

if method returns false then only call getWritableDatabase() or getReadableDatabas() as per your requirement.

这篇关于Android的SQLITE非法状态异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆