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" />


你可能感兴趣的:(SqlServer数据库中大对象(text,image)取值错误)