Enterprise Library4.0 Data Access Application Block实例讲解

Enterprise Library 4.0 – May 2008Microsoft patterns & practices Enterprise Library的新的版本,Enterprise Library有一系列的应用程序块及一个核心的特性(诸如对象创建、配置文件机制)组成,所有的这些都是可重用的组件,他们被设计来帮助开发人员应对常见的企业开发所面临的挑战,4.0这个版本还添加了一个新的应用程序块- Unity Application Block,这个新的应用程序块为对象产生和依赖注入提供了容器,除此以外4.0还添加了一些其他的新特性.

下面我们就用实例的方式来运用Data Access Application Block:

首先我们需要在项目中引用两个dll

Microsoft.Practices.EnterpriseLibrary.Common.dll;

Microsoft.Practices.EnterpriseLibrary.Data.dll;

在项目中添加配置文件app.config或者web.config

然后右键config文件选择Edit Enterprise Library Configuration打开界面化的配置文件编辑工具:

Enterprise Library4.0 Data Access Application Block实例讲解

打开编辑工具后

设置LocalSqlServer的相关参数,例如:

参数说明:

1.ConnectionString:连接字符串。

2.ProviderName:数据库适配器类型。

3.NameConnection String的名字。

Data Access Application BlockDefaultDatabase属性值设置为刚才你设置的LocalSqlServer的名称,如下图:

Enterprise Library4.0 Data Access Application Block实例讲解

至此,我们的Data最简洁的配置就完成了,下面我们开始完成我们代码的编写

1.  首先我们创建DataBase的实例:

//实例化Database

Database db = DatabaseFactory.CreateDatabase("NorthWindDB");

2.  创建DbCommand对象(1.普通sql语句执行的cmd2.存储过程执行的cmd)

//创建普通sql语句执行的DbCommand对象

DbCommand dbCmd = db.GetSqlStringCommand("sql语句");           

//创建存储过程执行的DbCommand对象 方法一           

DbCommand dbCmd = db.GetSqlStringCommand("存储过程的名称");

dbCmd.CommandType = CommandType.StoredProcedure;           

//创建存储过程执行的DbCommand对象 方法二

DbCommand dbCmd = db.GetStoredProcCommand("存储过程的名称");

如果需要为存储过程传递参数则添加下面代码

db.AddInParameter(dbCmd, "OrderID", DbType.Int32, "参数的值");//"OrderID"为存储过程对应的参数名,第三个参数为参数类型

3.  执行sql语句或者存储过程

通常情况下,我们需要返回DataSetDataReader和单值,要得到这三种返回我们可以分别加上下面的代码:

DataSet ds = db.ExecuteDataSet(dbCmd); //获取DataSet

IDataReader dr = db.ExecuteReader(dbCmd); //获取DataReader

string singleValue = db.ExecuteScalar(dbCmd).ToString();//获取单值,类型你可以根据你的需要去设置

好了,这样以后我们就可以使用我们获取到的DataSetDataReader和单值进行我们自己其他的一下操作了(显示、打印等)

除了上面我们列举的一些常见的使用以外,我们在实际的开发当中还可能经常性的使用事务,下面我列出了事务的使用方式:

DbCommand procCmd1 = null;

            DbCommand procCmd2 = null;

            using (IDbConnection con = db.CreateConnection())

            {

                con.Open();

                IDbTransaction tran = con.BeginTransaction();

                try

                {

                    //执行两个存储过程

                    procCmd1 = db.GetStoredProcCommand("存储过程1");  

                    procCmd2 = db.GetStoredProcCommand("存储过程2");

                    db.AddInParameter(procCmd2, "OrderID", DbType.Int32, 10248); //第四个参数是存储过程参数的值,第二个参数是存储过程的参数的名称

                    tran.Commit();

                }

                catch (Exception ee)

                {

                    tran.Rollback();

                }

                finally

                {

                    con.Close();

                }

            }

好了,到这里实例就写完了。^^ Brave chen

 

你可能感兴趣的:(application)