Caused by: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]ResultSet can not re-read row data for column 1.  是不是你内容为null的情况下出现这样的问题??

解决方案 »

  1.   

    原因是如果该表存在TEXT, NTEXT, IMAGE等大型字段,对于ResultSet的字段读取必须按照从左向右读,如果你用:int a = rs.getInt(2);
    int b = rs.getInt(1);则报错。Microsoft给出的方案是不能从右往左也不能连续读2次。没办法自己改代码,严格从左向右读,结果就没有问题了。
      

  2.   

    (1)如果采用jdbc-odbc驱动,那么就必须按照查询顺序来一次读取(不论有没有image或text类型)
    (2)如果采用微软提供的ms sql server jdbc driver,如果查询语句中,不存在image或text类型字段,那么可以按照无序获取
    (3)如果采用微软提供的ms sql server jdbc driver,如果查询语句中,存在image或text类型字段,那么就必须按照顺序读取,否则就会报告Driver]ResultSet can not re-read row data for column之类的错误
    (4)如果想不查询语句中有没有image或text类型字段,都可以不按照顺序获取,或重复获取。那么就必须更换驱动,改用第三方的。
      

  3.   

    我用的驱动是msbase.jar、mssqlserver.jar、msutil.jar,是不是这个的缘故?如果改用其他驱动是不是就不会报错了呢?
      

  4.   

    不是驱动的问题,因为如果是驱动的问题varchar应该也会报错!
      

  5.   

    jtds驱动会不会出现那种报错呢?
      

  6.   

    比如A、B表一对多双向映射,其中B表有一字段为text类型,删除A表记录后级联删除B表相应记录。
    上述功能我实现的时候就报上面的错误,如何把代码改为按顺序读取呢?能举例说明吗?谢谢!
      

  7.   

    我用的驱动是msbase.jar、mssqlserver.jar、msutil.jar,是不是这个的缘故?如果改用其他驱动是不是就不会报错了呢?
    不是驱动的问题