在Android SQLite查询中使用WHERE子句中的字符串
我在SQLite更新查询中使用字符串时遇到问题 此代码不起作用在Android SQLite查询中使用WHERE子句中的字符串,android,android-sqlite,Android,Android Sqlite,我在SQLite更新查询中使用字符串时遇到问题 此代码不起作用 database.update(MySQLiteHelper.TABLE_NAME, values, MySQLiteHelper.COLUMN_TASKNAME + " = " + strName, null); 这里strName是一个字符串 但是这个代码很好用 database.update(MySQLiteHelper.TABLE_NAME, values, MySQLiteHelper.COLUMN_ID + " =
database.update(MySQLiteHelper.TABLE_NAME, values, MySQLiteHelper.COLUMN_TASKNAME + " = " + strName, null);
这里strName是一个字符串
但是这个代码很好用
database.update(MySQLiteHelper.TABLE_NAME, values, MySQLiteHelper.COLUMN_ID + " = " + id , null);
这里id是一个整数
他们之间有什么区别 这样做时,需要在字符串周围添加引号:
database.update(MySQLiteHelper.TABLE_NAME, values, MySQLiteHelper.COLUMN_TASKNAME + " = \"" + strName + "\"", null);
但您可能真的应该研究参数化查询(使用selectionArgs
,如下所示:
database.update(MySQLiteHelper.TABLE_NAME, values, MySQLiteHelper.COLUMN_TASKNAME + " = ?", new String[] { strName })
这将使您的数据库更安全。您能解释一下为什么我应该在字符串周围添加引号吗?+始终使用concate string,对于integer,它可以很好地工作引号是sql lite数据库如何识别它是字符串的。整数可以从字面上理解。阅读sql,它应该在queriesHello,我是尝试使用字符串whereClause=KEY\u FIELD\u CODE+“=?”字符串wherergs[]={“123456”}之类的参数进行更新,但是没有任何效果,只更新0行,即使与字段匹配的行存在。但是,当我像这样设置update语句时,结果会发生变化:字符串whereClause=KEY\u FIELD\u CODE+“=123456”String wherergs[]=null是否有人知道为什么或在什么情况下我们如何处理。最重要的是如何解决。注意:在这个表中,我特别使用FTS3 para实现程序全文搜索..谢谢