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

来源:互联网 发布:淘宝商机助理官方下载 编辑:程序博客网 时间:2024/05/17 22:26

  在使用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%左右,应用服务器的资源也下降不少,可谓效果显著~


原创粉丝点击