数据库不想更新

时间:2014-04-24 22:55:33

标签: android android-sqlite

我想更新列表中的某些项目。它工作正常,我也想用数据库行。没有错误但查询无效,因为重新启动应用程序后会有旧数据。怎么了?当然,我的列数比我想要的更多

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

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);
    }

1 个答案:

答案 0 :(得分:1)

您正在尝试使用尚未设置的新名称(在where子句中)查找项目来更新项目的名称。因此更新无效,因为没有项与where子句匹配。请使用行ID来标识项目。

此外:

  • 您应该将whereArgs数组中where子句的所有字符串参数作为最后一个参数而不是null传递,以便正确转义该字符串以避免SQL注入问题。在where子句字符串中,用问号替换参数:'?'。
  • 您不应该更新UI线程上的数据库,因为这是一项昂贵的操作,而是在AsyncTask中执行。