【发布时间】:2020-07-26 13:41:33
【问题描述】:
我真的找不到这个问题的解决方案:
这里我有两个结果集,一个总是显示存储在我的数据库中的项目数,另一个是从中检索所有数据。 我想生成一个随机数,然后根据我数据库中的行号/id 生成一个随机项。由于我还很新,我不确定这是否是一种有效的方法。检索所有数据然后每次都对其进行迭代看起来不是很干净。特别是如果我有 1000 件物品并且随机生成的数字是 999。
PreparedStatement randomSelection = con.prepareStatement("SELECT * FROM items ORDER BY RAND() LIMIT 1"); {
String name = ((ResultSet) randomSelection).getString(2);
System.out.println(name);
}
尝试使用最后一行调用列 itemname。但是,我无法为这个问题寻找一个好的解决方案。非常感谢任何帮助,因为我对数据库还很陌生。
谢谢
编辑:这是我现在尝试的方法,但没有任何输出
同样的
ResultSet numberOfItemsInDataBase = stmt.executeQuery("SELECT count(*) FROM items;");
// this will return a number between 0 and the number of rows - 1
int id = new Random().nextInt(numberOfItemsInDataBase.getInt(1));
ResultSet itemsInDataBase = stmt.executeQuery("select * from items order by id limit 1 offset " + id);
if (itemsInDataBase.next()) {
String item = itemsInDataBase.getString(2);
System.out.println(item);
}
【问题讨论】:
-
您的 items 表是否有一个自动递增的主键,其连续值为 1,2,3,...?
-
我的“id”是一个主键而不是 null 所以是的,它从 1,2 等开始。