.net企业库数据处理模块使用DAAB来开发应用

本章包括如下内容:

1. 配置DAAB

2. 在自己的应用程序中加入相关代码

3. 创建一个数据库对象

4. 创建一个DbCommand对象

5. 管理数据库连接

6. 使用TransactionScope类

7. 创建轻量级数据库应用程序

8. 操作异常

9. 操作参数

作者:changbird.(转载请注明出处)

一、配置DAAB应用模块

要在我们自己的应用(包括C/S、B/S等类型的应用)中使用DAAB,首先就要在应用的配置文件中加入DAAB所需的配置信息。下面我们将以一个简单的、基于asp.net mvc1.0和C#的WEB应用来展现如何配置、使用DAAB,项目名称-“MyMvc1”,使用SQLServer2000数据库,对应的具体数据库-“test”,访问该数据库的user及password-“test”和“test”。

当我们安装了企业库后,在VS2008的解决方案资源管理器中右键点击应用的配置文件,在弹出的菜单中将会出现一个新的选项 – “Edit Enterprise Library Configuration”,点击它将打开The Enterprise Library configuration tools提供的编辑界面(通过该工具我们可以对一个应用中使用到的所有企业库的模块进行配置),如图所示:

在编辑区域打开后的样子:

可以看出,在打开web.config的同时,配置管理工具已经为我们自动添加了DAAB模块节点“Data Access Application Block”(如果没有,则请右键点击节点“E:/asp.net mvc/code/MyMvc1/MyMvc1/MyMvc1/Web.config” à “New”,选择将DAAB模块加入配置文件),同时也把已有的数据库连接字符串归到DAAB配置节点中。

创建自定义数据库连接字符串

右键点击节点“connection Strings”可以选择“New”一个新的连接字符串对象,在右下的属性窗口中修改该对象的名称为“Connection2000”,并将正确的信息进行配置。

DAAB默认数据库

DAAB拥有一个默认的数据库属性(DefaultDatabase),以便在实际程序中创建数据库对象时不用传入参数去指定创建具体哪个数据库的对象实例。左键点击节点“Data Access Application Block”,在属性面板中找到“DefaultDatabase”项,在下拉菜单中选择刚才我们创建的连接字符串对象<Connection2000>,之后,我们的应用在默认情况下将一直使用该数据库作为数据库实例对象进行操作。

Ok,guys,到目前为止,我们已经学会了如下内容:

1. 如何在自己的应用中加入想使用的企业库模块

2. 当DAAB模块加入后,如何配置它。主要是如何配置数据库连接字符串以及DefaultDatabase信息。

Now, Let’s go on ~~~~

二、在自己的应用中加入相关代码

1. 加入相关企业库DLL文件的引用

(1) 加入Microsoft.Practices.EnterpriseLibrary.Data.dll库的引用,它的一般位置是:“<你的系统盘>:/Program Files/Microsoft Enterprise Library 4.1 - October 2008/Bin/”

(2) 加入Microsoft.Practices.EnterpriseLibrary.Common.dll库的引用,它的一般位置是:“<你的系统盘>:/Program Files/Microsoft Enterprise Library 4.1 - October 2008/Bin/”

BTW :按照官方的做法,只需要引入第一个dll库文件就行,但是经我实际测试,如果不引用第二个dll库文件,那在生成整个项目的时候会报错。

2. 在解决方案管理器中,依次打开目录“MyMvc1”à“Controllers”,找到并打开文件“HomeController.cs”,代码编辑区域如下图:

3. 加入DAAB命名空间、必要的DATA命名空间的引用:

using Microsoft.Practices.EnterpriseLibrary.Data;

using System.Data;

using System.Data.Common;

4. 创建数据库对象

DAAB模块提供一个DatabaseFactory类来创建所需的Database对象,创建后的db对象实例封装了常用的针对一个数据库的操作。我们可以通过调用不带参数的DatabaseFactory.createDatabase()方法来生成一个默认的数据库对象,该对象包含的数据库连接信息就是刚才我们在配置文件中设置的“DefaultDatabase”属性的信息。当然,我们还可以用带参数的重载createDatabase()方法,即给createDatabase()加入string类型的参数,以便Factory生成指定的Database对象。

现在,我们在HomeController类的Index()方法(其实这个Index是一个action)中加入如下代码:

Database db = DatabaseFactory.CreateDatabase();//等效于 -- Database db = DatabaseFactory.CreateDatabase(“Connection2000”);

这里需要提到一点,Database实际上是一个虚类,当我们调用CreateDatabase()时候返回的是一个Database的派生类,具体类型由配置文件中数据库连接字符串对象的ProviderName属性决定。那么在这个例子中,实际返回的是一个SqlDatabase类的实例。

MyThinking:这里用到了工厂模式,并且是一个典型的工厂模式应用,大家可以从中体会到设计模式在实际编程工作中的好处。同时,我们应该可以立即想到,如果我有一个比较特殊的数据库,想在已经使用DAAB的应用中加入,则可以通过从Database虚类派生一个具体的xxxDatabase类,来让该数据库融入到DAAB模块中。

5. 使用Database实例提供的各种方法进行操作

操作需求描述:从TEST数据库中的表T_USER中取出所有用户信息,包括字段:userId,uid,pwd。

根据需求描述,继续在Index()方法中加入如下业务逻辑处理代码:

string dbStr = "select userId,uid,pwd from T_USER";

DbCommand cmd = db.GetSqlStringCommand(dbStr);

using (IDataReader reader = db.ExecuteReader(cmd))

{

StringBuilder sb1 = new StringBuilder();

while(reader.Read())

{

sb1.Append(reader.GetInt64(0).ToString());

sb1.Append(" ");

sb1.Append(reader.GetString(1));

sb1.Append(" ");

sb1.Append(reader.GetString(2));

sb1.Append("<BR/>");

}

if(sb1.Length > 0)

{

ViewData["Message"] = sb1.ToString();

}

}

经过这段代码,将返回到View层的需要显示的信息,从字符串“Welcome to ASP.NET MVC!”变成了从数据库中取出的数据。完成了一次数据库的所有相关操作。

我们现在回顾一下整个开发流程,以一张流程图表示如下:

OK,利用DAAB进行应用开发的基本流程我们已经搞清楚了,接下来我们将仔细研究一些技术细节,例如实际开发过程中的connection管理问题等。

原文地址:https://www.cnblogs.com/yexinw/p/2690246.html