我试图在我的应用程序中执行多个INSERT。我收到以下错误:
Caused by: android.database.sqlite.SQLiteException: unrecognized token: "5EA7120651D575A3C3A75A13" (code 1): , while compiling:
INSERT INTO 'Inscripciones' ('hash','codigo_evento','ticket','nombre','inscripcion_id','validado','sincronizado','numero','asiento','otros','adicionales','categoria','codigo_usuario','codigo_usuario','rut','talla','fecha_validacion','nombre_responsable') VALUES (5EA7120651D575A3C3A75A13,SI-AAA,Platea alta,Nicolas Hernandez,943,0,0,null,null,null,null,null,SI-1,181148497,null,false,null),(DE1FB0B4E28D4A066C89D27A,SI-AAA,Cancha VIP,Felipe Meric,945,0,0,null,Fila C - Asiento 10,null,null,null,SI-1,169428247,null,false,null),(F7C367C829DA0279AEA19512,SI-AAA,Cancha VIP,Felipe Meric,946,0,0,null,Fila C - Asiento 11,null,null,null,SI-1,169428247,null,false,null),(3FEF96BD38512533B68489A1,SI-AAA,Cancha VIP,Felipe Meric,947,0,0,null,Fila C - Asiento 12,null,null,null,SI-1,169428247,null,false,null),(8E20DBE8DBA3D6A9E267098D,SI-AAA,Cancha VIP,Felipe Meric,948,0,0,null,Fila C - Asiento 13,null,null,null,SI-1,169428247,null,false,null),
我不明白错误,我正确地看到了查询。
String insertRows = "INSERT INTO 'Inscripciones' ('hash','codigo_evento','ticket','nombre','inscripcion_id','validado','sincronizado','numero','asiento','otros','adicionales','categoria','codigo_usuario','codigo_usuario','rut','talla','fecha_validacion','nombre_responsable') VALUES";
for (int i = 0; i < array.length(); i++) {
recorrido++;
JSONObject rowParticipante = array.getJSONObject(i);
insertRows += "("+rowParticipante.getString("hash")+","
+rowParticipante.getString("codigo_evento")+","
+rowParticipante.getString("ticket")+","
+rowParticipante.getString("nombre")+","
+rowParticipante.getString("inscripcion_id")+","
+rowParticipante.getInt("validado")+","
+0+","
+rowParticipante.getString("numero")+","
+rowParticipante.getString("asiento")+","
+rowParticipante.getString("otros")+","
+rowParticipante.getString("adicionales")+","
+rowParticipante.getString("categoria")+","
+codigoUser+","
+rowParticipante.getString("rut_clean")+","
+rowParticipante.getString("talla")+","
+rowParticipante.getString("fecha_validacion")+","
+rowParticipante.getString("nombre_responsable")+"),";
}
db.execSQL(insertRows);
答案 0 :(得分:1)
引号出现问题。
引号应该只是值而不是字段名称
示例:
INSERT INTO `Table` (`field`)
VALUES('value')
但是在您的代码中,您在字段中拥有它们,并且缺少值。 您可以选择使用后退标记来转义关键字,但没有引号。
最好使用insert()
方法
实施例
SQLiteDatabase db = getWritableDatabase();
ContentValues values = new ContentValues();
values.put("hash", rowParticipante.getString("hash"));
values.put("codigo_evento", rowParticipante.getString("codigo_evento"));
values.put("ticket", rowParticipante.getString("ticket"));
values.put("nombre", rowParticipante.getString("nombre"));
values.put("inscripcion_id", rowParticipante.getString("inscripcion_id"));
values.put("validado", rowParticipante.getString("validado"));
values.put("sincronizado", rowParticipante.getString("sincronizado"));
values.put("numero", rowParticipante.getString("numero"));
values.put("asiento", rowParticipante.getString("asiento"));
values.put("otros", rowParticipante.getString("otros"));
values.put("adicionales", rowParticipante.getString("adicionales"));
values.put("categoria", rowParticipante.getString("categoria"));
values.put("codigo_usuario", rowParticipante.getString("codigo_usuario"));
values.put("rut", rowParticipante.getString("rut"));
values.put("talla", rowParticipante.getString("talla"));
values.put("fecha_validacion", rowParticipante.getString("fecha_validacion"));
values.put("nombre_responsable", rowParticipante.getString("nombre_responsable"));
db.insert("Inscripciones", null, values);
db.close();
答案 1 :(得分:0)
您需要在INSERT中围绕每个字符串值使用单引号,就像在每个列名称周围使用单引号一样。
但是,构建SQL的方法通常很糟糕,因为它可能导致SQL注入。您应该考虑使用参数化查询。