如何更新SQLite数据库中的数据?

时间:2014-07-29 13:11:59

标签: java android sqlite

所以,我有我的SQLite数据库设置,但现在我想知道如果某个名称已经存在,我该如何更新数据。例如,我的应用程序让用户输入杂项或差事的名称。然后我有关于这个杂项或差事的用户输入信息,例如优先级和完成任务所需的时间。当用户点击"创建活动"按钮,我的代码创建一个按钮,其名称为杂项作为其文本。我有我的应用程序设置,用户可以单击此杂项按钮,它将显示为此特定杂项输入的信息。它引导用户进行另一项活动,其中用户可以更改有关杂项的信息(例如所需的优先级和时间),但它不允许他们更改杂项的名称。因此,当用户点击说“更新”的按钮时,我希望我的数据库通过其名称识别杂项,并替换所有其他变量。我已经查阅了这个问题的其他帖子,我找到了令人满意的答案,但我无法弄清楚编写SQlite方法所需的奇怪语法。我看到一篇帖子说这段代码是你更新数据的方式:

 INSERT OR REPLACE INTO Employee (id, role, name) 
 VALUES (  1, 
        'code monkey',
        (SELECT name FROM Employee WHERE id = 1)
      );

但是,我是使用SQLite数据库的初学者,因此我对整个方法代码的外观感到困惑。你能发布一个更新方法代码,它使用name,timeNeeded和priority作为列,mytable作为表名。我需要代码来识别名称所包含的数据,并更新其他数据。如果需要,请包括参数,完整语法和返回代码。当我尝试创建自己的更新代码时,这是我能够提出的代码:

 public void UpdateData(String activityName,int priority, int leastTime)
{
    String sql="UPDATE "+TABLE_NAME+ " SET priority='"+priority+"' ,leastTime='"+leastTime+"' ,activityName='"+activityName;
    db.execSQL(sql);


}

1 个答案:

答案 0 :(得分:1)

首先,

此行包含一些错误(整数包含在'中,最终字符串没有结束'):

String sql="UPDATE "+TABLE_NAME+ " SET priority='"+priority+"' ,leastTime='"+leastTime+"' ,activityName='"+activityName;

应该是:

String sql="UPDATE " + TABLE_NAME + " SET priority = " + priority + ", leastTime = " + leastTime + ", activityName = '"+activityName + "'";

其次,如果您绑定参数,它将好得多,如:

String sql="UPDATE " + TABLE_NAME + " SET priority = ?, leastTime = ?, activityName = ?";

然后是:

db.execSQL(sql, new String[]{priority, leastTime, activityName});

?只是传递的值数组的占位符,它将自动转换为正确的数据类型 这对于防止SQL注入也很有用。

相关问题