Giả sử đã kết nối thành công đến cơ sở dữ liệu QLKH và đã tạo thành công đối tượng ResultSet: rs trỏ đến bảng KhachHang với các trường MaKH và TenKH. Hỏi đoạn chương trình sau in ra thông tin gì?
while(! rs.next())
{
out.println("
"
+rs.getString("MaKH")); out.println("
"
+rs.getString("TenKH"));
}
Trả lời:
Đáp án đúng: B
Đoạn chương trình sử dụng vòng lặp `while(! rs.next())`. Phương thức `rs.next()` di chuyển con trỏ đến dòng tiếp theo của ResultSet. Vòng lặp `while` sẽ tiếp tục thực hiện khi điều kiện trong ngoặc là `true`. Trong trường hợp này, điều kiện là `! rs.next()`, nghĩa là vòng lặp sẽ thực hiện khi `rs.next()` trả về `false`.
`rs.next()` trả về `true` nếu có dòng tiếp theo và di chuyển con trỏ đến dòng đó. Nó trả về `false` nếu không còn dòng nào. Vì vậy, vòng lặp chỉ thực hiện nếu `rs.next()` trả về `false` ngay từ lần đầu tiên, tức là ResultSet `rs` không chứa dữ liệu (không có dòng nào). Trong trường hợp ResultSet có dữ liệu, `rs.next()` sẽ trả về `true` ngay lần đầu, do đó `! rs.next()` sẽ là `false` và vòng lặp không được thực hiện. Do đó chương trình sẽ không in ra gì cả.





