我有一个应用程序,可以将数据插入到包含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();
}
答案 0 :(得分:0)
您没有使用db.getAlvaras()
返回的值。
相反,您的第二个代码段中的alvaras
变量可能未初始化 - 您发布的代码并未完全显示。
(另外,如果查询不匹配任何行,您可能需要检查moveToFirst()
的返回值,并添加do
- while
循环以检索多行。)