2013-08-07 94 views
0

您好我有以下三排在我的表說TB1Java的SQL結果集檢索順序不正確

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

} 

當我奇怪地執行上面的代碼時,它總是首先打印第二行,然後打印第一行然後打印第三行。簡而言之,結果集數據檢索不正確。我不明白爲什麼?請指導。提前致謝。

+4

他們爲什麼要這樣做?由於您的查詢中不包含'order by'子句,所以訂單未定義。 –

+0

當您使用'order by'命令時,是否也發生同樣的情況? –

回答

4

您尚未指定「order by」子句。通常,數據庫不需要按任何順序返回行,除非指定了「order by」子句。將order by子句添加到您的select語句中。

+0

嗨,感謝您的意見。在數據庫表中,行與這裏寫的完全相同,所以resultset也應該按原樣返回行。或者它不是那樣? – u449355

+2

關係數據庫可以按照與插入順序相同的順序返回行,但沒有「order by」子句,它當然不需要這樣做。 – rgettman

+1

我前段時間面臨同樣的問題。本地sql從休眠和蟾蜍返回的結果集不是相同的順序。所以rgettman是對的。使用「order by」語句。 –