我在扩展别人写的一个程序, 他的程序中sql语句 , 凡是涉及到查询全部列信息都不是写的    select * from table  而是select  col1 , col2 , from table    我在扩展一个功能的时候 也是查询表的全部列  没有象程序中原来写的那样     而是写的 select *  但是运行程序之后 就是报错 说“ResultSet can not re-read row    data for column 1” 我把程序中的sql 拿出来 放进查询分析器中去测试  没问题啊     数据都能出来 于是在程序中做了 N 多System 进行测试 最后锁定就是rs 中没有查询出任何    数据   后来 把 那个 * 有全部改回了列名 , 程序就正常了, 郁闷    这是为什么呢? 

解决方案 »

  1.   

    oracle就是这样,如果用select *结果集就不能回滚,只要不回滚是可以取得值的
      

  2.   

    ResultSet can not re-read row    data for column 1这问题是老的jdbc驱动的问题,新的驱动应该没有这个问题了。一般要求字段顺序为1,2,3 则读取的顺序也必须是1,2,3 如果你先读取了2,再读取1,则报这个错误可是,新的jdbc驱动已经都修正了这个错误了。建议:
    1 更新jdbc驱动,我以前只遇到过sqlserver的驱动有这个问题
    2 如果不能更新,则在select 里面按照你get使用的顺序书写字段,记得要严格对应出现的顺序