2014-10-28 6 views
0

Я хочу использовать while(rs.next()) для прохождения стола UserInfo. В таблице UserInfo есть семь записей, но у меня только первая запись. После того, как я присоединился к кодам rs.getRow();, я получил результат, которого хочу.Результаты не могут быть пройдены

try{ 
    Statement stmt=conn.createStatement(); 
    String queryStr="SELECT * FROM UserInfo"; 
    ResultSet rs=stmt.executeQuery(queryStr); 

    while(rs.next()) 
    { 
     String strName="Name is "+rs.getString(3)+";"; 
     String intAge="Age is "+rs.getInt(5)+";"; 
     String strCompany="Company is "+rs.getString(4)+".<br>"; 
     //int rowNum=rs.getRow(); 
     out.println(strName+intAge+strCompany); 
    } 

    out.println("Succeed in visiting UserInfo table."); 
    }catch(SQLException e){ 
     out.println("Failed to query."); 
    } 

Я не хочу использовать rs.getRow();. Как мне решить эту проблему?

+1

Вы уверены, что не используете что-то вроде 'rs.next()' в отладчике? Ваш код должен быть в порядке. –

+2

Код, который вы указали, выглядит отлично, должен работать так, как вы ожидаете, если это не проблема на уровне базы данных, но это не выглядит так. – Ironluca

+0

В чем проблема? Этот код должен работать без каких-либо проблем и получить то, что вы хотите –

ответ

0

rs.next только сообщает вам, есть ли следующая запись.

При запуске

ResultSet rs=stmt.executeQuery(queryStr); 

Это уже помещает данные из первой записи в переменную rs.

Для того, чтобы перейти к следующей записи, которую нужно запустить rs.getRow, но только если есть

следующая запись (проверьте с rs.next).

+0

Но я когда-либо видел некоторые образцы, используя «rs.next()», таблица может быть пройдена. – Chris

0

rs.next() Перемещает курсор froward в одну строку от текущей позиции. Курсор ResultSet изначально позиционируется перед первой строкой; первый вызов метода next делает первую строку текущей строкой;

+0

Спасибо. Чтобы решить мою проблему, что мне делать? – Chris

1

Ваш код выглядит отлично, за исключением элемента String. Если вы используете String для хранения записи, вы не сможете отобразить все 7 записей.

Таким образом, попробуйте использовать объект коллекции, такой как ArrayList. И, конечно же, вы должны закрыть соединения в конце блока.

try{ 
    Statement stmt=conn.createStatement(); 
    String queryStr="SELECT * FROM UserInfo"; 
    ResultSet rs=stmt.executeQuery(queryStr); 
    List<String> list = new ArrayList<String>(); 

    while(rs.next()){ 

    list.add(rs.getString(3)); 

    } 

System.out.println("rows "+list.size()); 
}catch(SQLException e){ 
    out.println("exception "+e.getMessage()); 
} 
finally{ 
rs.close(); 
stmt.close(); 
conn.close(); 
} 

Это хороший пример того, как вы должны получать значения из базы данных с помощью объекта коллекции. http://theopentutorials.com/tutorials/java/jdbc/how-to-retrieve-all-rows-from-mysql-table-using-jdbc/

+0

Большое спасибо за вашу помощь. Эти учебники очень полезны для меня. Спасибо снова. – Chris

Смежные вопросы