#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. Я обнаружил проблему, я использовал идентификатор счетчика, а не идентификатор записи, поэтому я не смог найти запись в базе данных. Спасибо