本站首页    管理页面    写新日志    退出


«September 2025»
123456
78910111213
14151617181920
21222324252627
282930


公告

戒除浮躁,读好书,交益友


我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:邢红瑞的blog
日志总数:523
评论数量:1142
留言数量:0
访问次数:9707599
建立时间:2004年12月20日




[数据库]M$的JDBC驱动的bug
原创空间,  软件技术

邢红瑞 发表于 2005/8/20 15:20:17

在企业应用中,很少有人用微软的jdbc驱动,这个驱动运行一段时间,没有数据请求时,自动把connection关闭,无论在windows还是linux上。 在一次旧的系统改造中,系统报告了[Microsoft][SQLServer JDBC Driver]ResultSet can not re-read row data for column 10的错误。为了解决这个问题,开始跟踪程序,就差没有跟踪M$的JDBC源码了,也没有查出原因。只知道在在rs.getString("bkname")的时候,肯定会出现错误。下面的代码建表CREATE TABLE [book] (  [bkid] int NOT NULL,  [bkname] nvarchar(200) COLLATE Chinese_PRC_CI_AS NOT NULL,  [bkintroduction] ntext COLLATE Chinese_PRC_CI_AS,  [format] nvarchar(10) COLLATE Chinese_PRC_CI_AS,  )ON [PRIMARY]sql语句select bkid,bkname,bkintroduction, formatfrom bookjava代码 rs.getString("bkid"); rs.getBinaryStream("bkintroduction"); rs.getString("bkname"); 这个例子,使用微软的驱动,必然会出错。如果你跟踪的话,必然是这一行:rs.getString("bkname")抛出错误。 那么,如果你把rs.getString("bkname")和rs.getBinaryStream("bkintroduction");位置互换以下,就可以正常运行。 出现问题的原因,就是微软的驱动,在包含了blob或clob类型的字段,也就是Image和Text类型。那么就必须按照select顺序查询,且不支持重复查询。 面对这种情况,只有更换驱动了,可以使用jtds,不会存在这种情况。 好像javaunion说过这样的问题,可惜的是,javaunion已经不存在了。 希望大家尽量不要用微软自带的sqlserver的jdbc驱动。解决的办法,如果采用微软提供的ms sql server jdbc driver,如果查询语句中,不存在image或text类型字段,那么可以按照无序获取,如果采用微软提供的ms sql server jdbc driver,如果查询语句中,存在image或text类型字段,那么就必须按照顺序读取,否则就会报告Driver]ResultSet can not re-read row data for column之类的错误,如果无论查询中有没有image或text类型字段,都要不按照顺序获取,或重复获取。那么就必须更换驱动,使用jtds。


阅读全文(8543) | 回复(1) | 编辑 | 精华
 


回复:M$的JDBC驱动的bug
原创空间,  软件技术

re(游客)发表评论于2005/11/8 10:06:28

也遇到这样的问题


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:M$的JDBC驱动的bug
原创空间,  软件技术

喜欢黑夜(游客)发表评论于2005/9/11 4:11:07

很早以前我也遇到这样的问题,但是我当时得到的结论是,不管有没有image或text类型字段,都必须安装顺序获取,而且不能重复获取! etrap@163.com

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144774705 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号