Estou com uma aplicação rodando… tudo muito bonitinho, até que resolvi fazer uma consulta ao banco e dos 9 itens que armazeno no ResultSet 1 simplesmente não funciona!
A mensagem de erro que recebo é a seguinte:
[color=darkred]java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]ResultSet can not re-read row data for column 4.[/color]
O que está me tirando o juízo é o fato de isso acontecer depois que eu efetuo a leitura e manipulo(mostro na tela… etc) 8 das 9 informações que há no resultSet!
Alguém já viu isso?!?!
Ah! Estou rodando o java 1.6.0 e o tomcat 6.0 em um servidor windows XP e o banco(como se pode observar na msg de erro) é o SQLServer 2000
[quote=Lich King]
Por que if(rs.next()) ?? Faz um while(rs.next())…
Por q vc não está armazenando os dados do ResultSet numa Collection?[/quote]
Ele não está armazenando em uma Collection pq o ResultSet só retorna um único registro, o que é dedutível pela montagem da instrução SQL usada: WHERE codNoticia = [X]
Uma vez que um ResultSet, ao ser iniciado, tem seu “ponteiro” posicionado Antes do primeiro registro, conclui-se que o método next() deverá posicionar o ponteiro no primeiro (e único) registro do ResultSet, retornando true, tornando o uso de um If mais útil que um While que, neste caso, só seria executado uma única vez.
Respondendo ao título do tópico: NÃO.
Como citado anteriormente, você deve verificar se o problemático campo da tabela não está com algum dado inválido. Mesmo que o problema não seja este, ainda recomendo-te analisar melhor os dados da tua tabela e usar tipos mais concisos, como por exemplo: tipo Integer para os campos “codVeiculo”, “codArea” e “codJornalista” e talvez tipo date para o campo “data”.