Android - 光标无法正常工作

Android - Cursor not properly working

我有一个应用程序可以使用 2 tables(项目和 alvara)将数据插入数据库 第二个 table 的插入方法取决于第一个 table 得到的类型。 (1 或 2)用于恢复想法。

这是我用光标查看第二个 table 的方法。如果找到,它会在 alvara_db class 的 setter 中设置。后来,我使用 getters 在另一个 activity 中显示有关文本视图的信息。问题是它根本没有设置信息。我的 Cursor 有什么问题吗?

提前致谢!

public ArrayList<alvara_db> getAlvaras(){
    SQLiteDatabase db = this.getReadableDatabase();
    ArrayList<alvara_db> projects = new ArrayList<>();
    String[] project = new String[]{String.valueOf(tipoprojetoid)};

    Cursor cur = db.rawQuery("SELECT placa, proj_exec, resp_tec, rtnum, parecer FROM alvara WHERE projetoid = ?", project);
    cur.moveToFirst();

    alvara_db alvaras = new alvara_db();
    alvaras.setPlaca(cur.getInt(cur.getColumnIndex("placa")));
    alvaras.setProj_exec(cur.getInt(cur.getColumnIndex("proj_exec")));
    alvaras.setResp_tec(cur.getString(cur.getColumnIndex("resp_tec")));
    alvaras.setRtnum(cur.getInt(cur.getColumnIndex("rtnum")));
    alvaras.setParecer(cur.getString(cur.getColumnIndex("parecer")));
    projects.add(alvaras);

    return projects;
}

我调用 getAlvaras 方法的片段:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.detalhes_projeto_alvara);
    db.getAlvaras();

    placa = alvaras.getPlaca();
    resp_tec = alvaras.getResp_tec();
    proj_exec = alvaras.getProj_exec();
    rtnum = alvaras.getRtnum();
}

您没有使用 db.getAlvaras() 中的 returned 值。

相反,您第二个代码段中的 alvaras 变量可能未初始化 - 您发布的代码并未准确显示。

(此外,如果查询不匹配任何行,您可能需要检查 moveToFirst() 的 return 值,并添加一个 do-while 循环检索多行。)