【问题标题】:Android SQL CursorAndroid SQL 游标
【发布时间】:2021-11-06 05:03:46
【问题描述】:

我在 Android 上使用 SQLite 数据库,我需要表中的特定值。我有一个DataBaseHelper 课程。

private static final String TABLE_NAME = "my_task";
private static final String COL1 = "ID";
private static final String COL2 = "name";
private static final String COL3 = "status";
private static final String COL4 = "rec"; 

我必须获取给定name 的列rec 的值(它是0 或1)。我有这个功能来完成任务:

public Cursor getRec(String task) {
    SQLiteDatabase db = this.getWritableDatabase();

    String q = "SELECT " + COL4 + " FROM " + TABLE_NAME + " WHERE " + COL2 + " = ?";

    Cursor data = db.rawQuery(q, new String[] { task });
    return data;
}

我不知道如何从这个返回的游标中获取所需的值。我是新手,所以请帮助我。

【问题讨论】:

    标签: java android sqlite android-sqlite android-cursor


    【解决方案1】:

    函数getRec() 返回一个Cursor,你可以这样称呼它:

    Cursor c = getRec("John");
    

    然后你必须检查游标是否包含任何行,如果有,你可以提取第一行的值:

    String rec;
    if (c.moveToFirst()) rec = c.getString(0);
    c.close();
    

    可以查看变量rec的值:

    • 如果是null,则表中未找到'John'
    • 如果不是null,则变量rec 包含表中rec 列的值。

    我假设您希望查询的结果只有 1 行。

    如果您期望超过 1 行,则使用一个循环来收集列表中返回的所有 recs:

    ArrayList<String> list = new ArrayList();
    while (c.moveToNext()) {
        list.add(c.getString(0));
    }
    c.close();
    

    【讨论】:

    • 非常感谢,它按预期工作。我有一个疑问,如果桌子上有两个“约翰”会发生什么?它会得到第一个,对吧?但是如果我想要第二个或第三个我该怎么办?
    • 非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多