我有一個ResultSet對象,其中包含從sql查詢返回的所有行。如何僅從java.sql.ResultSet獲取第一行?
我希望能夠(在Java代碼中,不強制它在SQL中)能夠接受ResultSet並將其轉換爲僅包含1(第一個)行。
實現這個目標的方法是什麼?另外,是否有另一個合適的類(java.sql或其他地方的某個地方)只存儲一行而不是修剪我的ResultSet?
謝謝!
我有一個ResultSet對象,其中包含從sql查詢返回的所有行。如何僅從java.sql.ResultSet獲取第一行?
我希望能夠(在Java代碼中,不強制它在SQL中)能夠接受ResultSet並將其轉換爲僅包含1(第一個)行。
實現這個目標的方法是什麼?另外,是否有另一個合適的類(java.sql或其他地方的某個地方)只存儲一行而不是修剪我的ResultSet?
謝謝!
對於僅僅限制在result set行數的目的,你可以做到以下幾點:
String yourQuery = "select * from some_table";
PreparedStatement statement = connection.prepareStatement(yourQuery);
statement.setMaxRows(1);
rs = statement.executeQuery();
至於那隻能容納一排一個特定的類,這真的取決於你想要處理數據。例如,您可以提取result set的內容並將它們存儲在一個數組中,或者如果您需要名稱以及值map。如果您寧願使用特定對象而不是通用數據結構,也可以將數據讀入POJO。
您參考需要店數據單排,在這種情況下,我會說,使用ResultSet
可能是一個壞主意因爲這將是通常消耗的數據庫資源直到關閉(例如底層java.sql.Connection
)。
相反,我建議將您的ResultSet
的第一行讀入POJO,可能使用Spring的JDBC實用程序類(例如RowMapper
)來簡潔地實現此目的。緊接着,關閉ResultSet
和相關的Statement
和Connection
(或允許Spring爲你做)。
SQLite中,你可以限制的行數做:
"SELECT * FROM YOURTABLE ORDER BY YOURCOLUMN ASC LIMIT 3 OFFSET 3;
其中限制是行的,你要和數量要從哪裏開始的偏移ROWNUMBER。
爲什麼不能在SQL? – gbn 2010-04-19 14:03:02