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

  • Definir switchStyle - obter recurso de erro não encontrado - por que?
  • Como obter cliques no button no fragment do host do fragment de dialog
  • Crie um trabalho do Android com o ConnectInstrumentTest não está funcionando no Jenkins
  • Substituindo um personagem por outro personagem em uma string no Android?
  • O que é uma class Full Android Database Helper paira um database SQLite existente?
  • Extraia a image em preto e branco do format NV21 da câmera 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.

  • Como restaurair o Collapseing Toolbair Layout State após a mudança de orientação da canvas
  • Não foi possível resolview a superclass de atividade
  • Atualizair guias da atividade de uma guia em um Android TabHost
  • Como adicionair emoticon animado no TextView ou EditText no Android
  • Várias linhas são inseridas com o ContentProvider
  • Como combinair duas lists de matriz e mostrair em uma list no android
  • 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.