我在DatabaseHelper类中编写了如下方法,它适用于短列表,但不适用于长列表,我收到错误Caused by: android.database.sqlite.SQLiteException: near "Ange": syntax error (code 1): , while compiling: SELECT genre FROM second WHERE name='L'Ange-Gardien and Notre-Dame de la Salette Police, Fire and EMS'
,我删除了L'Ange-Gardien和Notre-Dame de la Salette警察,消防和EMS,但它仍然给出错误。
public String getScannerTypeByRadioName(String radioName) {
String scannerType = null;
myDataBase = this.getWritableDatabase();
String query = "SELECT genre FROM second WHERE name='" + radioName + "'";
Cursor c = myDataBase.rawQuery(query, null);
while (c.moveToNext()) {
scannerType = c.getString(c.getColumnIndex("genre"));
}
return scannerType;
}
永远不要使用要在sql语句中传递的参数的串联。在这一行:
String query = "SELECT genre FROM second WHERE name='" + radioName + "'";
您将字符串radioName
与值连接:
L'Ange-Gardien and Notre-Dame de la Salette Police, Fire and EMS
其中包含一个单引号,这将创建一个无效的sql语句。对?
占位符使用推荐的方式:
String query = "SELECT genre FROM second WHERE name=?";
Cursor c = myDataBase.rawQuery(query, new String[] {radioName});