Java SQL结果集检索顺序不正确

Java SQL结果集检索顺序不正确,java,jdbc,Java,Jdbc,嗨,我的桌子上有下面三行,说tb1 key time id rowid X 11:40 1 1 Y 4:50 1 2 Z 6:48 1 2 现在,我使用JDBC获取记录并迭代resultset,如下所示: rs = statement.executeQuery("select * from tb1") ResultSetMetaData md = rs.getMetaData(); int cols = md.get

嗨,我的桌子上有下面三行,说tb1

key   time   id   rowid
X     11:40  1      1
Y     4:50   1      2
Z     6:48   1      2 
现在,我使用JDBC获取记录并迭代resultset,如下所示:

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));
   }

}

当我奇怪地执行上面的代码时,它总是先打印第二行,然后打印第一行,然后打印第三行。简而言之,resultset数据检索不正常。我不明白为什么?请导游。提前感谢。

您尚未指定order by条款。通常,除非指定了ORDERBY子句,否则数据库不需要以任何顺序返回行。将order by子句添加到select语句。

您尚未指定order by子句。通常,除非指定了ORDERBY子句,否则数据库不需要以任何顺序返回行。在select语句中添加order by子句。

为什么要按顺序排列?由于查询中没有包含order by子句,因此order是未定义的。当使用order by时是否会发生同样的情况?为什么它们应该是order?由于查询中未包含order by子句,因此未定义order。使用order by时是否会发生同样的情况?您好,谢谢您的输入。在数据库表中,行与此处写入的行完全相同,因此resultset也应按原样返回行。或者它不是这样的?关系数据库可以按照插入行的相同顺序返回行,但是如果没有ORDERBY子句,它当然不必这样做。我不久前也遇到过同样的问题。本机sql从hibernate和toad返回的结果集顺序不同。所以,托曼是对的。使用order by语句。您好,谢谢您的输入。在数据库表中,行与此处写入的行完全相同,因此resultset也应按原样返回行。或者它不是这样的?关系数据库可以按照插入行的相同顺序返回行,但是如果没有ORDERBY子句,它当然不必这样做。我不久前也遇到过同样的问题。本机sql从hibernate和toad返回的结果集顺序不同。所以,托曼是对的。使用ORDERBY语句。