如何在android sqlite'execSQL'语句中设置整数和字符串值

Dil*_*rla 2 sqlite android

我试图在execSQL语句中设置一个整数和一个字符串值:

mydb.execSQL("UPDATE emptable set age=? where name=?",new int[] {emp_age},new String[] {emp_name});
Run Code Online (Sandbox Code Playgroud)

其中emp_age是一个整数,emp_name是一个String.但这不起作用.我怎么能实现这个目标?

Luk*_*uth 11

对不起,但我对给出的答案不满意,我会解释原因.

@hotveryspicy答案不仅丑陋而且危险.我会提醒您SQL注入的可能性,这可能会花费您存储的数据.@john史密斯的答案也是如此.

@ user1318091答案不正确的原因与使所有这些答案(包括您给定的示例代码)错误的原因相同.如果您阅读文档,您会注意到它说:

执行一个不是 SELECT/INSERT/UPDATE/DELETE的SQL语句.

在第一行.它还列出了上述操作的替代方案:

对于UPDATE语句,请改用以下任何一种语句.

  • update(String,ContentValues,String,String [])
  • updateWithOnConflict(String,ContentValues,String,String [],int)

如果您选择使用simple update()-method,您的查询将如下所示(未经测试!):

ContentValues values = new ContentValues();
values.put("age", age); // your integer...
mydb.update("emptable", values, "name=?", new String[]{emp_name});
Run Code Online (Sandbox Code Playgroud)

另请检查此问题以获取正确的"where"-syntax:使用ContentValues更新sql数据库和update-method