CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

数据库 | Oracle | DB2 | SQL Server | MySQL | 商业智能 | BI | DBA | Sybase| SQL Server 2008

您现在的位置: IT专家网 > 数据库子站 > 数据库技巧

使用工厂模式处理不同数据库中相同数据类型

作者: 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();
  }

共3页。 1 2 3 :

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅


    
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i