从条件数据库中获取随机数据

时间:2015-07-29 20:43:29

标签: java android database random

所以在这里我试图从我的表中得到一个随机的问题,其中列“stat”为0,无论如何这里的问题是它不会接受随机int所以c.moveToPosition(rnd)会出错或者我现在不这样做会导致应用程序粉碎。这是代码请帮助!

public String[] databasetostring ()  {
    String dbstring = "";
    String optstring = "";
    SQLiteDatabase db = getWritableDatabase();
    String query = "SELECT * FROM " + TABLE_QUESTIONS + " WHERE 1";

    Cursor c = db.rawQuery(query, null);
    c.moveToFirst();

    while (!c.isAfterLast()){
        if (   c.getInt(c.getColumnIndex("stat")) != 1   ){
                dbstring += c.getString(c.getColumnIndex("question"));
                dbstring += "\n";
                optstring += c.getString(c.getColumnIndex("answer"));
                optstring += "\n";

        }
        int rnd = new Random().nextInt(c.getCount());
        c.moveToPosition(rnd);
    }
    db.close();
    c.close();
    return new String[] {dbstring, optstring};

}

这是logcat,它一直进入那个循环!

07-29 22:40:07.352  10939-10949/com.example.bibiwars.digital D/dalvikvm GC_FOR_ALLOC freed 0K, 23% free 6057K/7824K, paused 20ms, total 20ms
07-29 22:40:07.352  10939-10939/com.example.bibiwars.digital D/dalvikvm GC_FOR_ALLOC freed 2061K, 49% free 3995K/7824K, paused 0ms, total 0ms
07-29 22:40:07.362  10939-10939/com.example.bibiwars.digital D/dalvikvm﹕ GC_FOR_ALLOC freed <1K, 39% free 4820K/7824K, paused 10ms, total 10ms
07-29 22:40:07.362  10939-10939/com.example.bibiwars.digital D/dalvikvm﹕ GC_FOR_ALLOC freed 824K, 34% free 5232K/7824K, paused 0ms, total 0ms

1 个答案:

答案 0 :(得分:0)

我建议你有点粗暴地实施这些东西 尝试将所有问题作为字符串放入(例如)ques []和opt []中的相应选项。然后,获得问题[]的大小,该大小对应于您拥有的问题总数。现在,选择一个随机数b / w [0,count)并在你的应用程序中使用它 你现在可以使用相同大小的bool flag []保留一个问题问题的标志 希望这会有所帮助。