Android SQLite: я не могу выбрать с целочисленным полем

#java #android #sqlite #select #cursor

#java #Android #sqlite #выберите #курсор

Вопрос:

Я не могу запустить этот код в Android, используя java и sqlite.

Этот код не работает:

 Cursor c = read.rawQuery("SELECT * FROM frentista WHERE cast(codigo as text) = '4",null);
  

этот код работает:

 Cursor c = read.rawQuery("SELECT * FROM frentista WHERE nome = 'DANIEL'",null);
  

Я пробовал с ПРИВЕДЕНИЕМ и без ПРИВЕДЕНИЯ.

Я создал свою таблицу с помощью этого кода:

         sql = " CREATE TABLE IF NOT EXISTS frentista ( " 
            " codigo INTEGER," 
            " nome TEXT," 
            " rfid TEXT," 
            " senha TEXT," 
            " premia TEXT" 
            " )";
  

И это весь мой метод

     public Frentista select(int codigo) {
    String[] rfid;
    List<FrentistaRfid> listFrentistaRfid = new ArrayList<>();
    Frentista frentista = new Frentista();
    try {
        Cursor c = read.rawQuery("SELECT * FROM frentista WHERE nome = 'DANIEL'",null);

        Log.i("QTD_FRENT", String.valueOf(c.getCount()));
        c.moveToFirst();
        while (c.isAfterLast() == false) {
            Log.i("SELECT_VEND", "ENTROU NO WHILE");
            frentista.setCodigo(c.getInt(c.getColumnIndex("codigo")));
            frentista.setNome(c.getString(c.getColumnIndex("nome")));
            Log.i("FRENTISTA_SELECT", frentista.getNome());
            frentista.setSenha(c.getString(c.getColumnIndex("senha")));
            frentista.setPremia(c.getString(c.getColumnIndex("premia")));
            rfid = c.getString(c.getColumnIndex("rfid")).split(",");
            for(String item : rfid) {
                listFrentistaRfid.add(new FrentistaRfid(item));
            }
            frentista.setRfid(listFrentistaRfid);

            c.moveToNext();
        }

    } catch (Exception e) {
        Log.i("ERRO SELECT FRENTISTA: ",e.getMessage());
    }
    return frentista;
}
  

Когда я пытаюсь ВЫБРАТЬ без предложения WHERE, это работает. Моя проблема в том, ГДЕ с ЦЕЛОЧИСЛЕННЫМ ПОЛЕМ.

Курсор остается пустым, когда мой where находится с ЦЕЛОЧИСЛЕННЫМ полем

Комментарии:

1. Ваш код не работает, потому что вы пропустили закрывающую одинарную кавычку для 4 . Голосование за закрытие вопроса, потому что проблема заключается в опечатке.

Ответ №1:

попробуйте,

 Cursor c = read.rawQuery("SELECT * FROM frentista WHERE codigo = "   4 ,null);
  

Комментарии:

1. Я обнаружил проблему, я использовал идентификатор счетчика, а не идентификатор записи, поэтому я не смог найти запись в базе данных. Спасибо