Data Access Application Block QuickStart 的详细使用过程

首先是建立数据库。这是我的sql脚本。

Data Access Application Block QuickStart 的详细使用过程use master
Data Access Application Block QuickStart 的详细使用过程
Data Access Application Block QuickStart 的详细使用过程
go
Data Access Application Block QuickStart 的详细使用过程
Data Access Application Block QuickStart 的详细使用过程
create database DataAccessTest
Data Access Application Block QuickStart 的详细使用过程
Data Access Application Block QuickStart 的详细使用过程
go
Data Access Application Block QuickStart 的详细使用过程
Data Access Application Block QuickStart 的详细使用过程
use DataAccessTest
Data Access Application Block QuickStart 的详细使用过程
Data Access Application Block QuickStart 的详细使用过程
go
Data Access Application Block QuickStart 的详细使用过程
Data Access Application Block QuickStart 的详细使用过程
create table [Students] -- 学生
Data Access Application Block QuickStart 的详细使用过程
(
Data Access Application Block QuickStart 的详细使用过程    
[SerialNumber] int identity(1,1primary key-- 唯一标识
Data Access Application Block QuickStart 的详细使用过程
    [SID] nvarchar(50), -- 学号
Data Access Application Block QuickStart 的详细使用过程
    [SName] nvarchar(50) , -- 姓名
Data Access Application Block QuickStart 的详细使用过程
    [SClass] nvarchar(50-- 班级
Data Access Application Block QuickStart 的详细使用过程
)
Data Access Application Block QuickStart 的详细使用过程
Data Access Application Block QuickStart 的详细使用过程
go
Data Access Application Block QuickStart 的详细使用过程
Data Access Application Block QuickStart 的详细使用过程
insert into [Students]([SID][SName][SClass]values ('06130001''Jim Carry''CET Band 4')
Data Access Application Block QuickStart 的详细使用过程
insert into [Students]([SID][SName][SClass]values ('06130002''龌龊男''CET Band 4')
Data Access Application Block QuickStart 的详细使用过程
insert into [Students]([SID][SName][SClass]values ('06130003''dudu''CET Band 4')
Data Access Application Block QuickStart 的详细使用过程
insert into [Students]([SID][SName][SClass]values ('06130004''猥琐男''CET Band 6')
Data Access Application Block QuickStart 的详细使用过程
insert into [Students]([SID][SName][SClass]values ('06130005''章朝阳''CET Band 6')
Data Access Application Block QuickStart 的详细使用过程
Data Access Application Block QuickStart 的详细使用过程
go
Data Access Application Block QuickStart 的详细使用过程
Data Access Application Block QuickStart 的详细使用过程
create procedure [GetStudentsByClass]
Data Access Application Block QuickStart 的详细使用过程(
Data Access Application Block QuickStart 的详细使用过程    
@SClass nvarchar(50)
Data Access Application Block QuickStart 的详细使用过程)
Data Access Application Block QuickStart 的详细使用过程
as
Data Access Application Block QuickStart 的详细使用过程    
select * from [Students] where [SClass] = @SClass
Data Access Application Block QuickStart 的详细使用过程
Data Access Application Block QuickStart 的详细使用过程
go
Data Access Application Block QuickStart 的详细使用过程
Data Access Application Block QuickStart 的详细使用过程
create procedure [AddStudent]
Data Access Application Block QuickStart 的详细使用过程(
Data Access Application Block QuickStart 的详细使用过程    
@SID nvarchar(50),
Data Access Application Block QuickStart 的详细使用过程    
@SName nvarchar(50),
Data Access Application Block QuickStart 的详细使用过程    
@SClass nvarchar(50)
Data Access Application Block QuickStart 的详细使用过程)
Data Access Application Block QuickStart 的详细使用过程
as
Data Access Application Block QuickStart 的详细使用过程    
insert into [Students]([SID][SName][SClass]values (@SID@SName@SClass)
Data Access Application Block QuickStart 的详细使用过程    
select * from [Students] where [SerialNumber] = SCOPE_IDENTITY()
Data Access Application Block QuickStart 的详细使用过程
Data Access Application Block QuickStart 的详细使用过程
go
Data Access Application Block QuickStart 的详细使用过程
Data Access Application Block QuickStart 的详细使用过程
create procedure [DeleteStudent]
Data Access Application Block QuickStart 的详细使用过程(
Data Access Application Block QuickStart 的详细使用过程    
@SerialNumber int
Data Access Application Block QuickStart 的详细使用过程)
Data Access Application Block QuickStart 的详细使用过程
as
Data Access Application Block QuickStart 的详细使用过程    
delete from [Students] where [SerialNumber] = @SerialNumber
Data Access Application Block QuickStart 的详细使用过程
Data Access Application Block QuickStart 的详细使用过程
go
Data Access Application Block QuickStart 的详细使用过程
Data Access Application Block QuickStart 的详细使用过程
create procedure [UpdateStudent]
Data Access Application Block QuickStart 的详细使用过程(
Data Access Application Block QuickStart 的详细使用过程    
@SerialNumber int,
Data Access Application Block QuickStart 的详细使用过程    
@SID nvarchar(50),
Data Access Application Block QuickStart 的详细使用过程    
@SName nvarchar(50),
Data Access Application Block QuickStart 的详细使用过程    
@SClass nvarchar(50)
Data Access Application Block QuickStart 的详细使用过程)
Data Access Application Block QuickStart 的详细使用过程
as
Data Access Application Block QuickStart 的详细使用过程    
update [Students] set [SID] = @SID[SName] = @SName[SClass] = @SClass where [SerialNumber] = @SerialNumber
Data Access Application Block QuickStart 的详细使用过程    
select * from [Students] where [SerialNumber] = @SerialNumber
Data Access Application Block QuickStart 的详细使用过程
Data Access Application Block QuickStart 的详细使用过程
go
Data Access Application Block QuickStart 的详细使用过程
Data Access Application Block QuickStart 的详细使用过程
create procedure [GetStudent]
Data Access Application Block QuickStart 的详细使用过程(
Data Access Application Block QuickStart 的详细使用过程    
@SerialNumber int,
Data Access Application Block QuickStart 的详细使用过程    
@SID nvarchar(50) output,
Data Access Application Block QuickStart 的详细使用过程    
@SName nvarchar(50) output,
Data Access Application Block QuickStart 的详细使用过程    
@SClass nvarchar(50) output
Data Access Application Block QuickStart 的详细使用过程)
Data Access Application Block QuickStart 的详细使用过程
as
Data Access Application Block QuickStart 的详细使用过程    
select @SID = [SID]@SName = [SName]@SClass = [SClass] from [Students] where [SerialNumber] = @SerialNumber
Data Access Application Block QuickStart 的详细使用过程
Data Access Application Block QuickStart 的详细使用过程
go
Data Access Application Block QuickStart 的详细使用过程
Data Access Application Block QuickStart 的详细使用过程
create procedure [GetStudentName]
Data Access Application Block QuickStart 的详细使用过程(
Data Access Application Block QuickStart 的详细使用过程    
@SerialNumber int
Data Access Application Block QuickStart 的详细使用过程)
Data Access Application Block QuickStart 的详细使用过程
as
Data Access Application Block QuickStart 的详细使用过程    
select [SName] from [Students] where [SerialNumber] = @SerialNumber
Data Access Application Block QuickStart 的详细使用过程
Data Access Application Block QuickStart 的详细使用过程
go

这里使用的是sql server 2005 express edition。这里有一个东西需要注意一下:在UpdateStudent存储过程中在update语句执行完成之后又紧跟了一句select语句,在微软提供的源代码中对这种行为有一行注释:This statement is used to update the DataSet if changes are done on the updated record (identities, timestamps or triggers )。好像是说这条语句是来在被更新的数据又被更新之后来更新DataSet的,呵呵,好多更新,没太明白,请高人指点一下嘻嘻。

建立了数据库之后,为了简单,我建立了一个console application。然后在项目中添加了一个app.config文件。这还是我第一次使用app.config呢!以前一直都是做web开发的嘻嘻。文件如下:

Data Access Application Block QuickStart 的详细使用过程<?xml version="1.0" encoding="utf-8" ?>
Data Access Application Block QuickStart 的详细使用过程
<configuration>
Data Access Application Block QuickStart 的详细使用过程  
<configSections>
Data Access Application Block QuickStart 的详细使用过程    
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data" />
Data Access Application Block QuickStart 的详细使用过程  
</configSections>
Data Access Application Block QuickStart 的详细使用过程  
<connectionStrings>
Data Access Application Block QuickStart 的详细使用过程    
<add name="DataAccessTest" providerName="System.Data.SqlClient" connectionString="server=.\sqlexpress;database=DataAccessTest;Integrated Security=true" />
Data Access Application Block QuickStart 的详细使用过程  
</connectionStrings>
Data Access Application Block QuickStart 的详细使用过程  
<dataConfiguration defaultDatabase="DataAccessTest" />
Data Access Application Block QuickStart 的详细使用过程
</configuration>

在这里首先注册了一个配置段,对应于DatabaseSettings类型。就是说配置文件下面的dataConfiguration部分要用DatabaseSettings类来处理,至于怎么处理,不知道。希望在分析了源代码之后能够了解。接下来dataConfiguration的defaultDatabase属性的内容如果我没猜错的话应该是上面的connectionString,就是说默认的数据库是通过ConnectionString来指定的。在后面声明数据库的时候也可以指定数据库名,这里猜测可能就是ConnectionString,不过我没有测试。

在创建了app.config之后要添加引用。在我的项目中使用Data Access Application Block的时候要添加两个引用:Microsoft.Practices.EnterpriseLibrary.Common.dll和Microsoft.Practices.EnterpriseLibrary.Data.dll,至于其它时候是不是需要添加别的引用,还是不知道。这两个文件可以在安装Microsoft Enterprise Library January 2006路径的bin文件夹中找到。

接下来开始正式写代码了。在微软的样例中一共提供了六种应用情况,但是后两种应用(事务支持和利用sql server返回xml,只能应用于sql server)我从来都没有使用过,所以就没有实现。感兴趣的话可以自己看看嘻嘻。

第一个函数是使用DataReader直接返回数据的例子,也是我平时最长使用的方法。代码如下:

Data Access Application Block QuickStart 的详细使用过程static void PrintAllStudents()
}

这里使用了工厂模式生成数据库对象,还使用了全新的DbXXX对象。这些东西都是我很感兴趣的,不过因为开窍时间比较晚,暂时对他们还没有什么认识,希望以后能好好研究一下。另外我在前面说可以在创建数据库的时候指定ConnectionString,就是指在DatabaseFactory.CreateDatabase()时可以传递一个string类型的参数,估计就是你所想指定的ConnectionString。剩下的部分没有什么差别了,只不过使用的方法和ado.net不是很一样。

接下来是使用存储过程的例子:

Data Access Application Block QuickStart 的详细使用过程static void GetCETBand4Students()
}

这里通过AddInParameter方法向指定的DbCommand对象加入参数。接下来的代码就没有什么值得说的部分了,一起贴出来。

Data Access Application Block QuickStart 的详细使用过程using System;
Data Access Application Block QuickStart 的详细使用过程
using System.Collections.Generic;
Data Access Application Block QuickStart 的详细使用过程
using System.Text;
Data Access Application Block QuickStart 的详细使用过程
using Microsoft.Practices.EnterpriseLibrary.Data;
Data Access Application Block QuickStart 的详细使用过程
using System.Data.Common;
Data Access Application Block QuickStart 的详细使用过程
using System.Data;
Data Access Application Block QuickStart 的详细使用过程
Data Access Application Block QuickStart 的详细使用过程
namespace DataAccessTest

当然这只是Data Access Application Block的一个极其简单的应用,而且Data Access Application Block的使用方法远不止于此

这篇文章是从博客园:骑士的荣誉  看到的,虽然简单,确实入门兄弟的上等参考,顾贴一下

相关文章: