【问题标题】:Java SQL Resultset retrieval order is not correctJava SQL 结果集检索顺序不正确
【发布时间】:2013-08-09 05:11:21
【问题描述】:

您好,我的表中有以下三行说 tb1

key   time   id   rowid
X     11:40  1      1
Y     4:50   1      2
Z     6:48   1      2 

现在我使用 JDBC 来获取记录并遍历结果集,如下所示:

rs = statement.executeQuery("select * from tb1")
ResultSetMetaData md = rs.getMetaData();
int cols = md.getColumnCount();
while(rs.next())
{
   for(int i = 1; i <= cols ; i++)
   {
     System.out.println("col name " + md.getColumnName(i));
     System.out.println("col name " + rs.getObject(i));
   }

}

当我奇怪地执行上面的代码时,它总是先打印第二行,然后是第一行,然后是第三行。简而言之,结果集数据检索不按顺序进行。我不明白为什么?请指导。提前致谢。

【问题讨论】:

  • 为什么要按顺序排列?由于您没有在查询中包含order by 子句,因此订单未定义。
  • 当您使用order by 时会发生同样的情况吗?

标签: java jdbc


【解决方案1】:

您没有指定“order by”子句。通常,数据库不需要以任何顺序返回行,除非指定了“order by”子句。在您的 select 语句中添加 order by 子句。

【讨论】:

  • 您好,感谢您的意见。在数据库表中的行与此处编写的完全相同,因此结果集也应该按原样返回行。还是不是那样的?
  • 关系数据库可以按照插入的顺序返回行,但如果没有“order by”子句,它当然不必这样做。
  • 我前段时间遇到过同样的问题。本机 sql 从 hibernate 和 toad 返回的结果集顺序不同。所以 rgettman 是对的。使用“order by”语句。
猜你喜欢
  • 2020-01-05
  • 2021-11-19
  • 2014-07-28
  • 2021-07-23
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 2012-08-03
  • 1970-01-01
相关资源
最近更新 更多