gpt4 book ai didi

java - 光标为空,但查询(据说)是正确的

转载 作者:行者123 更新时间:2023-12-02 11:15:33 28 4
gpt4 key购买 nike

我遇到了一个非常奇怪的问题。我的代码 fragment 看起来像这样

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;

(抱歉,不是英语惯例,但它是为了快速、常规的项目)

整个应用程序的想法是帮助我的 friend 治疗他祖母的糖尿病。他会插入血糖水平测试结果(cukier),并自动检查测试时间(godzina)。基于这些,应用程序应该返回一个完整的结果 (wynik),以及所需的胰岛素剂量 (dawka)、胰岛素类型 (insulina) 以及应抽取血液的 body 部位 (cialo)。

数据库看起来像这样: enter image description here

举个例子。血液结果是 10(这是用户插入的唯一内容),现在是晚上 7 点(19,按照 24 小时惯例 - 程序给出了最接近的测试时间,所以是 18)。所以,查询看起来像

SELECT * FROM insulina WHERE godzina = 18 AND cukier = 10

这是我的问题。该应用程序将光标长度识别为 0(应该是 1),即使我与数据库创建相关的其他应用程序(SQLite 的数据库浏览器)使用相同的查询正确给出了我的结果 enter image description here

Android Studio 还表示数据库已成功打开。

我找不到这里的错误。我对这个问题真的很困惑。

最佳答案

我认为查询应该是:

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

看起来您正在使用“尝试使用资源”,因此没有明确需要关闭。

关于java - 光标为空,但查询(据说)是正确的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50309174/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com