android显示随机数据

时间:2018-07-16 17:52:05

标签: android sqlite android-studio

我有一些要随机显示的数据库数据,并且只显示5个数据,我尝试使用ORDER BY RAND(),但是当我打开应用程序时会崩溃

  

下面是我的语法查询

public List<Soal> getSoal(){
    List<Soal> listSoal = new ArrayList<Soal>();
    String query = "select * from tbl_soal ORDER BY RAND() LIMIT 5";

    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(query, null);

    if(cursor.moveToFirst()){
        do{
            Soal s = new Soal();
            s.setSoal(cursor.getString(1));
            s.setPil_a(cursor.getString(2));
            s.setPil_b(cursor.getString(3));
            s.setPil_c(cursor.getString(4));
            s.setPil_d(cursor.getString(5));
            s.setJwban(cursor.getInt(6));
            s.setGambar(cursor.getInt(7));
            listSoal.add(s);
        }while(cursor.moveToNext());
    }

    return listSoal;
}
  

那么错误在哪里,或者我的问题有解决方案吗?

1 个答案:

答案 0 :(得分:0)

您也可以检查此答案 https://stackoverflow.com/a/23628508/6672577

public List<Soal> getSoal() {
    List<Soal> listSoal = new ArrayList<Soal>();
    String query = "SELECT * FROM table ORDER BY RANDOM() LIMIT 5";

    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(query, null);
    if (cursor != null) { // To check that cursor is not null.
        if (cursor.moveToFirst()) {
            do {
                Soal s = new Soal();
                s.setSoal(cursor.getString(1));
                s.setPil_a(cursor.getString(2));
                s.setPil_b(cursor.getString(3));
                s.setPil_c(cursor.getString(4));
                s.setPil_d(cursor.getString(5));
                s.setJwban(cursor.getInt(6));
                s.setGambar(cursor.getInt(7));
                listSoal.add(s);
            } while (cursor.moveToNext());
        }
    }
    return listSoal;
}