Java中使用PreparedStatement操作SQL Server时nvarchar的问题

在使用PreparedStatement方式操作数据库时,常会出现这样的问题:对于VarChar字段无法去除SQL中由Driver自动在参数前加了N转型。

此问题表现为:

比如在做压力测试时,数据库服务器的资源利用率非常高,接近95%左右;用SQL Server Profiler监视 SQL Server 数据库引擎实例时,发现有一条语句比较耗费CPU资源,查看详细语句为:

exec sp_execute 1,N '100531000000020931','2010-06-24 16:00:00'


这就是由系统自动做了N转型!

现将解决方法与大家分享一下,其实很简单:配置连接池时增加连接属性sendStringParametersAsUnicode,将其设置为false。

实例如下:

在应用服务器的/home/yourname/cfmds/WEB-INF/classes/spring/目录下(其中 cfmds是应用程序部署的所在目录 ),修改 db.xml文件,在

jdbc:jtds:sqlserver://192.168.50.33:1433;databaseName=sfms;appName=bank_cfmds_Java;;

后面加上:sendStringParametersAsUnicode=false 即可。

再次测试同样的并发压力,数据库的资源耗费下降到30%左右,应用服务器的资源也下降不少,可谓效果显著~


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值