2012-08-09 96 views
0

我有一個包含70條記錄的SQLite數據庫,並希望使用遊標獲取這10條記錄。SQL Java - 使用遊標返回10行的簡單查詢

的10條記錄我有2, 3, 15, 23, 35, 50, 51, 60, 61, 64

一個KEY_ROWID(主鍵)什麼是獲取這些記錄的SQL?

這裏是我到目前爲止,但我不認爲這會工作...

我應該使用WHEREHAVING條款?

任何幫助將是偉大的。

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". 
+0

使用'WHERE';參見[維基百科關於'HAVING']的文章(http://en.wikipedia.org/wiki/Having_(SQL))。 – oldrinb 2012-08-09 00:04:05

回答

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; 
} 
+0

@Sterlok如何在java querybuilder中使用這個SQL? – tiptopjat 2012-08-09 00:23:28

+0

@tiptopjat查看更新回答 – Strelok 2012-08-09 00:26:48

+0

你美!有用。我的第一個應用程序已準備好進入市場!謝謝 – tiptopjat 2012-08-09 00:32:24

0

在你的情況,你應該使用WHERE子句,而不是HAVING子句中。