SQLiteException:"Ange" 附近:语法错误(代码 1):
SQLiteException: near "Ange": syntax error (code 1):
我在 DatabaseHelper class 中写了一个方法,如下所示,它适用于短列表但不适用于长列表,
我收到错误 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 Police, Fire and 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});
我在 DatabaseHelper class 中写了一个方法,如下所示,它适用于短列表但不适用于长列表,
我收到错误 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 Police, Fire and 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});