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 (…).

  • SQLite de Android Únete a la consulta
  • Usar swagger con una base de datos de android
  • Cómo recuperar el formato DATETIME de la base de datos Sqlite
  • Cómo utilizar SQLiteDatabase.CursorFactory
  • Portable JDBC vs SQLite en Android
  • Android desventajas de no cerrar el cursor
  • ¿Cómo hago una consulta insensible a mayúsculas con ContentResolver en Android?
  • Android SQLiteException: Error al cambiar la configuración regional de db a 'en_US'
  • Problema de corrupción de bases de datos precargado en la aplicación de Android
  • Cómo leer una columna específica de SQLiteBatabase existente en Android?
  • Actualizar Recyclerview de otra actividad
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.