rawQuery()Cursor上字段槽0,1的错误请求

时间:2011-10-06 13:54:03

标签: android sql cursor request

我对android很新,我有以下问题。 这是我的代码,我正在尝试将数据库中的数据导入我的列表。

private List<Model> getModel(int a) {

    dbHelper = new DbHelper(this);
    db = dbHelper.getWritableDatabase();
    Log.d("Model Int: ", "Model int: " +  a);
    sql = "SELECT * FROM shows";
    resultCursor = db.rawQuery(sql, new String [] {});
    resultCursor.moveToFirst();

    List<Model> list = new ArrayList<Model>();
        list.add(get(Html.fromHtml(resultCursor.getString(a)).toString()));

    for (resultCursor.moveToFirst(); resultCursor.moveToNext(); resultCursor
            .isAfterLast()) {

            list.add(get(Html.fromHtml(resultCursor.getString(a))
                    .toString()));

    }

    startManagingCursor(resultCursor);
    resultCursor.close();
    db.close();
    dbHelper.close();

    return list;
}

工作正常,但是当我不想用*但是用

获取所有列时

sql = "SELECT title subtitle FROM shows";

代替。我得到这样的错误

  

ERROR / CursorWindow(371):字段槽0,1的请求错误。 numRows =   162,numColumns = 1

任何想法出了什么问题?

提前致谢。

2 个答案:

答案 0 :(得分:1)

SELECT title subtitle FROM shows

真的意味着

SELECT title AS subtitle FROM shows

英语:只选择一列:title,但在结果集中将该列重命名为“subtitle”。
这称为为列分配alias 请参阅:http://beginner-sql-tutorial.com/sql-aliases.htm

<强>解决方案
做:

SELECT title, subtitle FROM shows

现在您正在选择两列。

<强>声明
我不保证该链接中信息的质量,网上有很多质量差tutorials。我只看了“别名”部分, 部分看起来很有用。

答案 1 :(得分:0)

我并不完全理解你的问题,但我认为你需要特定领域

select title, subtitle from shows 

定义以逗号分隔的字段