Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


INSERT de SQLite de SQL

Estoy utilizando execSQL en la base de datos SQLite. El sql INSERT strnig es

INSERT INTO Tasks (_id, Aircraft, Station, Discrepancy,DateCreated, CreatedBy, Status, DateClosed, ClosedBy, ArrivalFlightID, RecordChangedByUI) VALUES ('271104',' ','ORD','Critical Flight (0496/28)','9/4/2011 6:57:00 PM','SYSTEM','NEW','','null','0','N') 

La tabla es

 "create table Tasks (_id integer primary key, " + "Aircraft text null, Station text null, Discrepancy text null, DateCreated text null, CreatedBy text null, Status text null, DateClosed text, ClosedBy text null, ArrivalFlightID text null, RecordChangedByUI text null);"; 

Se está lanzando una excepción "Empty bindArgs"

¿Puede alguien decirme a dónde voy mal?

  • ¿Qué hará un SQLiteCursor si una columna es nula?
  • Cómo agregar una columna booleana en Android SQlite
  • Almacenar Android SQLite
  • Evento de clic de AutoCompleteTextView en Android
  • ¿Cómo puede acceder a los contenidos de las bases de datos de Android Emulator?
  • Android Store un objeto parcelable en SQLite
  • Eliminar fila de SQLite con cláusula where con cláusulas múltiples
  • No hay tal tabla android_metadata, ¿cuál es el problema?
  • 2 Solutions collect form web for “INSERT de SQLite de SQL”

    No puede pasar nulo como segundo parámetro. Si no lo está utilizando, simplemente ignórelo y funcionará:

     String sql = "INSERT INTO Tasks (_id, Aircraft, Station, Discrepancy,DateCreated, CreatedBy, Status, DateClosed, ClosedBy, ArrivalFlightID, RecordChangedByUI) " VALUES ('" + tasks[i]._id + "','" + tasks[i].Aircraft + "','" + tasks[i].Station + "','" + tasks[i].Discrepancy + "','" + tasks[i].DateCreated + "','" + tasks[i].CreatedBy + "','" + tasks[i].Status + "','" + tasks[i].DateClosed + "','" + tasks[i].ClosedBy + "','" + tasks[i].ArrivalFlightID + "','N')"; this.database.execSQL(sql); 

    Sin embargo, el ejemplo anterior es vulnerable – consulta SQL se puede inyectar fácilmente. Todas las cadenas pasadas a la consulta deben escaparse a través de DatabaseUtils.sqlEscapeString(task[i].something) .

    Intente ejecutar database.insert o insertOrThrow. Requiere la adición explícita de cada campo a un objeto ContentValues, pero es mucho mejor.

     ContentValues insertValues = new ContentValues(); insertValues.put("_id", tasks[i]._id); ... // other fields long rowId = this.database.insert(DATABASE_TABLE, null, insertValues); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.