Ответ 1
попробуйте это
Cursor cursor = this.db.query("YourTable Order BY RANDOM() LIMIT 1",
new String[] { "*" }, null, null, null, null, null);
Я хочу извлечь случайные строки из базы данных приложения sqlite в Android. Я знаю, что с помощью sqlite вы можете выбрать случайные строки с помощью:
SELECT * FROM table ORDER BY RANDOM() LIMIT 1;
В приложении у меня есть что-то вроде этого
return mDb.query(TABLE, new String[] {"col1", "col2"}, null, null, null, null, "Random()", "2");
это для извлечения двух случайных строк в таблице ТАБЛИЦА. Но он продолжает возвращать одни и те же строки. Что не так с этим утверждением?
Спасибо
попробуйте это
Cursor cursor = this.db.query("YourTable Order BY RANDOM() LIMIT 1",
new String[] { "*" }, null, null, null, null, null);
Задайте запрос, как показано ниже:
public Cursor getRandomDataItemFromDb(String tableName, int limit) {
Cursor cursor = db.rawQuery("SELECT * FROM " + tableName+ " ORDER BY RANDOM() LIMIT " + limit, null);
if (cursor.moveToFirst()) {
return cursor;
}
return cursor;
}
Готово
Используйте предложение orderBy, подобное этому
Cursor cursor = db.query(TABLE_NAME, projection, selection, selectionArgs, null, null, "RANDOM() limit 1");
Используйте случайную функцию как в строке в вашем запросе. Я дал вам образец ниже.
String orderBy = "RANDOM()";
Cursor dbc = this.db.query(TABLE_NAME, columnArray, null, null, null, null, orderBy, null);