Android数据库没有更新

时间:2014-03-19 12:53:26

标签: android sqlite

此方法应该更新数据库中的朋友。但事实并非如此。没有显示错误,尝试重新启动刷新列表等仍然没有。 Log向我显示新值,但它们不会保存在数据库中。

public void updateFriend(Friend friend) {
    Log.d("UpdateFriendMethod", friend.toString());
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(KEY_NAME, friend.getName()); 
    values.put(KEY_BIRTHDAY, friend.getBirthday().getTimeInMillis());
    db.update(TABLE_Friends,
            values, 
            KEY_NAME + " = ?", 
            new String[] { String.valueOf(friend.getName()) });

    db.close();
}

以下是如何从db获取项目的方法:

public List<Friend> getAllFriends() {
    List<Friend> Friends = new LinkedList<Friend>();
    String query = "SELECT  * FROM " + TABLE_Friends;
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(query, null);
    if (cursor.moveToFirst()) {
        do {
            Friend friend = new Friend();
            friend.setName(cursor.getString(0));
            Date date = new Date(cursor.getLong(1));
            GregorianCalendar cal = new GregorianCalendar();
            cal.setTime(date);
            friend.setBirthday(cal);
            Friends.add(friend);
        } while (cursor.moveToNext());
    }

    Log.d("getAllFriends()", Friends.toString());
    return Friends;
}

我敢打赌,问题出在那个SQL语句的某个地方,我还不熟悉它,我已经习惯了SQL语言而不是这个。

1 个答案:

答案 0 :(得分:3)

已解决,问题出现在SQL语句中,我后来发现:

public void updateFriend(Friend friend) {
    Log.d("UpdateFriendMethod", friend.toString());
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(KEY_NAME, friend.getName());
    values.put(KEY_BIRTHDAY, friend.getBirthday().getTimeInMillis());
    db.update(TABLE_Friends, values, KEY_NAME + "='" + friend.getName()
            + "'", null);
    db.close();

}