2009-10-07 37 views
5

Xin chào đây là những gì tôi muốn, tôi kết nối với DB và lấy các yếu tố lớn nhất của cột UNIQUEID, và gán nó vào một biến số nguyên tên maxID, đây là cách tiếp cận của tôi:java ResultSet, sử dụng chức năng MAX sql

int maxID = 0; 
Statement s2 = con.createStatement(); 
s2.execute("SELECT MAX(UniqueId) FROM MyTable");  
ResultSet rs2 = s2.getResultSet(); // 
while (rs2.next()){ 
    maxID = rs2.getInt(0); 
} 

Điều gì sẽ là một cách thích hợp để giải quyết điều này, nó cảm thấy giống như một cách rất thô lỗ bằng cách sử dụng "rs2.next()" trong khi vòng lặp.

Cảm ơn

Trả lời

10
if (rs2.next()) { 
    maxID = rs2.getInt(1); 
} 
1

.tiếp theo() là định vị lại con trỏ của bạn từ 'hư không' thành một hàng nếu có.

bạn có thể kiểm tra nó nếu bạn thích, nó là recommendable mặc dù bạn làm, vì vậy không thể thoát khỏi vòng lặp trong khi đó. Mặc dù nếu bạn chắc chắn rằng các truy vấn sẽ chỉ trả lại một hàng duy nhất, bạn có thể làm điều này

if (rs.next()) { 
    maxID = rs2.getInt(1); 
} 
+0

có vẻ như là một ý tưởng tốt, nhưng, khi tôi thay đổi như trên Eclipse được hiển thị lỗi này: Mô tả \t Resource \t Đường dẫn \t Location \t Loại Không thể gọi getInt (int) vào loại nguyên thủy boolean \t Alertmail.java \t/alertmail/src \t line 33 \t Vấn đề Java – Hellnar

+0

có, 'next()' trả về một boolean, và do đó làm việc trong vòng lặp 'while()'. – akf

+0

vâng, Đúng vậy, bạn cần đặt lại vị trí con trỏ trước khi yo có thể tìm nạp bất kỳ dữ liệu nào, tôi đã vội vã trả lời. Tôi không nên nhìn vào các câu hỏi lần này trong đêm. Tôi sẽ chỉnh sửa câu trả lời của mình – Juparave

9

Boris Pavlović là gần như ngay.

if (rs2.next()) { 
    maxID = rs2.getInt(1); 
} 

Các cột trong tập kết quả dựa trên 1. Và lý do sử dụng if thay vì while là truy vấn bạn đang thực thi chỉ trả về một hàng duy nhất.

+0

Tôi vừa mới sửa câu trả lời của tôi và đã cho bạn +1 –

Các vấn đề liên quan