2013-03-20 6 views
0

Я новичок в этом, так что медведь со мной, если я совершу какие-либо ошибки noob. Я пытаюсь написать базу данных и вернуть случайную запись из базы данных. Программа должна запустить функцию Randomize, которая будет обновлять текстовое представление при нажатии кнопки рандомизации. \ пустота Randomize общественности (View v) { view.setText (randRecipe());}Android-Извлечение случайной записи из базы данных SQLite?

public String randRecipe() 
    { 
     Random rand= new Random(); 
     int r= rand.nextInt(base.size()); 
     Recipe rec= base.get(r); 
     return rec.toString(); 
    } 

Это код, который я поставил в моей Randomize деятельности, и, хотя он работал когда-то по какой-то причине, мой программа вылетает каждый раз, когда я пытаюсь рандомизировать снова. base - это список, который я получил, содержащий все имена записей рецептов. Я понял, что, поскольку я использовал его для заполнения ListView, я мог бы использовать его снова, чтобы получить доступ к нему в рандомизации.

Должен ли я попытаться получить значение из базы данных напрямую? Если да, то как я могу это сделать, и может ли кто-нибудь привести пример?

+1

Я бы получил его непосредственно из базы данных. Для этого добавьте [ORDER BY random() limit 1] (http://stackoverflow.com/questions/1253561/sqlite-order-by-rand) в конец вашего SQL-запроса. – hd1

ответ

0

Попробуйте

db.query(tableName, null, null, null, null, null, "RANDOM()", "1"); 
0

общественности Курсор getRandom() {

Cursor cursor = myDataBase.rawQuery(
     "SELECT * FROM your_table_name ORDER BY RANDOM() LIMIT your_limit_here", null); 
if (cursor.moveToFirst()) { 
    return cursor; 
} 
return cursor; 

}

предположим, что вы хотите получить 50 данных случайным образом, чем ставить your_limit_here = 50; где your_limit - int.

попробуйте следующее: возможно, это поможет вам

Смежные вопросы