前几天编写了一个数据库应用的小程序,就是连接数据库后将要查询的学生信息显示出来,没有想到却出现了以下的错误:
系统报告了[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] 举报,一经查实,本站将立刻删除。