Android SQLite-Daten werden nicht hinzugefügt - Android, JSON, Sqlite

Ich verwende den folgenden Code, um JSON-Arrays zur SQLite-Datenbank hinzuzufügen:

QuestionORM Klasse:

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

private static ContentValues postToContentValues2(JSONArray jsonArray) throws JSONException {
ContentValues values = new ContentValues();
for(int i=0;i<jsonArray.length();i++)
{
JSONObject job1 = jsonArray.getJSONObject(i);
if(job1!=null)
{
JSONObject job2 = job1.getJSONObject("owner");
values.put(QuestionORM.COLUMN_ID, job1.getString("question_id"));
values.put(QuestionORM.COLUMN_TITLE,job1.getString("title"));
values.put(QuestionORM.COLUMN_AUTHOR,job2.getString("display_name"));
values.put(QuestionORM.COLUMN_VOTES,job1.getString("score"));
}
}
return values;
}

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

Dies wird in einer anderen Aktivität wie folgt verwendet:

        QuestionORM.insertQuestion(MainActivity.this,mJSONArr,url);

Das Protokoll wird jedoch nie angezeigt und die Datenbank ist leer. Ich bekomme auch keine Fehler in meinem Logcat.

Was ist falsch ? Wie behebe ich das?

Vielen Dank !

Antworten:

-1 für die Antwort № 1

Sie definieren eine der folgenden Methoden:

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

du verwendest myDatabase.isOpen () und gemäß der Dokumentation gibt es zurück:

True, wenn die Datenbank gerade geöffnet ist (wurde nicht geschlossen).

Wie auch immer, dein insertQuestion() Methode schließt die Datenbank.

[AKTUALISIEREN]

Schließen Sie die Datenbank nicht am Ende des insertQuestion() Methode. Sie sollten das lieber auf der onDestroy Methode. Öffnen Sie es einmal, in onCreate Methode und schließen Sie es, wenn Sie es nicht mehr brauchen.