使用id在数据库表中进行随机播放

时间:2012-01-20 10:38:40

标签: android

如何在android中对sqlite的数据库表的id进行洗牌。并使用表格的相应混洗id显示或检索数据。

例如:在程序员表中: id :1,2,3和级别:分别为实习生,大三和大四。

我的目的是将这些身份证改成各自的水平。如果首先使用junior加载id 2,那么如果我单击下一步,则可能显示1或3具有接受级别,依此类推。

我是android的新手。提前谢谢。

2 个答案:

答案 0 :(得分:2)

在sqllite中没有直接的方法来改组数据,但你可以通过以下方式实现这一点:

  1. 首先从数据库中获取ID。
  2. 然后使用Java Collection API进行随机播放(对于ex :: Collections.shuffle(shuffleList);)
  3. 最后使用随机播放列表更新数据库。
  4. 我希望它可以帮到你。

答案 1 :(得分:1)

事实上,

Ajay的解决方案非常有效。

从观察开始我们可以根据集合检索表的id(例如,计数5):

select *
from table_name
where _id in (4, 1, 2, 5, 3)

我们可以得出结果,如果我们可以生成字符串“(4,1,2,5,3)”,那么我们将比RAND()更有效。

例如,在Java中:

ArrayList<Integer> indices = new ArrayList<Integer>(rowsCount);
for (int i = 0; i < rowsCount; i++) {
    indices.add(i);
}
Collections.shuffle(indices, new Random());
String inClause = indices.toString();
inClause = inClause.replace('[', '(').replace(']', ')');

如果id有间隙,那么最初的arraylist“indices”是对id进行sql查询的结果。