Boa tarde!
Algum motivo para não podermos usar um count(*) ao invés de um cursor na query que pesquisa o telefone na tabela de alunos?
Att,
WB::
Boa tarde!
Algum motivo para não podermos usar um count(*) ao invés de um cursor na query que pesquisa o telefone na tabela de alunos?
Att,
WB::
Oi Wilson, acredito que não tem problema algum! Entretanto, precisará executar alguns passos a mais, vamos pegar o exemplo feito no curso:
public boolean ehAluno(String telefone) {
SQLiteDatabase db = getReadableDatabase();
Cursor c = db.rawQuery("SELECT * FROM Alunos WHERE telefone = ?", new String[]{telefone});
int resultados = c.getCount();
c.close();
return resultados > 0;
}
Veja que nesse instante apenas fazemos um getCount
, pois nem sempre teremos um retorno! Se fosse passar isso para o COUNT
seria:
public boolean ehAluno(String telefone) {
SQLiteDatabase db = getReadableDatabase();
Cursor c = db.rawQuery("SELECT COUNT(*) FROM Alunos WHERE telefone = ?", new String[]{telefone});
c.moveToFirst();
int resultados = c.getInt(0);
c.close();
return resultados > 0;
}
Veja que será necessário usar o método moveToFirst()
e depois o getInt()
com parâmetro 0. Se caso tentar usar o getCount()
direto da mesma forma como o que temos sem o COUNT, ele sempre vai retornar 1, pois o COUNT sempre dará um retorno para o Cursor, é por isso que é necessário o moveToFirst()
e depois pegar a primeira coluna com valor int
, pois essa primeira linha é justamente o valor do COUNT
.
Abraços.