Android 中来自 SQLite 数据库的单行
Single Row from SQLite Database in Android
我正在努力尝试通过 ID 从我的数据库中获取一行,但无法弄清楚为什么它不起作用。
在我的 DatabaseHelper Class 我有这段代码
public Cursor getData(String Id) {
SQLiteDatabase db = this.getWritableDatabase();
Cursor res = db.rawQuery("select * from " + BirdDB.BIRD_TABLE + "Where BIRD_ID = ?", new String[]{Id});
return res;
}
Col_0是table中小鸟的ID。
这是我 activity 页面中的内容。
public void viewASingle() {
viewABird.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
Cursor res = MainActivity.myDB.getData(txt_Id.getText().toString());
if (res.getCount() == 0) {
showMessage("Error", "Nothing Found");
return;
}
StringBuffer buffer = new StringBuffer();
while (res.moveToNext()) {
buffer.append("ID :" + res.getString(0) + "\n");
buffer.append("Name : " + res.getString(2) + "\n");
buffer.append("Notes : " + res.getString(3) + "\n");
buffer.append("Location : " + res.getString(4) + "\n");
buffer.append("Date And Time : " + res.getString(5) + "\n");
}
showMessage("Data", buffer.toString());
}
}
);
}
所以我确保其余代码正常工作,并且是通过 toast 消息。该应用程序因 rawQuery 语句而崩溃,我相信我做对了。我确实检查了其他堆栈溢出问题并尝试了他们的陈述,但遗憾的是无济于事。有人有什么想法吗?
在 "Where BIRD_ID = ?"
的连接之前留下一个 space,因此 table 的名称不会符合条件。另外我建议使用异常处理,它会帮助你调试,也会让你的程序更 stable
我正在努力尝试通过 ID 从我的数据库中获取一行,但无法弄清楚为什么它不起作用。
在我的 DatabaseHelper Class 我有这段代码
public Cursor getData(String Id) {
SQLiteDatabase db = this.getWritableDatabase();
Cursor res = db.rawQuery("select * from " + BirdDB.BIRD_TABLE + "Where BIRD_ID = ?", new String[]{Id});
return res;
}
Col_0是table中小鸟的ID。 这是我 activity 页面中的内容。
public void viewASingle() {
viewABird.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
Cursor res = MainActivity.myDB.getData(txt_Id.getText().toString());
if (res.getCount() == 0) {
showMessage("Error", "Nothing Found");
return;
}
StringBuffer buffer = new StringBuffer();
while (res.moveToNext()) {
buffer.append("ID :" + res.getString(0) + "\n");
buffer.append("Name : " + res.getString(2) + "\n");
buffer.append("Notes : " + res.getString(3) + "\n");
buffer.append("Location : " + res.getString(4) + "\n");
buffer.append("Date And Time : " + res.getString(5) + "\n");
}
showMessage("Data", buffer.toString());
}
}
);
}
所以我确保其余代码正常工作,并且是通过 toast 消息。该应用程序因 rawQuery 语句而崩溃,我相信我做对了。我确实检查了其他堆栈溢出问题并尝试了他们的陈述,但遗憾的是无济于事。有人有什么想法吗?
在 "Where BIRD_ID = ?"
的连接之前留下一个 space,因此 table 的名称不会符合条件。另外我建议使用异常处理,它会帮助你调试,也会让你的程序更 stable