数据库访问层设计与实现(1)

原创 2006年05月28日 09:53:00

数据库访问层设计与实现

2006-05-28

 

摘要:为了使上层的应用不依赖于下面具体数据库的类型,建立一个数据库访问中间层是必要的。实现了一个数据库访问层中间件,使得上层应用不用纠缠与具体数据库类型问题,能根据应用环境的不同,灵活选择连接的管理方式、关键字的生成规则以及SQL语句的安全性检查方式等等。给出了数据库访问层的设计思想以及在.NET中的实现。

 

1 引言

在近期使用.NET开发项目时,发现这样一些问题,影响着程序的复用性和软件的灵活性:

1)数据库类型是变动的

原因有两个:一是因为不同的客户,对同一个应用程序的性能要求或费用开销不同,要求使用的数据库类型不同;二是我们在开发程序时,在不同的使用环境下,需要使用不同类型的数据库。

比如,如果使用ACCESS数据库,那么在程序中会使用System.Data.OleDb命名空间下的类,如OleDbConnectionOleDbParameterOleDbDataAdapter等等。如果现在要求支持SQL Server数据库该怎么办呢?那么就需要修改现有的大量的代码,将System.Data.OleDb下的类全部替换为System.Data.SqlClient命名空间下的类,即使是使用查找/替换进行批量的修改,也是非常繁琐,也很容易出错。当然还会存在一些错误,比如,OleDb是使用“?”来传递参数的,而SQL Server中使用的是命名参数(如,“@para”)。因此还需要修改大量的SQL语句,麻烦啊!

2)主键生成的规则不同

不同应用环境下,可能使用不同的主键生成策略,有的需要使用全局不重复的主键,有的需要加入时间或其他标记,有的只使用简单的计数器就可以。如果程序中写死了,下次环境变了,需要使用新的规则时,就又得改代码喽。

3)数据库连接管理

控制连接的数目,有时时单个连接,有时是若干个连接,有时使用连接池……

4SQL语句安全性检查

为了防止恶意攻击,需要对SQL进行检查。有很多种检查方法,究竟使用哪个呢?

5)程序中SQL语句到处飞

如果使用关系数据库,SQL语句是少不了的。但是SQL语句在应用层出现太多,一旦数据库发生变化,那么上层需要修改的SQL语句就太多了,而且在编译时发现不了SQL语句的错误,在运行时才能找到。另外大量的SQL语句,还严重影响了程序的美观。

对于上面的问题,最好的解决方法就是建立一个数据库访问中间层,来屏蔽这些问题。(当然有一些现成的框架,如NHibernate,可以使用,不需要我们自己动手。)本文后续部分将讨论如何解决这些问题,主要在如何设计,并给出部分实现。

 

相关文章推荐

petshop4.0 详解之二(数据访问层之数据库访问设计)

在系列一中,我从整体上分析了PetShop的架构设计,并提及了分层的概念。从本部分开始,我将依次对各层进行代码级的分析,以求获得更加细致而 深入的理解。在PetShop 4.0中,由于引入了ASP....

图书管理系统之数据库访问层设计

数据库访问层就是通过DAO设计模式将在java代码里的操作链接到数据库的过程,具体涉及到的访问操作如下所示: 根据需求分析系统功能分为读者信息管理模块、图书信息管理模块、图书借阅管理模块、基础信...

使用设计模式构建通用数据库访问类

在应用程序的设计中,数据库的访问是非常重要的,我们通常需要将对数据库的访问集中起来,以保证良好的封装性和可维护性。在.Net中,数据库的访问,对于微软自家的SqlServer和其他数据库(支持OleD...

ASP.NET 系统支持数据库访问设计

系统设计时,往往要考虑到兼容多种数据库,拿常见的三种数据库:SqlServer,MySql,Oracle为例,常见的三层设计可以分为:业务逻辑层,数据访问层,实体层;他们的结构大致如下: 三种数据...

hibernate数据库访问接口设计

  • 2015年01月30日 21:48
  • 13KB
  • 下载

Windows程序设计__孙鑫C++Lesson20《HOOK和数据库访问》

Windows程序设计__孙鑫C++Lesson20《HOOK和数据库访问》 本节要点: 1.Hook编程回顾Windows消息传递机制 2.安装内部钩子 3.安装全局钩子 4.数据库访问技...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据库访问层设计与实现(1)
举报原因:
原因补充:

(最多只允许输入30个字)