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
循环检索多行。)
我有一个应用程序可以使用 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
循环检索多行。)