При достъп до RDBMS, ResultSet, който получавате, обикновено е ориентиран към редове. Това означава, че всеки път, когато извикате ResultSet::next(), курсорът преминава към следващия ред. Ето защо вашият цикъл
for (int i = 0; i < columncount; i++)
{
while (res->next())
{
...
}
}
показва само първия атрибут.
Обикновено превключвате вътрешни и външни цикли като
while (res->next())
{
for (int i = 0; i < columncount; i++)
{
...
}
}
Но ако наистина имате нужда от достъп до една колона наведнъж, ще трябва да проверите дали ResultSet ви позволява да нулирате курсора до първия ред. Ако не, трябва или да кеширате данните, или да издавате една и съща SQL заявка отново и отново.