2015-04-30 2 views
-4

Я использую следующий код для добавления элементов в базу данных:Android SQLITE Нелегального государство Исключение

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

Как это разрешить?

Спасибо!

+0

Опубликуйте полный стек и ваш помощник sqlite 'onCreate()'/'onUpgrade()' обратные вызовы. – laalto

ответ

0

проверка перед открыть

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

---- UPDATE ----

// добавить этот метод в классе Calss

private SQLiteDatabase myDataBase; 

... 

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

если метод возвращает ложь, то только вызовите getWritableDatabase() или getReadableDatabas() согласно вашему требованию.

+0

Можете ли вы объяснить далее в контексте моего вопроса? Где именно я это положил? Над второй строкой? –

+0

у вас есть объект databaseWrapper справа? и переопределить метод в классе DatabaseWrapper, добавьте в него мой код. –

+0

Но в базе данныхWrapper нет метода, называемого isOpen()? –

Смежные вопросы