如何处理SQLiteDatabase中SELECT查询语句中无法识别的字符?
How to deal with unrecognized characters in SELECT query statement in SQLiteDatabase?
这是我在 Android Studio 中的代码:
fun find(name: String) {
val db = this.readableDatabase
val cursor = db.rawQuery("SELECT * FROM $MY_TABLE WHERE $NAME='${name}'", null)
if (cursor.moveToFirst()) {
do {
...
} while (cursor.moveToNext())
}
cursor.close()
db.close()
}
这里的问题是,如果我要查找的名称的参数值中有 '
,则会发生错误。当我尝试在 SELECT 语句中查找 WHERE 匹配项时,我知道 '
导致了问题。我该如何解决? SELECT 语句中不应使用哪些其他字符?
您可以使用 ?
占位符并在 rawQuery()
的第二个参数中将参数 name
作为数组项传递:
val cursor = db.rawQuery("SELECT * FROM $MY_TABLE WHERE $NAME = ?", arrayOf(name))
这是传递参数的安全且推荐的方式,您无需担心引用字符串参数,因为它会由 rawQuery()
处理。
这是我在 Android Studio 中的代码:
fun find(name: String) {
val db = this.readableDatabase
val cursor = db.rawQuery("SELECT * FROM $MY_TABLE WHERE $NAME='${name}'", null)
if (cursor.moveToFirst()) {
do {
...
} while (cursor.moveToNext())
}
cursor.close()
db.close()
}
这里的问题是,如果我要查找的名称的参数值中有 '
,则会发生错误。当我尝试在 SELECT 语句中查找 WHERE 匹配项时,我知道 '
导致了问题。我该如何解决? SELECT 语句中不应使用哪些其他字符?
您可以使用 ?
占位符并在 rawQuery()
的第二个参数中将参数 name
作为数组项传递:
val cursor = db.rawQuery("SELECT * FROM $MY_TABLE WHERE $NAME = ?", arrayOf(name))
这是传递参数的安全且推荐的方式,您无需担心引用字符串参数,因为它会由 rawQuery()
处理。