当前位置:文档之家› 创建数据访问层

创建数据访问层

简介作为web 开发人员,我们的工作总是在和数据打交道。

我们创建数据库来存储数据,编写代码来检索并修改数据,并创建Web 页面来收集和汇总数据。

这是探讨在 2.0 中实现这些常用类型的技巧的系列教程中的首篇教程。

我们从创建一个软件架构开始,包括使用Typed DataSet 的数据访问层(DAL) 、实现自定义业务规则的业务逻辑层(BLL) 和共享同一页面布局的 页面组成的表示层。

一旦奠定了这个基础,我们接下来会转向报表,说明如何显示、汇总、收集和验证来自Web 应用程序的数据。

这些教程力求简明,使用大量屏幕截图逐步教您直观地了解整个流程。

每个教程都提供C# 和Visual Basic 版本,并且可以下载所使用的全部代码。

(这篇教程内容非常冗长,但接下来会分几大部分进行介绍,使人更容易理解和消化。

)针对这些教程,我们将使用放在App_Data目录下Northwind 数据库的Microsoft SQL Server 2005 Express Edition版本。

除数据库文件外,App_Data文件夹也包含创建该数据库的SQL 脚本,以满足您想使用不同数据库版本的需求。

如果愿意,这些脚本也可以直接从Microsoft 下载。

如果您使用的是Northwind 数据库的不同SQL Server 版本,需要更新该应用程序的Web.config文件中的NORTHWNDConnectionString设置。

这个Web 应用程序是使用Visual Studio 2005 Professional Edition 创建的基于文件系统的Web 站点项目。

不过,所有的这些教程同样适用于Visual Studio 2005 免费版,即Visual Web Developer。

该教程从头开始,先创建数据访问层(DAL) ,然后在第二篇教程中创建业务逻辑层(BLL) ,并在第三篇教程中进行页面布局和导航。

随后的教程以前三篇教程为基础。

在这篇教程中我们有很多内容要学习,现在就让我们打开Visual Studio 开始吧!步骤1 :创建一个Web 项目并连接到数据库在创建我们的数据访问层(DAL) 之前,我们首先需要创建一个网站并安装我们的数据库。

开始创建一个新的基于文件系统的 网站:从File 菜单选择New Web Site ,出现New Web Site 对话框。

选择 Web Site 模板,将Location 下拉列表设置成File System ,然后为该网站选择一个文件夹,并将语言设置成C# 。

图1 :创建一个基于文件系统的新网站这将创建一个具有Default.aspx 页面和App_Data文件夹的新网站。

创建好了网站,下一步是在Visual Studio 的Server Explorer 中添加对该数据库的引用。

通过在Server Explorer 中添加数据库,您可以添加来自Visual Studio 的表、存储过程、视图等。

您还可以手动或通过Query Builder 直观地查看表数据或进行查询。

而且,当我们为DAL 创建Typed DataSet 时,我们需要将Visual Studio 指向需要建立Typed DataSet 的数据库。

当我们能够及时在那个点上提供这种连接信息时,Visual Studio 自动填充己在Server Explorer 注册过的数据库的下拉列表。

将Northwind 数据库添加到Server Explorer 的步骤取决于您是否使用App_Data文件夹中的SQL Server 2005 Express Edition 数据库,或者是否有您想使用的Microsoft SQL Server 2000 或2005 数据库服务器安装程序。

使用 App_Data文件夹中的数据库如果您没有SQL Server 2000 或2005 数据库服务器可连接,或者您只想避免将该数据库添加到数据库服务器的麻烦,可以使用位于已下载网站源代码的App_Data文件夹中的Northwind 数据库的SQL Server 2005 Express Edition 版本(NORTHWND.MDF) 。

位于App_Data文件夹中的数据库将被自动添加到Server Explorer 。

假如您安装了SQL Server 2005 Express Edition ,在Server Explorer 应该看到一个名为NORTHWND.MDF 的节点,可以展开并探究其表、视图、存储过程等(见图2 )。

App_Data文件夹也可以存放Microsoft Access .mdb文件。

同它们的SQL Server 版本的数据库一样,这类文件将被自动添加到Server Explorer 。

如果您不想使用任何SQL Server 的数据库,您可以下载Northwind 数据库文件的Microsoft Access 版本并加入App_Data目录。

不过要记住,Access 数据库的特性不如SQL Server 丰富,且并不是为在网站环境下使用而设计的。

另外,35 以后的教程将用到某些不被Access 支持的数据库级特性。

连接到Microsoft SQL Server 2000 或2005 数据库服务器中的数据库同样,您可能要连接到安装在数据库服务器上的Northwind 数据库。

如果数据库服务器还没有安装Northwind 数据库,您必须先运行该教程下载文件中的安装脚本或直接从Microsoft 网站下载Northwind 的SQL Server 2000 版本和安装脚本,将其添加到数据库服务器。

一旦安装了该数据库,转到Visual Studio 的Server Explorer ,右键单击Data Connections 节点并选择Add Connection 。

如果没有找到Server Explorer ,转入View / Server Explorer 或选择Ctrl+Alt+S 。

这时将出现Add Connection 对话框,在这里可以指定要连接的服务器,认证信息和数据库名称。

一旦成功配置了数据库连接信息,单击OK 按钮,该数据库将被作为一个节点添加到Data Connections 节点下面。

您可以展开该数据库节点以探究其表、视图、存储过程等。

图2 :在您的数据库服务器的Northwind 数据库添加一个连接步骤2 :创建数据访问层在处理数据时,有种做法是将数据的特定逻辑直接内嵌到表示层(Web 应用程序中, 页面组成表示层)。

这可以通过在 页面的代码部分编写 代码,或者在标记符部分使用SqlDataSource 控件来完成。

无论采取哪种形式,该方法都让数据访问逻辑与表示层紧密结合。

不过,建议将数据访问与表示层隔离开来。

这个分离层被称作数据访问层(DAL) ,通常作为一个单独的类库项目来实现。

这种分层体系结构的优势得到了很好的论述,我们在该系列教程中也采用了此法。

有关基础数据源的所有代码,如创建到数据库的连接,发出SELECT 、INSERT 、UPDATE和DELETE命令等,都应位于DAL 。

表示层不应包含对这些数据访问代码的任何引用,而是通过调用DAL 来实现所有的数据访问请求。

数据访问层通常包含访问基础数据库数据的方法。

例如,Northwind 数据库提供Products和Categories表,记录要销售的产品及其他们所属的类别。

我们的DAL 提供如下方法:∙GetCategories():返回所有类别的信息∙GetProducts():返回所有产品的信息∙GetProductsByCategoryID(categoryID):返回属于某一指定类别的所有产品∙GetProductByProductID(productID):返回某一产品的信息调用时,这些方法将连接到数据库,进行适当的查询,并返回查询结果。

重要的是返回这些结果的方式。

这些方法可以简单返回一个由数据库查询填充的DataSet 或DataReader ,但理想的是应使用强类型的对象来返回这些结果。

强类型对象指的是编译时对其schema 进行严格定义的对象。

相反,弱类型的对象指的是只有在运行时才知道其schema 的对象。

例如,DataReader 和DataSet (默认)是弱类型对象,因为它们的schema 是由用来填充它们的数据库查询返回的列来定义的。

要访问弱类型DataTable 中的某列,需要使用如下语法:DataTable.Rows[index]["columnName"]。

我们需要使用字符串或序号索引访问列名这一点就显示了该例中DataTable 的弱类型特性。

另一方面,强类型的DataTable 有各自作为属性实现的列,生成如下代码:DataTable.Rows[index].columnName。

要返回强类型对象,开发人员可以创建他们自己的自定义业务对象或使用Typed DataSet 。

一个业务对象由开发人员实现成一个类,该类的属性通常反映出该业务对象表示的基础数据库表的列。

Typed DataSet 是由Visual Studio 基于数据库schema 为您生成的一个类,其成员都是强类型的。

Typed DataSet 本身包括了拓展 DataSet 、DataTable 和DataRow 类的类。

除强类型DataTable 外,Typed DataSet 现在还包括TableAdapter ,该类具有填充DataSet 的DataTable 以及将DataTable 中所作修改传回数据库的方法。

注意:有关使用Typed DataSet 与自定义业务对象的优劣比较的更多信息,请参见设计数据层组件并在层间传递数据。

我们对这些教程的体系结构使用强类型的DataSet 。

图 3 说明了使用Typed DataSet 的应用程序不同层间的工作流程。

图3 :所有的数据访问代码都在DAL 中定义创建一个Typed DataSet 和Table Adapter要创建我们的DAL ,要先将一个Typed DataSet 添加到我们的项目。

为此,右键单击Solution Explorer 中的项目节点,并选择Add a New Item 。

从模板列表中选择DataSet 选项,并将其命名为Northwind.xsd。

图4 :选择添加一个新的DataSet 到您的项目单击Add 后,出现提示添加DataSet 到App_Code文件夹,选择Yes 。

接着出现Typed DataSet 设计器并将启动TableAdapter Configuration Wizard ,允许您将您的第一个TableAdapter 添加到Typed DataSet 。

相关主题