首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android SQLite如何获取特定列:行值

Android SQLite如何获取特定列:行值
EN

Stack Overflow用户
提问于 2011-07-12 00:43:23
回答 4查看 19.3K关注 0票数 1

我有一个数据库,我正在使用以下命令对其进行查询

Cursor mCursor = mapDb.query(MY_TABLE, new String[] {KEY_ONEID, KEY_TWOID}, "trim("+KEY_TWOID + ") != '' ", null, null, null, null);

在SQL术语中,字面意思是:SELECT OneId, TwoId FROM auth WHERE trim(TwoId) != ''

在我的SQLite浏览器中,使用原始的SQL查询可以显示相关的行,因此游标对象应该包含相同的结果。

其次,在我的java方法中,我使用了一个条件来检查这个结果是否有任何内容。

代码语言:javascript
复制
    if(mCursor.getColumnIndex(KEY_ONEID) > -1)  //if > -1 then the mCursor returned a row
    {

       if(mCursor.getString(mCursor.getColumnIndex(KEY_ONEID)).contains(id)) //breaks here
                return mCursor.getString(mCursor.getColumnIndex(KEY_TWOID));
            else
                return "";
    }

但是由于某些原因,即使mCursor散列映射应该返回所有值,下一条条件语句

mCursor.getString(mCursor.getColumnIndex(KEY_ONEID)).contains(id)

仍然返回:An exception occurred: android.database.CursorIndexOutOfBoundsException

这一行抛出了异常:mCursor.getString(mCursor.getColumnIndex(KEY_ONEID)),返回语句中的下一项也抛出了异常

我对如何检索特定的行值感到困惑!因为我已经提取了数据库并运行了相同的查询,并且可以清楚地看到我想要的两个值都确实存在!

游标函数没有提供很多其他的方法来检索值,所以我很欣赏你的见解!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-07-12 00:56:50

您需要将游标定位到第一行,然后才能从中获取数据。为此,您可以调用:mCursor.moveToFirst()。此外,此方法调用返回一个布尔值,如果没有结果,该布尔值将为false;因此,您还可以使用它来防止出现这种情况。

如果需要遍历多个结果,那么在调用mCursor.moveToFirst()之后,可以使用mCursor.moveToNext()方法逐个遍历结果行。当它到达数据集的末尾时,它再一次返回false。

希望这是有意义的。

票数 6
EN

Stack Overflow用户

发布于 2012-06-27 17:30:34

您可以像这样迭代游标...

代码语言:javascript
复制
Cursor c=dbhelper.getQueById(i);
if(c.getCount()>0)
{
    for(c.moveToFirst();!c.isAfterLast();c.moveToNext())
    {
        txt1.setText(c.getString(0));
        txt2.setText(c.getString(1));
        txt3.setText(c.getString(2));   

    }
}

else
{
    Log.d(" Null value in cursor ", " null ");
}
c.close();
dbhelper.close();
票数 2
EN

Stack Overflow用户

发布于 2011-07-12 00:57:11

在尝试调用mCursor.getString之前,请先尝试调用mCursor.moveToFirst()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6653502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档