首页 > 解决方案 > Android SQLite:我无法选择整数字段

问题描述

我无法使用 java 和 sqlite 在 android 中运行此代码。

此代码不起作用:

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);

我尝试过使用 CAST 和不使用 CAST。

我用这段代码创建了我的表:

        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 子句的 SELECT 时,它是有效的。我的问题是 INTEGER FIELD 的 WHERE。

当我的位置在 INTEGER 字段时,光标保持空白

标签: javaandroidsqliteselectcursor

解决方案


尝试,

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

推荐阅读