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%左右,应用服务器的资源也下降不少,可谓效果显著~
此问题表现为:
比如在做压力测试时,数据库服务器的资源利用率非常高,接近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%左右,应用服务器的资源也下降不少,可谓效果显著~
相关文章推荐
- <转>java编译问题:使用了未经检查或不安全的操作
- <转>java编译问题:使用了未经检查或不安全的操作
- 在存储过程中使用事务处理 sql server 删除多表操作一致性的问题
- Java中使用File类操作文件时的路径问题
- centos环境下java的file操作对象使用中文文件操作异常问题
- 关于使用java语言操作FTP的一些问题
- JavaWeb开发之Servlet中的线程问题及使用ServletConfig对象操作Servlet中的参数
- java操作sql server数据中,关于PreparedStatement数据注入问题
- java web 使用jdbc 链接sql server 2008找不到驱动类的问题
- Java IO操作之文件读取与写入 无乱码FileOutputStream FileInputStream使用-IO写utf-8乱码问题
- 基于CDH5.x 下面使用eclipse 操作hive 。使用java通过jdbc连接HIVESERVICE 创建表出现的问题及解决
- 注:*.java使用了未经检查或不安全的操作 问题解决
- Java中使用Jedis操作Redis之二
- java中使用synchronized进行修饰锁定的必须是公用的资源,否则还是存在并发问题
- ADO.NET 使用中 BUG 汇报之一[使用OleDb操作SQL SERVER]
- Java操作Zip压缩文件遇到的编码问题
- sql server 2000/2005 游标的使用操作
- POI 与 JXL 的一点比较——关于使用Java操作excel文件
- Java中使用结构体时遇到的问题
- java中使用递归求解汉诺塔问题