Android - 光标无法正常工作

时间:2016-10-23 16:10:42

标签: android sqlite cursor

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

这是我用光标查看第二个表的方法。如果找到,则在alvara_db类中设置setter。稍后,我使用getter在另一个活动中显示textview上的信息。问题在于它根本没有设置信息。我的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();
}

1 个答案:

答案 0 :(得分:0)

您没有使用db.getAlvaras()返回的值。

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

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