我在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是一个整数。
他们之间有什么区别?
答案 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更安全。