Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Como posso checar se um determinado id está no banco?

Olá!

Estou utilizando o seguinte código (que não funciona como esperado pois o c.count() retorna o valor '0' mesmo quando existe a linha em questão):

 public boolean isAlunoInTheDB(int id){
        boolean result = false;
        SQLiteDatabase db = getReadableDatabase();
        String query = "SELECT * FROM alunos WHERE id="+id+";";
        Cursor c = db.rawQuery(query, null);
        if(c.count()>0){
            result = true;
        }
        return result;
    }

Alguma dica?

Muito obrigado!

4 respostas

*c.getCount()

solução!

Oi Euclides, tudo bem ?

Cara acabei de fazer um teste com seu código e ele executou a busca sem nenhum problema.

O que pode estar acontecendo é você estar fazendo a busca por um id que não possui mais no banco de dados.

Espero ter ajudado

package br.com.caelum.testebancodados;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by matheus on 25/08/16.
 */
public class AlunoDao extends SQLiteOpenHelper {

    public AlunoDao(Context context) {
        super(context, "Teste", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {


        sqLiteDatabase.execSQL("Create table Alunos(id integer primary key, nome text not null);");
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }

    public void salva(Aluno aluno) {
        Log.d("Teste", "nome :" + aluno.getNome());

        ContentValues valores = new ContentValues();

        valores.put("nome", aluno.getNome());

        long insert = getWritableDatabase().insert("Alunos", null, valores);

        Log.d("id", "id" + insert);
    }

    public List<Aluno> listagem() {
        List<Aluno> lista = new ArrayList<>();

        Cursor cursor = getReadableDatabase().rawQuery("select * from Alunos", null);
        while (cursor.moveToNext()) {
            Aluno aluno = new Aluno();

            aluno.setId(cursor.getLong(cursor.getColumnIndex("id")));
            aluno.setNome(cursor.getString(cursor.getColumnIndex("nome")));

            lista.add(aluno);
        }

        return lista;
    }

    public boolean isAlunoInTheDB(int id) {
        boolean result = false;
        SQLiteDatabase db = getReadableDatabase();
        String query = "SELECT * FROM alunos WHERE id=" + id + ";";
        Cursor c = db.rawQuery(query, null);
        if (c.getCount() > 0) {
            result = true;
        }
        return result;
    }
}

Muito obrigado!