0

私はこのテーブルを作成します:

"create table "  + DATABASE_TABLE + " ("
    + KEY_ROWID + " integer primary key autoincrement not null, "
    + KEY_TITLE + " text not null, "
    + KEY_BODY + " text not null, " + KEY_DATE_TIME + " text not null);"

そして、これが私が挿入するために行うことです:

ContentValues initialValues = new ContentValues();
initialValues.put("title", title);
initialValues.put("body", body);
initialValues.put("abc", anc);
return mDb.insert(DATABASE_TABLE, null, initialValues); 

しかし、何らかのエラーにより、アプリが強制終了します。助けてください...

Logcat エラー:

java.lang.NullPointerException
com.maddy.task_reminder.ReminderDbAdapter.createReminder(ReminderDbAdapter.java:133)
06-09 23:28:44.112: E/AndroidRuntime(412):  at com.maddy.task_reminder.edit_activity$4.onClick(edit_activity.java:143)
4

2 に答える 2

0

Web上の一般的なDBAdapterの例に従っている場合は、次の呼び出しを確認してください。

mDbHelper.open();

あなたの活動で。それ以外の場合mDbは、データベースヘルパークラスでインスタンス化されることはなく、常にインスタンス化されますnull

コメントからの追加:

これがあなたのopen()方法です。

public ReminderDbAdapter open() throws SQLException { 
    mDbHelper = new DatabaseHelper(mCtx); 
    mDb = mDbHelper.getWritableDatabase(); 
    return this; 
}

ReminderDbAdapterコンストラクターが次のようになっていない場合:

public ReminderDbAdapter(Context context) {
    ...
    mCtx = context;
    open(); // Do you have this line?
}

ReminderDbAdapter.open()次に、おそらく次のように、アクティビティを明示的に呼び出す必要があります。

ReminderDbAdapter mDbHelper = new ReminderDbAdapter(this); 
mDbHelper.open();
于 2012-06-09T18:34:04.890 に答える
0

あなたが見れば java.lang.NullPointerException com.maddy.task_reminder.ReminderDbAdapter.createReminder(ReminderDbAdapter.java:133) 06-09 23:28:44.112: E/AndroidRuntime(412): at com.maddy.task_reminder.edit_activity$4.onClick(edit_activity.java:143)

と にエラーがedit_activity.java:143ありReminderDbAdapter.java:133ます。何がありますか?

そして、同じことの私のコードは次のようになります

    `public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" +
                KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                KEY_NAME + " TEXT NOT NULL, " +
                KEY_REL + " TEXT NOT NULL);"
        );
    }`

public long createEntry(String name, String rel) {
    // TODO Auto-generated method stub
    ContentValues cv = new ContentValues();
    cv.put(KEY_NAME, name);
    cv.put(KEY_REL, rel);
    return water.insert(DATABASE_TABLE, null, cv);
}

そしてそれはうまくいきます。

于 2012-06-09T18:18:09.023 に答える