我有个很奇怪的问题。我的片段就像这样
public Wynik getData(int pomiar, int godzina) {
Wynik wynik = null;
String query = "SELECT * FROM " + "insulina" + " WHERE godzina = " + godzina +
" AND cukier = " + pomiar;
SQLiteDatabase db = this.getReadableDatabase();
try (Cursor cursor = db.rawQuery(query, null)) {
Log.i("tag", "cursor length:" + cursor.getCount());
if (cursor.getCount() > 0) {
String s = DatabaseUtils.dumpCursorToString(cursor);
Log.d("s", s);
cursor.moveToFirst();
wynik = new Wynik
(cursor.getInt(cursor.getColumnIndexOrThrow("godzina")),
cursor.getString(cursor.getColumnIndexOrThrow("insulina")),
cursor.getInt(cursor.getColumnIndexOrThrow("dawka")),
cursor.getString(cursor.getColumnIndexOrThrow("cialo")));
}
cursor.close();
return wynik;(不好意思没有举行英语会议,但它应该是快速的,例行的项目)
整个应用程序的想法是帮助我的朋友治疗他祖母的糖尿病。他会插入血糖水平测试(cukier)的结果,并自动检查测试时间(godzina)。在此基础上,app应返回一个完整的结果(wynik),包括所需剂量的胰岛素(dawka)、胰岛素类型(胰岛素)和取血的部分身体(cialo)。
数据库如下所示:

举个例子。血检结果是10 (这是用户唯一要插入的东西),而且是晚上7点(按照24小时的惯例,19点--程序给出了最接近的测试时间,所以是18小时)。所以,查询看起来就像
SELECT * FROM insulina WHERE godzina = 18 AND cukier = 10这是我的问题。该应用程序将光标长度识别为0(应该是1),即使我的其他与数据库创建相关的应用程序( database for SQLite)使用相同的查询正确地给出了我的结果。

而且Android说数据库已经成功地打开了。
我在这里找不到错误。我真的很困惑于这个问题。
发布于 2018-05-12 18:54:00
我认为这个问题应该是:
String query = "SELECT * FROM insulina WHERE godzina = ? AND cukier = ?";
SQLiteDatabase db = this.getReadableDatabase();
try (Cursor cursor = db.rawQuery(query, new String[]{String.valueOf(godzina), String.valueOf(pomiar)})) {
//... rest of code此外,看起来您使用的是“使用资源进行尝试”,因此关闭并不是显式必要的。
https://stackoverflow.com/questions/50309174
复制相似问题