【问题标题】:My Cursor.moveToFirst always returns false我的 Cursor.moveToFirst 总是返回 false
【发布时间】:2018-06-29 12:48:11
【问题描述】:

我正在对我的数据库进行选择,而 cursor.moveToFirst 总是返回 false, 我已经在寻找答案,但什么也没有。 这是我的数据库功能

public List<Obra> buscarListaMapa(String tipoGeoReferenciamentoFiltro, String idJurisdicionadoFiltro) {
        SQLiteDatabase db = helper.getReadableDatabase();

        Cursor cursor = db.rawQuery("SELECT * FROM " + BancoDadosHelper.TABELA_OBRA + " WHERE "+ BancoDadosHelper.COLUNA_ID_TIPO_GEOREFENCIAMENTO + " = '"+tipoGeoReferenciamentoFiltro+"' and "+
                BancoDadosHelper.COLUNA_ID_JURISDICIONADO+" = '"+idJurisdicionadoFiltro+"'", null);


        List<Obra> listaMapa = new ArrayList<>();

        if (cursor.moveToFirst()) {
            do {
                String numObra = cursor.getString(cursor.getColumnIndex(BancoDadosHelper.COLUNA_NUM_OBRA));
                String descObra = cursor.getString(cursor.getColumnIndex(BancoDadosHelper.COLUNA_DESCRICAO_OBRA));
                String geoReferenciamento = cursor.getString(cursor.getColumnIndex(BancoDadosHelper.COLUNA_GEOREFERENCIAMENTO));
                String tipoObra = cursor.getString(cursor.getColumnIndex(BancoDadosHelper.COLUNA_TIPO_OBRA));
                Obra novaObra = new Obra(numObra, descObra, tipoObra, geoReferenciamento);
                listaMapa.add(novaObra);

            } while (cursor.moveToNext());
        }

        cursor.close();
        db.close();
        return listaMapa;
    }

当我在数据库 WORKBENCH 上进行相同的选择时,我的结果是

Workbench 执行相同选择的结果

【问题讨论】:

  • 这段代码是用扩展 SQLiteOpenHelper....的 DBHandler 类编写的吗?
  • 是的,但是我已经发现了错误,我使用的是不同的表,但是谢谢

标签: java android sql sqlite


【解决方案1】:

为光标添加空条件检查以确保您的光标有一些数据。

 if(cursor!=null{
 cursor.moveToFirst();
            do {
                String numObra = 
 cursor.getString(cursor.getColumnIndex(BancoDadosHelper.COLUNA_NUM_OBRA));
                String descObra = 
 cursor.getString(cursor.getColumnIndex(BancoDadosHelper.COLUNA_DESCRICAO_OBRA));
                String geoReferenciamento = 
 cursor.getString(cursor.getColumnIndex(BancoDadosHelper.COLUNA_GEOREFERENCIAMENTO 
 ));
                String tipoObra = 
 cursor.getString(cursor.getColumnIndex(BancoDadosHelper.COLUNA_TIPO_OBRA));
                Obra novaObra = new Obra(numObra, descObra, tipoObra, 
 geoReferenciamento);
                listaMapa.add(novaObra);

            } while (cursor.moveToNext());


 }

【讨论】:

  • 我正在进入 IF 语句,但 cursor.moveToFirst 仍然返回 false
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 2021-11-05
  • 2018-11-05
  • 2019-05-06
  • 2017-04-29
相关资源
最近更新 更多