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::
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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.