Android SQLITE非法状态异常

时间:2015-04-30 07:36:11

标签: android sqlite illegalstateexception

我使用以下代码将项目添加到数据库:

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();
    }

但我收到错误

  

“尝试重新打开已经关闭的对象”

在这一行:

SQLiteDatabase database = databaseWrapper.getWritableDatabase();

如何解决此问题?

谢谢!

1 个答案:

答案 0 :(得分:0)

打开前检查

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

----更新----

//在类calss中添加此方法

private SQLiteDatabase myDataBase;

...

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

如果method返回false,则只根据您的要求调用getWritableDatabase()或getReadableDatabas()。