微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQLServer2000编程中出现的异常:ResultSet can not re-read row data for column X 问题

      前几天编写了一个数据库应用的小程序,就是连接数据库后将要查询的学生信息显示出来,没有想到却出现了以下的错误

      系统报告了[Microsoft][sqlServer JDBC Driver]ResultSet can not re-read row data for column 2 之类的错误。在网上查找了以下看了各位大侠的遭遇后终于找到原因了,顺便总结一下这个错误解决方法,其实这并不算是一个程序的编写错误,而是使用微软的JDBC驱动的一个bug。现在将网上搜集的信息罗列如下,帮助本人日后的学习借鉴:

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

例如:

 String sql = "select a.stu_id,a.name,a.class_id,b.name collegename from student_info a,"+
                    "college_info b where a.college_id=b.college_id and a.stu_id = '"+studentId+"'";

 

    在查询的时候就应该按照以下的顺序进行,否则就会出现上面的错误

 try {                      StuDetailBean stuBean = new StuDetailBean();            if (rs != null && rs.next()) {                stuBean = new StuDetailBean();                stuBean.setStudentId(rs.getString("stu_id"));                stuBean.setName(rs.getString("name"));                stuBean.setClassId(rs.getString("class_id"));                stuBean.setCollegeName(rs.getString("collegename"));            }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐