is_there_something_wrong
@is_there_something_wrong
java - падаван, SEO

Как сделать рандомный вывод текста по id из SQLite?

Есть БД, в ней 2 столбца id и текст. Ни как не могу догнать, как сделать вывод текста рандомно по id при нажатии на кнопку. Может кто подскажет или намекнет?

Вот код:
//Клик по кнопке
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Random random = new Random();
                String product = "";


                Cursor cursor = mDb.rawQuery("SELECT * FROM mysovet", null);
                cursor.moveToFirst();
                while (!cursor.isAfterLast()) {
                    product = cursor.getString(1);
                    cursor.moveToNext();
                }
                cursor.close();

                textView.setText(product);
  • Вопрос задан
  • 1304 просмотра
Решения вопроса 1
samodum
@samodum
Какой вопрос - такой и ответ
SELECT * FROM my_table ORDER BY RANDOM() LIMIT 1;
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
LaRN
@LaRN
Senior Developer
Можно вот так попробовать:
1 получаем максимальный идентификатор из таблицы, например таким запросом:
SELECT max(Id) FROM mysovet
2 получаем случайное число из интервала от 0 до числа полученного в п.1.
3 получаем запись из бд например таким запросом:
Select max(Id) FROM mysovet where Id <= число полученное в п.2.
Ответ написан
Комментировать
keydon2
@keydon2
...
А в чем вопрос собственно?
SQL запросы составлять не умеем или рандомное число получать? Скорее всего гуглить не умеем.
int Google = random.nextInt(count));
"SELECT text FROM table WHERE id=" + Google
где text - название столбца с текстом, count - количество полей, скорее всего надо получить раньше запросом
"SELECT COUNT() FROM table"
Ответ написан
@AlexMDD
Нужно выбирать оптимальную стратегию. Функции выбора случайных строк в SQL нет, поэтому я генерирую вспомогательную таблицу со случайными числами. В таблице 2 колонки: 1 колонка id строки, 2 колонка - случайное число. В результате сортировки этой рандомной таблицы по 2 колонке, в первой колонке у тебя будут случайные строки из основной таблицы. Можешь генерировать рандомную таблицу перед каждым запросом, либо, если записей очень много, генерировать ее один раз и при каждом запросе, пробегать по ней и запоминать позицию, где остановился. При следующем запросе, пробегать ее уже с того места. Когда дошел до конца - перегенерировать и начать заново. Предыдущие ответы могут не подойти, если у тебя ID идут не по порядку. К тому же, функция генерации рандомного числа, может часто возвращать уже сгенерированные числа. А в моем методе, пока ты не выведешь все записи, они не будут повторяться.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы