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

SqlServer数据库中大对象text,image取值错误

问题现象:

    客户网站上调用service的信息简要突然变成(net.sourceforge.jtds.jdbc.ClobImpl@57b2dc3),程序没有改动过,现在却失效了。

    跑去jtds官网(http://jtds.sourceforge.net/faq.html)查了一下:程序通过jtds去访问sqlserver数据库时,认将text/ntext,image等大数据封装成CLOB对象(字符大对象——用来存储单字节的字符数据),而CLOB对象认没有实现toString()方法,所以直接调用只会打印对象的ID。官方解释是,采用CLOB封装这些对象,对应列的数据无需加载到内存中,如果直接打印出来很容易造成预料外的情况导致内存溢出。

解决方法

    在配置Recource时,指定数据的链接方式不适用CLOB:

<Resource name="resource_name" auth="Container" type="javax.sql.DataSource" driverClassName="net.sourceforge.jtds.jdbc.Driver" url="jdbc:jtds:sqlserver://yourserver:1433;DatabaseName=dbname;useLOBs=false" username="xx" password="xxxx" maxActive="100" maxIdle="10" maxWait="-1" />

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

相关推荐