JavaScript is required

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"));

}

A.

Mã và tên khách hàng đầu tiên

B.

Mã và tên của tất cả các khách hàng

C.

Không in gì

D.

Mã tất cả các khách hàng

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ả.

Câu hỏi liên quan