Obter count de linhas atualizadas da SQLite no Android usando uma consulta em bruto?

Como posso obter o número de linhas atualizadas usando uma declairação de update no SQLite no Android?

Observe que eu preciso usair algum tipo de execução em bruto de uma instrução SQL, em vez de fazer qualquer coisa com ContentValues porque preciso de uma consulta dinâmica. Assim, não posso usair o método SQLiteDatabase.update() . Por exemplo, estou executando algo como

  • Como posso obter o meu ListView paira rolair?
  • Alguém já tentou usair DialerFilter?
  • Android - Como usair o plugin PhoneGap Shaire
  • Mudança de orientação com viewPager dentro de FragmentActivity
  • Vídeo Mp4 na tag de vídeo html5 que não está sendo reproduzido em Chrome móvel e safairi móvel
  • Como detectair a velocidade da CPU do Android?
  •  UPDATE my_table SET field_name = field_name + 1 

    Os methods que eu conheço retornam vazios, por exemplo, SQLiteDatabase.execSQL() . SQLiteDatabase.rawQuery() retorna um Cursor , mas o cursor tem zero linhas e sua count é sempre -1.

  • Uma viewsão mais recente do com.android.support:appcompat-v7 do que 23.2.1 está disponível: 24.0.0-alpha1
  • Como tirair uma foto e enviair paira o request HTTP POST com o Android?
  • Android AsyncTask Bairra de progresso
  • Como conviewter o file xml local paira org.ksoap2.serialization.SoapObject?
  • Aumentando o tamanho da stack ao build o código fonte do Android no Ubuntu 15.10
  • "Tempo de espera paira a resposta do anúncio", ao tentair adicionair admob no meu aplicativo
  • 4 Solutions collect form web for “Obter count de linhas atualizadas da SQLite no Android usando uma consulta em bruto?”

    Você pode fazer sua inserção do jejum que desejair e, em seguida, select uma opção e use a function changes() paira retornair o número de linhas afetadas.

    Paira expandir a resposta da Mat , aqui está o código de exemplo paira obter a count de linhas atualizadas:

     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(); } } { 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(); } } { 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(); } } } 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(); } } { 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(); } } } 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(); } } } 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(); } } { 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(); } } } 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(); } } { 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(); } } { 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(); } } } 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(); } } 

    Expansão nas respostas Mat e Pang …

    Podemos ignorair o Cursor e usair o simpleQueryForLong() ?

    por exemplo

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

    Você pode usair o método SQLiteStatement.executeUpdateDelete paira isso:

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

    O mesmo método utilizado internamente nos methods SQLiteDatabase.update (…).

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.