0

SQLiteデータベースから、KEY_ALCOHOL列に「Liquor」が含まれるすべてのエントリを取得しました。選択したグループからランダムなエントリを選択するにはどうすればよいですか?

これが私がグループを取得する方法です:

public Cursor getAlcohol(String alcohol) throws SQLException 
{
    Cursor mCursor =
            myDataBase.query(true, DB_TABLE, new String[] {
                    KEY_ROWID,
                    KEY_ALCOHOL, 
                    KEY_TYPE,
                    KEY_BRAND,
                    KEY_PRICE
                    }, 
                    KEY_ALCOHOL + "=?", 
                    new String[] { alcohol },
                    null, 
                    null, 
                    null, 
                    null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;
}

これは約60の異なるエントリを返し、ランダムに1つだけを選択する必要があります。

編集

これは、データベースヘルパー.javaでの2回目の試行です。

public Cursor getTest(String test) throws SQLException 
{
    Cursor mCursor =
            myDataBase.query(true, DB_TABLE, new String[] {
                    KEY_ROWID,
                    KEY_ALCOHOL, 
                    KEY_TYPE,
                    KEY_BRAND,
                    KEY_PRICE
                    }, 
                    KEY_ALCOHOL + "=?", 
                    new String[] { test },
                    null, 
                    null, 
                    "RANDOM()", 
                    "LIMIT 1");
    return mCursor;
}

これは私がメインアクティビティでそれを呼んでいる方法です:

myDbHelper.openDataBase();
    Cursor c = myDbHelper.getTest("Liquor");
    if (c.moveToFirst())
    {
        do {          
            DisplayTitle(c);
        } while (c.moveToNext());
    }
    myDbHelper.close();

}

public void DisplayTitle(Cursor c)
{
    Toast.makeText(this, 
            "id: " + c.getString(0) + "\n" +
            "ALCOHOL: " + c.getString(1) + "\n" +
            "TYPE: " + c.getString(2) + "\n" +
            "BRAND:  " + c.getString(3) + "\n" +
            "PRICE:  " + c.getString(4),
            Toast.LENGTH_LONG).show();        
} 
4

2 に答える 2

1

追加する必要があります

ORDER BY RANDOM() LIMIT 1;

あなたのクエリに。だからこれを試してください(テストされていません):

        myDataBase.query(true, DB_TABLE, new String[] {
                KEY_ROWID,
                KEY_ALCOHOL, 
                KEY_TYPE,
                KEY_BRAND,
                KEY_PRICE
                }, 
                KEY_ALCOHOL + "=?", 
                new String[] { alcohol },
                null, 
                null, 
                "RANDOM()", 
                "LIMIT 1");
于 2012-09-13T14:27:49.063 に答える
0

でサイズを取得し、mCursor.getCount()0 内の数値をランダムに選択してカウントします ( How do I generate random integers within a specific range in Java? を参照)。mCursor をmCursor.moveToPosition(randomInt)で移動し、行を取得します。

于 2012-09-13T14:24:47.390 に答える