Podczas uzyskiwania dostępu do RDBMS zestaw wyników, który otrzymujesz, jest zwykle zorientowany na wiersze. To znaczy, za każdym razem, gdy wywołasz ResultSet::next(), kursor przesuwa się do następnego wiersza. Dlatego twoja pętla
for (int i = 0; i < columncount; i++)
{
while (res->next())
{
...
}
}
pokazuje tylko pierwszy atrybut.
Zwykle przełączasz wewnętrzne i zewnętrzne pętle, takie jak
while (res->next())
{
for (int i = 0; i < columncount; i++)
{
...
}
}
Ale jeśli naprawdę potrzebujesz dostępu do jednej kolumny na raz, będziesz musiał sprawdzić, czy zestaw wyników pozwala zresetować kursor do pierwszego wiersza. Jeśli nie, musisz albo buforować dane, albo powtarzać to samo zapytanie SQL.