我想更新列表中的某些项目。它工作正常,我也想对数据库行执行此操作。没有错误,但查询不起作用,因为重新启动应用程序后,旧数据已经存在。怎么了?当然,我有更多列要更改
这就是我调用查询的方式:
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);
}
您正在尝试通过使用尚未设置的新名称(在where子句中)查找商品来更新商品的名称。因此,更新没有效果,因为没有项目与where子句匹配。请改用行ID标识项目。
还:
whereArgs
数组中where子句的所有字符串参数作为最后一个参数而不是作为参数传递null
,以便可以正确地对字符串进行转义以避免SQL注入问题。在where子句字符串中,将参数替换为问号:“?”。AsyncTask
改为这样做。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句