使用工厂模式处理不同数据库中相同数据类型
作者: Zctitan, 出处:IT专家网, 责任编辑: 李书琴,
2008-01-05 15:45
在数据库编程中经常需要对不同数据库的相同数据类型进行处理,在项目实践中发现可以采用工厂模式对其进行处理,本文就其在项目中的实现方法以及应用场景进行简单的介绍。
【IT专家网独家】1 背景
用户做数据库迁移时,为了保证平稳过渡,常常需要同一个应用程序能够连接几种不同类型的数据库。而各个数据库在处理某种数据类型往往有特殊的处理方式。这就产生一个问题,在通常的数据库编程中DAO模式作为数据访问的标准模式大量应用,可以很容易的保证数据库的访问不依赖于数据库类型和业务对象,但是在处理特殊数据类型时,还是要依赖于具体数据库。为了保证通用性,可以使用工厂模式对不同的数据类型进行处理。
2 实现方式
下面就以达梦数据库和oracle数据库中日期、大字段、序列处理为例,简单的介绍实现方法:
达梦数据库和oracle数据库在处理日期、大字段、序列区别如下:
- 达梦日期处理与oracle日期处理的区别:
在oracle中使用to_date()函数来操作日期型数据,而在达梦数据库也提供了to_date()函数对日期型数据进行操作,但是两者在对日期为空时的处理方式不同。
- 达梦大字段处理与oracle处理大字段的区别:
在oracle中对大字段有自己的专用类,而达梦则是通过JDBC标准接口进行处理。
- 达梦序列处理与oracle序列的区别:
两者的区别主要体现在取序列的SQL语句。
在实现中,用于数据处理类和接口的关系如图1所示。

图1 处理类关系示意图
具体实现如下:
2.1 IDiffHandler接口的定义
| 以下是引用片段: public interface IDiffHandler { // 读取BLOB public void saveBlob(Connection connection,String tablename,String fieldname,String whereClause,String filename); // 插入BLOB public void insertBlob(Connection connection,String tablename,String fieldname,String whereClause,String filename); // 更新BLOB public void updateBlob(Connection connection,String tablename,String fieldname,String whereClause,String filename); // 读取序列 public int getSeqNextValue (String seqName); // 日期函数字符串 public String getTo_DateString(Date date); // 空大字段的占位字符串 public String getEmptyBlobString(); } |
- 本文关键词:

