数据库不想更新

达雷克

我想更新列表中的某些项目。它工作正常,我也想对数据库行执行此操作。没有错误,但查询不起作用,因为重新启动应用程序后,旧数据已经存在。怎么了?当然,我有更多列要更改

这就是我调用查询的方式:

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子句字符串中,将参数替换为问号:“?”。
  • 您不应该在UI线程上更新数据库,因为这是一项昂贵的操作,而应AsyncTask改为这样做

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章