使用游标获取字段值

2022-09-01 07:58:28

我正在创建一个应用程序,但我遇到了问题。我有一个,当我尝试用这个函数获取值时,它会返回我一个:CursorSQLiteDatabaseCursor

public Cursor fetchOption(long rowId) throws SQLException {

    Cursor mCursor = mDb.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,
        KEY_TITLE, KEY_BODY}, KEY_ROWID + "=" + rowId, null,
        null, null, null, null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;

}

我不知道如何获取.如果我这样做:Cursor

String a = mOptionDb.fetchOption(0).getColumnName(0).toString();
String b = mOptionDb.fetchOption(0).getColumnName(1).toString();
String c = mOptionDb.fetchOption(0).getColumnName(2).toString();

我只获取列 () 的名称,而不获取值。关于如何实现这一目标的任何建议?_id, title, body


答案 1

我认为你可以忘记检查空值。

相反,请检查是否有数据,然后使用游标访问列:

Cursor cursor = fetchOption(0);

if (cursor.moveToFirst()) // data?
   System.out.println(cursor.getString(cursor.getColumnIndex("title")); 

cursor.close(); // that's important too, otherwise you're gonna leak cursors

阅读Android教程也可能是有意义的。记事本教程似乎符合要求:http://developer.android.com/guide/tutorials/notepad/index.html


答案 2

您可以使用 的方法来检索结果中的值:Cursorget*

long id = cursor.getLong(cursor.getColumnIndex("_id"));
long title = cursor.getString(cursor.getColumnIndex("title"));
...

更好的做法显然是使用常量(通常由ContentProviders提供)而不是使用硬编码字符串调用to。getColumnIndex


推荐