当前位置: 代码迷 >> Android >> 更新数据库,Android
  详细解决方案

更新数据库,Android

热度:80   发布时间:2023-08-04 12:49:20.0

我创建了一种方法来更新android应用程序中数据库的条目。

 public int updateEntryById(ContentValues diaryValues) {

    String  updateWhere = Diary.DiaryItem.COLUMN_NAME_ID + " = " + Diary.DiaryItem.COLUMN_NAME_ID;
    Log.i(TAG, "UpdateWhere query values" + updateWhere);
    SQLiteDatabase db = diaryDbHelper.getWritableDatabase();
    ContentValues updateValues = new ContentValues();

    updateValues.put(Diary.DiaryItem.COLUMN_NAME_DIARY_TITLE, "");
    updateValues.put(Diary.DiaryItem.COLUMN_NAME_DIARY_DATE, "");
    updateValues.put(Diary.DiaryItem.COLUMN_NAME_DIARY_TIME, "");
    updateValues.put(Diary.DiaryItem.COLUMN_NAME_DIARY_ENTRY, "");
    updateValues.put(Diary.DiaryItem.COLUMN_NAME_DIARY_LAT, "");
    updateValues.put(Diary.DiaryItem.COLUMN_NAME_DIARY_LONG, "");

    Log.i(TAG, "UPDATE" + updateWhere);
    //performs the update
    int count = db.update(
            Diary.DiaryItem.TABLE_NAME, 
            updateValues, 
            updateWhere, 
            null);

    return count;
}

我发现的一个问题是Log.i(TAG,“ UpdateWhere查询值” + updateWhere); 实际上并没有提供ID而是_ID = _ID,即列名。 相反,我希望它是例如_ID = 1的地方。

有任何想法吗? 提前致谢

protected void saveDiaryItem() {
        ContentValues saveValues = new ContentValues();

        saveValues.put(Diary.DiaryItem.COLUMN_NAME_ID, mID.getText().toString());
        saveValues.put(Diary.DiaryItem.COLUMN_NAME_DIARY_TITLE, mTitle.getText().toString());
        saveValues.put(Diary.DiaryItem.COLUMN_NAME_DIARY_DATE, mDate.getText().toString());
        saveValues.put(Diary.DiaryItem.COLUMN_NAME_DIARY_TIME, mTime.getText().toString());
        saveValues.put(Diary.DiaryItem.COLUMN_NAME_DIARY_ENTRY, mEntry.getText().toString());
        saveValues.put(Diary.DiaryItem.COLUMN_NAME_DIARY_LAT, mLat.getText().toString());
        saveValues.put(Diary.DiaryItem.COLUMN_NAME_DIARY_LONG, mLong.getText().toString());

        Log.i(TAG, "About to insert data" + saveValues);
        DAO diarySave = new DAO(getBaseContext());

        diarySave.updateEntryById(saveValues);
        Log.i(TAG, "IM BACK!"); 
    }

您的函数名称是updateEntryById ,但是您没有传递任何ID。 您知道要更新哪个ID吗?

目前您有这条线

String  updateWhere = Diary.DiaryItem.COLUMN_NAME_ID + " = " + Diary.DiaryItem.COLUMN_NAME_ID;

其中放Diary.DiaryItem.COLUMN_NAME_ID; 在'='的两边,因此您不能期望获得正确的id值。

您不应该将此id作为函数的参数吗?

public int updateEntryById(ContentValues diaryValues, int id) 

似乎您也没有使用arg ContentValues diaryValues ,这正常吗?

  相关解决方案