前阵子的一个项目需要使用SQL2K作为后台数据库,本人一向认为Java配合MS SQL不是一个好选择,但往往也有不得不这么做的时候。一直听说MS的JDBC驱动不怎么样,所以我的第一反应是使用JDBC-ODBC桥,这样不用为项目添加额外的jar(其实是个很奇怪的理由,估计当时神游了,没怎么考虑)。系统使用了Hibernate 3.1.3和Spring Framework 2.0 RC2。
考虑到减少持久化层的开发,当然是使用工具从现有的数据库生成Hibernate的PO和DAO。但是在生成时发生了点意外,使用JDBC-ODBC桥竟然无法导出。。。无奈,只能暂时用下MS的驱动进行生成,其实这时就该醒悟了,放弃JDBC-ODBC,不过当时没怎么在意,以为在使用时不会有问题。
真正的问题发生在使用Hibernate保存修改时,保存使用了Spring的HibernateTemplate,主要是saveOrUpdate方法。在测试时我发现所有被修改或新增记录的字符型字段全被用空格填满了,比如:name varchar(10),在页面上我只输了"abc",可数据库中保存的却是"abc "。起初我觉得是MultiActionController里取回表单数据时出问题了,但我一路追踪代码,从自己的代码一直看到Spring的代码,没发现什么问题;接着想想会不会是Hibernate中用的MS SQL Dialect有问题(其实又犯傻了,如果是这里有问题,早就别人被发现了),于是我又看了Hibernate的部分代码,依然无果。在Google上找相关内容,也看到了些遇到此类情况的,但貌似解决方案在我这里都不管用。
突然想到了生成时的情况,于是我修改了下applicationContext中dataSource的定义,直接使用MS的JDBC驱动,一切都好了。就在这时我也在国外的一个网站上找到了和我的情况完全一样的一篇文章,解决方法就是直接使用MS SQL2K的JDBC驱动替代JDBC-ODBC桥。
看来JDBC-ODBC桥也不是万能的,这里的情况实际是它的一个Bug,不巧被我撞上了。因为自己在解决这个问题时花了不少时间,所以记上一笔,如果有人遇上同样的问题,他就可以用中文Google到解决方法了。
分享到:
相关推荐
SUN JDK 1.6/1.7 64bit的JDBC-ODBC Bridge有个缺陷:会随机抛出异常如下,在所有的ODBC Driver上。 java.sql.SQLException: [Microsoft][ODBC Driver Manager] Invalid string or buffer length at sun.jdbc.odbc....
文档包括JSP通过JDBC-ODBC桥接器访问数据库Mysql的具体配置步骤和源代码两部分;所需资源均已上传,MyEclipse文件过大,请自行下载安装、配置tomcat。
使用JDBC-ODBC桥连接数据库JSP 纯代码
JSP中 JDBC-ODBC连接Access数据库
JDBC-ODBC使用Excel作数据源
EasySoft JDBC-ODBC bridge server (32 and 64 bit)
一种jdbc-odbc桥连接Access的方法
采用JAVA语言讲解JDBC-ODBC连接的两种方式,用以实现JAVA与SQL的连接
jdbc-odbc桥数据库连接工作原理,JDBC-ODBC所用的配置及jdbc和odbc连接字符串 示例代码
jdbc-odbc桥数据库连接jdbc-odbc桥数据库连接
JDBC-ODBC dirver for Sybase.
jdbc-odbc jtds 连接字符串
JSP通过JDBC-ODBC访问Excel的详细步骤和源代码
我看了《Servlet和JSP核心编程》之后做的学习总结。对网页通过servlet访问数据库算是个入门教程吧
sql-server2005 的jdbc-odbc驱动,不用多说,安装数据库必备!
jdbc-odbc-bridge-jre7.jar
这个程序是使用jdbc-odbc访问access数据库的实例
赠送jar包:sqlite-jdbc-3.15.1.jar; 赠送原API文档:sqlite-jdbc-3.15.1-javadoc.jar; 赠送源代码:sqlite-jdbc-3.15.1-sources.jar; 赠送Maven依赖信息文件:sqlite-jdbc-3.15.1.pom; 包含翻译后的API文档:...
开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3.6....
jdbc-odbc桥数据库连接.pdf