Obtener actualizaciones de contar las filas de SQLite en Android mediante una consulta en bruto?

¿Cómo puedo obtener el número de filas actualizadas utilizando una instrucción de update en SQLite en Android?

Tenga en cuenta que necesito utilizar algún tipo de ejecución en bruto de una sentencia SQL, en lugar de hacer nada con ContentValues porque necesito una consulta dinámica. Por lo tanto, no puedo hacer uso del método SQLiteDatabase.update() . Por ejemplo, estoy corriendo algo como

 UPDATE my_table SET field_name = field_name + 1 

Los métodos que conozco de return void, por ejemplo, SQLiteDatabase.execSQL() . SQLiteDatabase.rawQuery() devuelve un Cursor , pero el cursor tiene cero filas y su recuento es siempre -1.

4 Solutions collect form web for “Obtener actualizaciones de contar las filas de SQLite en Android mediante una consulta en bruto?”

Podría hacer su inserto como quiera, y luego hacer una selección y utilizar la función changes() para devolver el número de filas afectadas.

Para ampliar la respuesta de Mat , aquí está el código de ejemplo para obtener el recuento de filas actualizado:

 Cursor cursor = null; try { cursor = db.rawQuery("SELECT changes() AS affected_row_count", null); if(cursor != null && cursor.getCount() > 0 && cursor.moveToFirst()) { final long affectedRowCount = cursor.getLong(cursor.getColumnIndex("affected_row_count")); Log.d("LOG", "affectedRowCount = " + affectedRowCount); } else { // Some error occurred? } } catch(SQLException e) { // Handle exception here. } finally { if(cursor != null) { cursor.close(); } } 

Expandiendo las respuestas de Mat y Pang …

¿Podríamos saltar el cursor y usar simpleQueryForLong () ?

p.ej

  public long getChangesCount() { SQLiteDatabase db = getReadableDatabase(); SQLiteStatement statement = db.compileStatement("SELECT changes()"); return statement.simpleQueryForLong(); } 

Puede utilizar el método SQLiteStatement.executeUpdateDelete para esto:

 SQLiteDatabase db = getReadableDatabase(); SQLiteStatement statement = db.compileStatement("[your sql here]"); int affectedRows = statement.executeUpdateDelete(); 

El mismo método utilizado internamente en los métodos SQLiteDatabase.update (…).

  • ¿Cómo agregar sub consulta en SQLITE Android junto con 'IN'?
  • Android - ¿Puedes actualizar un Cursor para los resultados de SQLite?
  • ¿Cómo implementar una base de datos SQLite en Phonegap?
  • ¿Puede Universal loader de imágenes para Android trabajar con imágenes de sqlite db?
  • Qué son los tipos de datos en SQLite que soportan android
  • Sqlite plugin para Eclipse: depurar la base de datos sqlite en el dispositivo Android en vivo
  • Rendimiento de procesamiento de datos recursivo utilizando Java y SQLite
  • Consulta SQLite muy lenta en Android
  • Donde la cláusula en SQLite no funciona en android :(
  • Sqlite browser: ¿dónde está el archivo db?
  • Cómo ocultar filas específicas de un cursor en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.