2012-06-07 34 views
5

Tôi muốn viết mã cung cấp id tối đa từ bảng nhưng đó là lỗi ném.Cách lấy ID tối đa từ bảng cơ sở dữ liệu trong mã java

mã:

Class.forName("oracle.jdbc.driver.OracleDriver"); 
Connection con = DriverManager.getConnection("XXXXX", "XXXX", "XXX"); 
Statement st2 = con.createStatement(); 
ResultSet idMax = st2.executeQuery("select nvl(max(work_id),0) from workdetails"); 
int id2 = idMax.getInt(0); // throw error: Invalid column index 

System.out.println(id2); 

// **************************** 
int id2 = idMax.getInt("work_id"); 
System.out.println(id2); // throw error: ResultSet.next was not called 

Trả lời

7

Một tập hợp kết quả bắt đầu ở mức kỷ lục giả và cần được lọt vào kỷ lục thực sự đầu tiên bằng cách gọi next phương pháp:

ResultSet idMax = st2.executeQuery("select nvl(max(work_id),0) max_id from workdetails"); 
int id2 = -1; 
if (idMax.next()) { 
    id2 = idMax.getInt("max_id"); 
} 
2

Bạn bỏ lỡ

idMax.next(); 

Điều này sẽ đặt con trỏ đến hàng đầu tiên. Sau đó, duy nhất bạn phải sử dụng

idMax.get (1); 

Vì vậy, code của bạn đi như thế này:

ResultSet idMax = st2.executeQuery("select nvl(max(work_id),0) from workdetails"); 
int id2 = 0; 
if (idMax.next()){ 
    id2 = idMax.getInt(1); 
} 
System.out.println(id2); 
Các vấn đề liên quan