未添加Android SQLite数据

时间:2015-04-30 08:16:26

标签: android json sqlite

我使用以下代码将JSON Arrays添加到SQLite数据库:

QuestionORM类:

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

在另一项活动中使用此方法:

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

但是,永远不会显示日志,并且数据库为空。我的logcat中也没有出现任何错误。

有什么问题?我该如何解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:-1)

您可以定义以下方法:

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

您正在使用myDatabase.isOpen()并根据文档返回:

  

如果数据库当前处于打开状态(尚未关闭),则为True。

但是,您的insertQuestion()方法会关闭数据库。

[<强>更新

请勿在{{1​​}}方法的末尾关闭数据库。您应该在insertQuestion()方法上执行此操作。用onDestroy方法打开一次,当你不再需要它时关闭它。