如何处理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() 处理。