Khi truy cập một RDBMS, Tập kết quả bạn nhận được thường hướng theo hàng. Có nghĩa là, bất cứ khi nào bạn gọi ResultSet ::next (), con trỏ sẽ chuyển sang hàng tiếp theo. Đó là lý do tại sao vòng lặp của bạn
for (int i = 0; i < columncount; i++)
{
while (res->next())
{
...
}
}
chỉ hiển thị thuộc tính đầu tiên.
Thông thường, bạn chuyển đổi các vòng lặp bên trong và bên ngoài chẳng hạn như
while (res->next())
{
for (int i = 0; i < columncount; i++)
{
...
}
}
Nhưng nếu bạn thực sự cần truy cập từng cột một, bạn sẽ phải kiểm tra xem ResultSet có cho phép bạn đặt lại con trỏ về hàng đầu tiên hay không. Nếu không, bạn phải lưu dữ liệu vào bộ nhớ cache hoặc đưa ra cùng một truy vấn SQL lặp đi lặp lại.