访问sqlite数据库结果以填充视图

时间:2016-03-08 10:35:30

标签: android database sqlite

我有一个使用此方法的数据库类:

public Cursor getQuoteById(int qid)
{
    SQLiteDatabase db = this.getReadableDatabase();
    String selectQuery = "SELECT * FROM quotes a LEFT JOIN authors b ON b.author_id=a.quote_author WHERE a.quote_id = ?";
    Cursor results = db.rawQuery(selectQuery, new String[]{String.valueOf(qid)});
    return results;
}

在我的活动中,我想要的只是使用结果来填充视图元素。我有这个:

    Qdb = new DbHelper(this);
    Cursor results = Qdb.getQuoteById(Integer.parseInt(id));
    authorname = (TextView) findViewById(R.id.share_author_name);
    authorname.setText(results.getString(results.getColumnIndex("first_name")));

我收到错误:

  

android.database.CursorIndexOutOfBoundsException:请求索引-1,大小为1

任何人都可以指出我做错了吗?

1 个答案:

答案 0 :(得分:2)

您需要在访问其数据之前调用moveToFirst(),并在结果为空的情况下检查返回值。

// e.g.
if(!cursor.moveToFirst())
    return;
// now access the data

默认情况下,在查询返回后,位置将位于第一个数据集之前的-1