Android SQL 游标

Posted

技术标签:

【中文标题】Android SQL 游标【英文标题】:Android SQL Cursor 【发布时间】: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;

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

【问题讨论】:

【参考方案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();

【讨论】:

非常感谢,它按预期工作。我有一个疑问,如果桌子上有两个“约翰”会发生什么?它会得到第一个,对吧?但是如果我想要第二个或第三个我该怎么办? 非常感谢!

以上是关于Android SQL 游标的主要内容,如果未能解决你的问题,请参考以下文章

Android ListFragment 游标管理

游标在 Android 开发中有啥用?

Android重新使用游标

Android 游标

查看 Android 数据库游标

viewpager和滑动下游标