您的位置:首页 > 编程语言 > Java开发

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

2010-06-23 17:42 513 查看
在使用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%左右,应用服务器的资源也下降不少,可谓效果显著~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: