我想更新列表中的某些项目。它工作正常,我也想用数据库行。没有错误但查询无效,因为重新启动应用程序后会有旧数据。怎么了?当然,我的列数比我想要的更多
这就是我调用查询的方式:
if(!done)
{
list.get(longPressedPossition).setRating(tmpBundleIntent.getInt("nowaOcena"));
list.get(longPressedPossition).setNameOfItem(tmpBundleIntent.getString("nowaNazwa"));
dataBaseManager.updateTodo(list.get(longPressedPossition));
adapter.notifyDataSetChanged();
done = true;
}
班级中的方法:
public void updateTodo(GifModel model) {
String where = SqliteHelper.NAME + "=" +"'"+ model.getNameOfIteme()+ "'";
ContentValues updateTodoValues = new ContentValues();
updateTodoValues.put(SqliteHelper.NAME, model.getNameOfIteme());
updateTodoValues.put(SqliteHelper.RATING, model.getRating());
database.update(SqliteHelper.TABLE_NAME, updateTodoValues, where, null);
}
答案 0 :(得分:1)
您正在尝试使用尚未设置的新名称(在where子句中)查找项目来更新项目的名称。因此更新无效,因为没有项与where子句匹配。请使用行ID来标识项目。
此外:
whereArgs
数组中where子句的所有字符串参数作为最后一个参数而不是null
传递,以便正确转义该字符串以避免SQL注入问题。在where子句字符串中,用问号替换参数:'?'。AsyncTask
中执行。