db层是什么,我的框架之Db层

作为管理类软件,要不停和Db打交道,因此需要我们自己封装一套Db层类库才可以.量身订做一套使用起来才够舒服.
以下的类库是我自己的总结,在日常开发中不断完善才有了这套东西,它并没有多么的高深,代码也没有多么的优美.今天写出来,希望对大家有所帮助.
类库是在微软类库的基础上封装起来的,这里只介绍下不一样的东西,如图-1所示
clip_image002db层是什么,我的框架之Db层
图-1
它是以IDbBase命名的接口,顾名思义是基础接口,即使后台的Db可能是Oracle,SqlServer或Access,它们之间还是会有一些共用的东西,这个接口的作用是就是封装这些公用的方法.
1.SplitString和ComboSqlString方法,它是解析SQL语句,即是将SQL语句拆分为几个子项,方便以后拼接.这个想法是来源于PB中PFC的思路,用过PFC的朋友知道的,它本身提供了一个n_cst_sql的类对象,它是专门用来解析和拆分SQL语句的.
2.GetTableByVirtual方法,这个方法比较有意思,它的作用是虚拟一个表,举个例子:Db中没有这个表,但要生成一个DataTable对象,当然,可以使用datatable.columns.add()的方法完成.如果使用这个方法,这样处理就可以了select ‘’ authorid,’’ authorname,0 sortorder from ad_virtual.注意:最后的ad_virtual表名称一定要加上,这个是用来识别是否虚拟表,但ad_virtual表不需要在Db中真正存在!
3.获取DataSet对象时,SQL也有所不同.如图-2和图-3所示
clip_image004clip_image002db层是什么,我的框架之Db层
图-2
clip_image005clip_image004clip_image002db层是什么,我的框架之Db层
图-3
这里面增加了一个WhereStyle的参数,也就是说,SQL语句有3种形态存在,一是直接拼SQL语句,二是使用参数化,三是格式化字符串.
4.关于SQL的执行方法,如图-4所示
clip_image007clip_image005clip_image004clip_image002db层是什么,我的框架之Db层
图-4
额外增加了DbSqlStringAndParameter类,这个类里面包含两个属性.如图-5所示.作用是执行参数化的SQL语句,单条和批量均可
clip_image008clip_image007clip_image005clip_image004clip_image002db层是什么,我的框架之Db层
图-5
5.调用方式采用反射方式调用,Db类型和连接串直接取自配置文件.如图-6所示
clip_image010clip_image008clip_image007clip_image005clip_image004clip_image002db层是什么,我的框架之Db层
图-6
6.获取AccessDb的表结构.AccessDb并没有为我们提供如SqlServer中sys.columns中的对象来存储用户创建的Db对象,而且打开AccessDb也无法找到相关存储对象.我们可以通过如图-7的方式获取其Db对象,如图-7所示
clip_image012clip_image010clip_image008clip_image007clip_image005clip_image004clip_image002db层是什么,我的框架之Db层
图-7
还有一个点要说,就是日志,包括Db表数据变动日志和操作日志,这里我使用log4net组件实现,在调用SQL语句的地方加进去.
其他的东西就没有什么了,就是封装了一些常用的方法.大家看看就清楚了!以前想过这套东西不准备公布源码的,后来看到博客园里很多大牛都无私的奉献源码,我不是大牛,但也在此跟个风,把源码共享下.
代码地址
http://u.115.com/file/clwmyhqg# Navi.Kernel.DbUtilities.rar
提取码:clwmyhqg
Tags: 

延伸阅读

最新评论

发表评论