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.

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

B.

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

C.

D. Không in gì

D.

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