基于.NET的轻量级ORM框架及数据库工具集(三)

创建一个数据库类型无关的DBHelper实例

在原始的ado.net框架中,不同的数据库有不同的类型的命名空间和类。例如创建一个数据库连接对象,对于SQLSERVER使用SqlConnection,对于ODBC使用OdbcConnection。在著名的petshop示例程序中,为了使系统能适应不同的数据库,还专门在数据访问层抽象出一个通用的模型,然后根据不同的数据库类型分别设计出具体的实现。

在DBHelper2中,不同的数据库类型可以使用同一个编程模型,其中的属性和方法已包括.NET内置支持的全部数据库类型(包括:SQLSERVER,ODBC,OLEDB等),不需要重新根据数据库类型单独设计。对于.NET没有内置支持的数据库(如:ORACLE,MYSQL等),只需要通过继承DBHelper类,实现其中少量的数据库差异功能即可扩展。

一、使用DBFactory创建DBHelper实例

DBFactory类提供了一个静态方法CreateDBHelper,可以根据配置文件的连接串来创建所需要的DBHelper实例。

'使用DBFactory创建DBHelper实例
'指定数据库连接串,根据连接串的providerName来确定数据库类型,默认为SQLSERVER
Using db As DBHelper = DBFactory.CreateDBHelper("ConnectionString")
 
End Using

其中CreateDBHelper的参数“ConnectionString”是指在web.config文件中<connectionStrings>配置节中的的数据库连接串的名称。具体配置如下:

<add name="ConnectionString" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=AdventureWorks2012_Data.mdf;Integrated  Security=True;" providerName="SQLHelper"/>

其中providerName属性给出了这个数据库的类型。如果此属性缺省,则默认为SQLSERVER。

providerName

数据库类型

SQLHelper

SQLSERVER

ODBCHelper

通过ODBC连接的数据库

OLEDBHelper

通过OLEDB引擎访问的文件型数据库

在数据库连接串中,除了ado.net约定的几项以外,dbhelper还能识别以下字段:

连接串字段

说明

CommandTimeOut

数值型。SQL命令执行的时限,单位是秒。SQL命令执行超过此时限将抛出CommandTimeout异常。默认30秒。

ConvertNullToEmpty

布尔型。对于字符型字段:当该值为True时,读取数据库中的DBNull会得到String.Empty,否则,得到一个null。 默认True,此时通过DBHelper获得的字符型数据不会有空值出现,可省去了大量判断空值的操作。

ConvertEncoding

布尔型。专门针对Informix出现的中文乱码问题(另文专述)。对于CSDK 2.7以上版本如果出现了乱码,需要设置该值为True。默认False。

 

二、DBHelper类的主要功能

DBHelper是一个数据库工具集,它主要包括以下几类方法和属性:

1、数据库状态类

方法

说明

Open

打开数据库连接。不需要显式操作,凡是需要的地方会自动打开。

Close

关闭数据库连接。如果不显式操作,当DBHelper对象被回收时自动执行关闭操作。

BeginTransaction

开启一个事务

CommitTransaction

提交一个事务

RollbackTransaction

回滚一个事务

2、继承Ado.net的ExecuteXXX方法

上文介绍过ExecuteNonQuery, ExecuteReader, ExecuteScalar等方法,和ado.net的同名方法不同,dbhelper提供的方法与数据库无关,可直接传入多个SQL参数的值

3、ORM(对象-关系映射)类方法

方法

说明

Load

根据简单对象的主键值从数据库中读取一条记录填入到简单对象中。

Save

将简单对象的值保存到数据库对应的表中。如果主键值存在则更新记录,否则是插入新记录

Remove

根据简单对象的主键值删除数据库中对应的记录

ReadEntity

使用原生SQL从数据库中读取一个简单对象的值

4、集合操作类方法

方法

说明

ReadTable

从数据库中读取数据后装入到一个内存中的数据表

SaveTable

将内存数据表中的数据全部保存到数据库

ReadList

读取数据库数据后装入一个简单对象的List

SaveList

将简单对象的List保存到数据库

WriteTo

将一个数据库的记录集保存到另外一个数据库中指定表的同名字段中。这两个数据库可以是异构的。

5、数据类型转换类

使用ado.net从数据库中读取数据时,得到的值是object类型的,需要应用程序来装箱。装箱时还要判断数据是否为空值,是否合法等繁琐的工作。dbhelper提供了一系列类型转换函数,可以直接将数据库的数据转换成需要的类型,自动判断数据有效性。

方法

说明

ReadStr

转为字符串并转码,清除尾部空格。

BoolToStr

布尔值转字符:True=Y,False=N

BoolToInt

布尔值转整型:True=1,False=0

ReadBool

字符型转布尔型

ReadDate

转为日期,DBNULL转为空值

ReadLng

转为长整型,无效时为空值

ReadInt

转为整型,无效时为空值

ReadShort

转为短整型,无效时为空值

ReadSng

转为单精度浮点数,无效时为空值

ReadDbl

转为双精度浮点数,无效时为空值

ReadDec

转为十进制数,无效时为空值

ReadObj

把DBNULL转换为NULL

WriteStr

字符串写入数据库,空串转为DBNULL,并转码

WriteDate

日期型转为数据库类型。空值和20世纪以前转为数据库空值

WriteBool

不能识别为布尔型的值转为空值

WriteDbl

不能识别为浮点数的值转为空值

WriteDec

不能识别为十进制数和值转为空值

WriteInt

不能识别为整型数的值转为空值

WriteLng

不能识别为长整型数的值转为空值

WriteShort

不能识别为短整型数的值转为空值

WriteSng

不能识别为单精度浮点数的值转为空值

WriteObj

空值转为DBNULL

DateTimeStrToDate

日期型+字符型时间转换为Date型

D8ToDate

8位数字转为日期

D14ToDate

YYYYMMDDHHmmSS格式的14位数字转为日期

源代码:https://github.com/alibary/DBHelper2.git 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值