2010-04-19 50 views
8

我有一個ResultSet對象,其中包含從sql查詢返回的所有行。如何僅從java.sql.ResultSet獲取第一行?

我希望能夠(在Java代碼中,不強制它在SQL中)能夠接受ResultSet並將其轉換爲僅包含1(第一個)行。

實現這個目標的方法是什麼?另外,是否有另一個合適的類(java.sql或其他地方的某個地方)只存儲一行而不是修剪我的ResultSet?

謝謝!

+2

爲什麼不能在SQL? – gbn 2010-04-19 14:03:02

回答

15

對於僅僅限制在result set行數的目的,你可以做到以下幾點:

String yourQuery = "select * from some_table"; 
PreparedStatement statement = connection.prepareStatement(yourQuery); 
statement.setMaxRows(1); 
rs = statement.executeQuery(); 

至於那隻能容納一排一個特定的類,這真的取決於你想要處理數據。例如,您可以提取result set的內容並將它們存儲在一個數組中,或者如果您需要名稱以及值map。如果您寧願使用特定對象而不是通用數據結構,也可以將數據讀入POJO。

5
+0

這看起來像我需要的東西 - 你能告訴我一個如何使用它來取現有的ResultSet(可能包含多行)並修改它(或創建一個新的ResultSet)只包含第一行的例子嗎?我只是因爲已經創建了ResultSet對象而感到困惑。謝謝 – llm 2010-04-19 14:02:36

+0

@llm爲什麼要在現有ResultSet上執行此操作,而不是在執行語句之前執行此操作?您將失去驅動程序優化查詢以僅返回所需數據的可能性。 – ig0774 2010-04-19 14:44:32

4

您參考需要數據單排,在這種情況下,我會說,使用ResultSet可能是一個壞主意因爲這將是通常消耗的數據庫資源直到關閉(例如底層java.sql.Connection)。

相反,我建議將您的ResultSet的第一行讀入POJO,可能使用Spring的JDBC實用程序類(例如RowMapper)來簡潔地實現此目的。緊接着,關閉ResultSet和相關的StatementConnection(或允許Spring爲你做)。

相關問題