通用JDBC驱动及源码
来源:互联网 发布:鬼子来了影评 知乎 编辑:程序博客网 时间:2024/05/22 07:09
2003年,DingL.com站长在项目开发过程中遇到了一个很棘手的问题。 问题是这样的。项目需要对130多张表进行维护,要同兼容oracle/sql server/sybase三种数据库。其中oracle数据库的表设计中,字符型的主键被设计成了char类型,我们知道char是固定长度的类型。这里有两种情况,一是此主键只保存单字节字符,这样是不会出现问题的,如果主键是中文等双字节字符时就会出现问题了。因为对于中文字符串,数据库在计算其长度时一个中文算两个长度,而在java中,一个中文只算一个长度。这样尽管我们在将值传给数据库前在其后面补了空格,在所有的where子句中(注意,字段是主键)的比较是不会相等的(因其空格个数不一样),因为java和数据库的长度计算方式不一样。所以,在java传值给数据库前必须把检测中文的个数,然后再去补相应的空格数。 然而,要命的是,数据库的设计我们无法更改,也就是不能把主键的类型改为varchar2,况且varchar2类型在作索引时效率要比char类型差。 更要命的时,当时发现存在这样的问题时,项目已经接近尾声了。由于涉及的表众多,如果要更改已经编写好的代码将花费相当多的精力和时间。 如果我们能在PreparedStatement.setString()方法中去计算要补空格的个数就可以不修改已有的代码,从而解决问题。但我们知道,ResultSet、Statement、PreparedStatement、Connection等都只是接口,具体的实现类都是各JDBC驱动实现的,每个不同类型厂商的驱动实现都是不一样的。如果我们能有自己的PreparedStatement类实现就能解决问题了,通用JDBC驱动程序就这样诞生了。 通用驱动从驱动注册开始入手,拥有自己的URL、驱动类、Connection等实现。 通用驱动其内核其实还是各官方提供的JDBC驱动,所以在使用过程中同样需要把各官方驱动加到classpath中才能正常使用。目前支持Oracle JDBC驱动、SQL Server JDBC驱动、Sybase JDBC驱动、MySql JDBC驱动,通过修改源码和配置文件可支持任意的type4 JDBC驱动。 下载通用JDBC驱动及源码 通用JDBC驱动使用指南 |
- 通用JDBC驱动及源码
- jdbc 驱动源码分析
- JDBC通用方法及DbUtils组件使用
- 通用USB设备驱动源码分析
- 通用USB设备驱动源码分析
- 通用USB设备驱动源码分析
- 通用USB设备驱动源码分析
- 通用USB设备驱动源码分析
- 通用 USB 设备驱动源码分析 【转】
- 通用USB设备驱动源码分析
- 通用USB设备驱动源码分析
- JAVA JDBC(MySQL)驱动源码分析(一)
- JAVA JDBC(MySQL)驱动源码分析(二)
- JAVA JDBC(MySQL)驱动源码分析(三)
- JAVA JDBC(MySQL)驱动源码分析(四)
- JAVA JDBC(MySQL)驱动源码分析(二)
- JAVA JDBC(MySQL)驱动源码分析
- JAVA JDBC(MySQL)驱动源码分析
- 通过rpm包安装、配置及卸载mysql
- Java 理论和实践: 了解泛型
- override equals() and hashCode() methods
- 爱你的梦未醒
- eclipse+tomcat+mysql配置web开发环境
- 通用JDBC驱动及源码
- UVA_374 Big Mod_数论
- UVA_485 Pascal's Triangle of Death_高精度
- MySQL中文参考手册
- 为什么人民币升值不好?
- Asp利用Stream实现文件下载
- 番茄花园幕后公司揭秘
- 如何解决AJAX中跨域访问出现'没有权限'的错误
- CUBEKPIMEMBER:返回重要性能指示器(KPI)的属性