ResultSet can not re-read row data for column 1.

错误:“ResultSet Can Not Re-Read Row Data for column 1.”,我一开始以为是sql语句出错了,便更改sql语句,并且每读出一个数据就打印一次,结果还是出错。多次调试发现:

while (rst.next()) {
     String[] o = new String[5];
     o[0] = rst.getString("id");
     o[1] = rst.getString("id");          //这里出错

记得以前一直是这样用的啊!只是以前id都是int型,现在id是型varchar型

问了几个同事都没解决。

最后实在没办法了,这才想起了Google(早该想到的……)。只Google了一下就找到了问题的症结所在:原来是微软的驱动程序的兼容性有问题,不是我的错。前辈高人总结了解决办法(因为无从考证出处,故没有注明作者,见谅),有下面几种:

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类型字段,都可以不按照顺序获取,或重复获取。那么就必须更换驱动,改用第三方的。

后改成

while (rst.next()) {
     String[] o = new String[5];
     o[0] = rst.getString("id");
     o[1] = o[0];         //没问题

。最后总结一下这次调试的教训,以后铭记在心:

1.调试JavaBean的时候最好在里面写一个主函数来调试,调试完毕注释掉就可以了,不会影响原程序。以前我调试总是编译完毕之后放到容器里部署,然后运行前台程序…………自讨苦吃,以后调试我坚决投机取巧,以懒惰为荣,以勤劳为耻。

2.遇到错误先Google。我这个人从小都不是幸运星,在迄今为止的很多次抽奖中所得到的最高奖品就是一套餐具,因此,我所遇到的错误不可能只有我自己一个人遇到,肯定有别人在同样的错误中困惑过并且经过挣扎终于解决,大部分情况下都是可以搜索到解决方法的。 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值