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.