SQL Java - 使用游标返回10行的简单查询

时间:2012-08-09 00:01:41

标签: java sql database sqlite

我有一个包含70条记录的SQLite数据库,并希望使用游标获取其中10条记录。

我有10条记录KEY_ROWID(主键)2, 3, 15, 23, 35, 50, 51, 60, 61, 64

检索这些记录的SQL是什么?

这是我到目前为止所做的,但我认为这不会起作用......

我应该使用WHERE还是HAVING条款?

任何帮助都会很棒。

public Cursor getTopTen() {

    String ids = "2, 3, 15, 23, 35, 50, 51, 60, 61, 64";

    SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
    queryBuilder.setTables(DATABASE_TABLE);

    String[] columns = new String[] { KEY_ROWID, RECIPE, DESC, PREPTIME,
            COOKTIME, SERVES, CALORIES, FAT, CATEGORY, FAV };

    Cursor myCursor = queryBuilder.query(myDataBase, columns, KEY_ROWID + "="
            + "'" + ids + "'", null, null, null, null);

    return myCursor;
}

在SQL中,上面的java是:

SELECT * FROM myDataBase WHERE KEYROWID = "2, 3, 15, 23, 35, 50, 51, 60, 61, 64".

2 个答案:

答案 0 :(得分:2)

SQL应该是:

SELECT * FROM myDataBase WHERE KEYROWID IN (2, 3, 15, 23, 35, 50, 51, 60, 61, 64)

如果要获取列值在特定值列表中的所有行,则必须使用IN operator

所以你的代码应该是:

public Cursor getTopTen() {

    String ids = "2, 3, 15, 23, 35, 50, 51, 60, 61, 64";

    SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
    queryBuilder.setTables(DATABASE_TABLE);

    String[] columns = new String[] { KEY_ROWID, RECIPE, DESC, PREPTIME,
            COOKTIME, SERVES, CALORIES, FAT, CATEGORY, FAV };

    Cursor myCursor = queryBuilder.query(myDataBase, columns, KEY_ROWID + " IN ("
            + ids + ")", null, null, null, null);

    return myCursor;
}

答案 1 :(得分:0)

在您的情况下,您应该使用WHERE子句而不是HAVING子句。