在Android SQLite Query上的Clause中使用string

时间:2014-03-15 17:56:55

标签: android android-sqlite

我在SQLite Update查询中使用字符串时遇到问题。

此代码无效。

 database.update(MySQLiteHelper.TABLE_NAME, values, MySQLiteHelper.COLUMN_TASKNAME + " = " + strName, null);

这里strName是一个字符串。

但是这段代码工作正常

database.update(MySQLiteHelper.TABLE_NAME, values, MySQLiteHelper.COLUMN_ID + " = " +  id , null);

这里的id是一个整数。

他们之间有什么区别?

1 个答案:

答案 0 :(得分:2)

当您这样做时,您需要在字符串周围添加引号:

database.update(MySQLiteHelper.TABLE_NAME, values, MySQLiteHelper.COLUMN_TASKNAME + " = \"" + strName + "\"", null);

但是您应该真正研究参数化查询(使用update中的selectionArgs,如下所示:

database.update(MySQLiteHelper.TABLE_NAME, values, MySQLiteHelper.COLUMN_TASKNAME + " = ?", new String[] { strName })

它会使您的数据库对SQL injection attacks更安全。