java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]ResultSet can not re-read row dat

--
 

java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]ResultSet can not re-read row dat

  2173人阅读  评论(0)  收藏  举报
  分类:

今天在修改一个程序问题的时候,什么错误也没有,检查程序也没找到程序到底哪里出了问题,我就是觉得奇怪了,怎么会这样。后来改了一下,在页面中把错误手动输出后,发现Java.sql.SQLException: [Microsoft][SQLServer 2000 Driver forJDBC]ResultSet can not re-read row data for column 5这个错。起初不知道这个是什么,关于SQLServer 2000我还是第一次接触到,后来查了资料,才解决了问题。

案例:

数据库表:TestTable
    表字段及类型:
         guid char(38)
         title varchar(100)
         content Text
         username varchar(20)
    查询sql语句:
         selectguid,username,content,title from TestTable
    java代码:
        rs.getString("guid");
        rs.getBinaryStream("content");
        rs.getString("username");

这个java代码会出错。

原因:这个是sqlserver2000驱动的一个bug, 使用微软的这个驱动,必然会报错(就是上面说的那个错误)。如果你跟踪的话,必然是这一行:rs.getString("username")抛出错误。

方案1:按照顺序去读(即按照select语句查询的顺序来读取,sqlserverjdbc在select的列中包含text或image字段时,所以必须按select的列顺序读取,且不支持重复查询)

       如果把rs.getString("username")和rs.getBinaryStream("content");位置互换一下,会怎么样呢。结果就是可以正常运行。

方案2:换驱动(下载一个jtds-1.2.2.jar,导入到项目中)

        Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
   String URL ="jdbc:jtds:sqlserver://127.0.0.1:1433/student";

总结:两个方案均可。我的问题解决了,开心。

-------------------

java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]ResultSet can not re-read row data for column 4.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.validateColumnIndex(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.getInt(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.getInt(Unknown Source)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值