首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新数据库,android

更新数据库,android
EN

Stack Overflow用户
提问于 2014-03-14 22:52:01
回答 1查看 55关注 0票数 0

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

代码语言:javascript
复制
 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(标记,"UpdateWhere query values“+ updateWhere);实际上并没有给出ID,而是_ID = _ID,这是列名。相反,我希望它是在_ID =1的位置。

有什么想法吗?提前感谢

代码语言:javascript
复制
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!"); 
    }
EN

回答 1

Stack Overflow用户

发布于 2014-03-14 23:14:39

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

目前你有这一行

代码语言:javascript
复制
String  updateWhere = Diary.DiaryItem.COLUMN_NAME_ID + " = " + Diary.DiaryItem.COLUMN_NAME_ID;

它把Diary.DiaryItem.COLUMN_NAME_ID;放在'=‘符号的两边,所以你不能期望得到一个合适的id值。

你不应该把这个id作为你的函数的参数吗?

代码语言:javascript
复制
public int updateEntryById(ContentValues diaryValues, int id) 

似乎你也不使用arg ContentValues diaryValues,它正常吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22408416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档