没有合适的资源?快使用搜索试试~ 我知道了~
ASP.NET(C#)巩固教程(微软原创)1
需积分: 0 19 下载量 15 浏览量
2007-08-04
22:02:58
上传
评论
收藏 1.57MB DOC 举报
温馨提示
试读
33页
ASP.NET(C#)巩固教程(微软原创),凭良心绝对值5分<br>初学asp.net的朋友按照顺序做一边,基本上所有的只是点和控件都用到了
资源详情
资源评论
资源推荐
下载本教程中的编码例子
导言
作为 web 开发人员,我们的生活围绕着数据操作。我们建立数据库来存储数据,写编码来
访问和修改数据,设计网页来采集和汇总数据。本文是研究在 ASP.NET 2.0 中实现这些常
见的数据访问模式之技术的长篇系列教程的第一篇。我们将从创建一个软件框架开始,这
个框架的组成部分包括一个使用强类型的 DataSet 的数据访问层(DAL),一个实施用户定义
的业务规则的业务逻辑层(BLL),以及一个由共享页面布局的 ASP.NET 网页组成的表现层。
在打下这个后端的基础工作之后,我们将开始转向报表,示范如何显示,汇总,采集,和
验证 web 应用的数据。这些教程旨在简明扼要,使用了许多屏幕截图,提供了按步就 班
(step-by-step)的指导,带你经历这个开发过程。每个教程都有 C# 版和 VB 版,并且附有涉
及的完整的编码的下载。(这第一个教程比较长,但以后其他的教程将以更容易消化的篇幅
推出。)
在这些教程中,我们将使用置于 App_Data 目录内的微 软 SQL Server 2005 Express 版的
Northwind 数据库。除了数据库文件外,App_Data 目录还带有用于创建数据库的 SQL 脚本,
万一你想使用别的数据库版本的话。如果你愿意的话,你也可以直接从微软下载这些脚本
如果你使用别的 SQL Server 版本的 Northwind 数据库的话,你需要更新 Web.config 文件中
的 NORTHWNDConnectionString 设置。本教程中的 web 应用是个基于文件系统的网站项目,
是使用 Visual Studio 2005 专业版建立起来的。但是,所有的教程都可以在 Visual Studio
2005 的免费版本 Visual Web Developer 中运行。
在这个教程里,我们将从头开始,先创建一个数据访问层 (DAL),然后在第二个教程里创
建一个业务逻辑层(BLL),在第三个教程里设计页面布局和导航。以后的教程将建立在这
三个教程的基础之上。在第一个教程里,我们要讨论的内容多多,所以,请打开 Visual
Studio,让我们动起手来!
第一步:创建一个 Web 项目,配置数据库连接
在我们开始创建数据访问层(DAL)之前,我们首先需要创建一个网站,以及建立一个数据
库。我们从创建一个基于文件系统的 ASP.NET 网站开始。次序如下,打开文件(File)菜单,
选择新的网站 (New Web Site),系统会显示一个新网站对话框,选择 ASP.NET 网站模板
(Web Site template),设置定 位(Location)列表的选项为文件系统( File System),然后选这一
个放置这个网站的文件夹,然后选择编程语 言为 C#。
图 1: 创建一个基于文件系统的网站
Visual Studio 会为你生成一个新的网站,同时生成一个名为 Default.aspx 的网页,和一 个
App_Data 文件夹。
网站生成之后,下一步是在 Visual Studio 的服务器资源管理器(Server Explorer)里为你的数
据库添加一个引 用(reference)。把一个数据库添加到服务器资源管理器之后,你就能在
Visual Studio 环境里添加数据表,存 储过程,视图等等。你也能查看数据库里的数据,手
工或用查询生成器(Query Builder)的图形界面建立你自己的查询语句。此外,当我们为
DAL 创建强类型的 DataSet 时,我们需要把 Visual Studio 指向作为 DataSet 数据源的目标数
据库。虽然我们可以在适当时候提供所涉及的数据库连接信息,但假如我们预 先在服务器
资源管理器里注册这些数据库的话,Visual Studio 会自动把这些数据库填充到一个下拉列
表中去 。
把 Northwind 数据库添加到服务器资源管理器中去的步骤取决于你想使用放置在 App_Data
文件夹 里的 SQL Server 2005 Express 版本数据库,还是你想使用已经建立好了的 SQL
Server 2000 或 2005 数据库服 务器。
使用置于 App_Data 文件夹中的数据库
如果你没有可连接的 SQL Server 2000 或 2005 服务器,或者你就是想避免给数据库服务器
添加数据库,你可以使用 SQL Server 2005 Express 版的 Northwind 数据库,该数据库位于下
载源码中的 App_Data 文件夹里(NORTHWND.MDF)。
置于 App_Data 文件夹里的数据库会被自动添加到服务器资源管理器中。假设你已经在你的
机器上安装了 SQL Server 2005 Express 版本,那么你应该在服务器资源管理器中看到一个
名为 NORTHWND.MDF 的节点,你可以将这个节点扩展开来,浏览其中的数据表,视图,
存储过程等等 (参考图 2)。
App_Data 文件夹还可以放置微软的 Access.mdb 数据库文件,跟 SQL Server 的数 据库文件
类似,这些 Access 文件会被自动地添加到服务器资源管理器中。如果你不想用任何 SQL
Server 数据库,那么你总归可以下载微软 Access 版本的 Northwind 数据库文件,然后将其
放置于 App_Data 文件夹中。但记住,Access 数据库没有 SQL Server 那么多功能,而且它
并不是设计来在网站情形下使用的。此外,在后面几个教程里将用到 Access 数据库不支持
的数据库层次的功能。
连接到微软 SQL Server 2000 或 2005 数据库服务器中的数据库
或者,你也可以连接到安装在数据库服务器上的 Northwind 数据库。假如数据库服务器上
尚未安装 Northwind 数据库的话,你首先必须运行本教程下载文件中的安装脚本来把数据
库添加到数据库服务器上去,或者你也可以从微软网站上直接下载 SQL Server 2000 的
Northwind 数据库以及安装脚本。
安 装 数 据 库 完 毕 之 后 , 去 Visual Studio 中 的 服 务 器 资 源 管 理 器 , 在 数 据 连 接 (Data
Connections)节点上按右鼠标,选择“添加连接(Add Connection)”。如果你看不到服务器资源
管理器,去菜单“查看(View)”点击 “服务器资源管理器”,或者按组合键 Ctrl+Alt+S 来打开服
务器资源管理器。这会打开添加连接的对话框,在这上面,你可以设置需要连接的服务器
认证信息,以及数据库名字。在你成功配置数据库连接信息,按 OK 按钮之后,数据库就
会被添加成数据连接节点之下的一个节点。然后,你就可以扩展数据库节点来浏览数据表
视图,存储过程等等。
图 2: 添加一个到你的数据库服务器上的 Northwind 数据库的连接
第二步:创建一个数据访问层
与数据打交道时,一种做法是把跟数据相关的逻辑直接放在表现层中(在一个 web 应用里,
ASP.NET 网页构成了表现层)。其形式一般是在 ASP.NET 网页的编码部分写 ADO.NET 编
码或者在标识符部 分使用 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。
要返回强类型对象,开发人员可以创建自定义业务对象,或者使用强类型的 DataSet。开发
人员实现的业务对 象类,其属性往往是对相应的底层数据表的字段的映射。而一个强类型
的 DataSet,则是 Visual Studio 基于数 据库 schema 为你生成的一个类,其成员的类型都是
由 这 个 schema 决 定 的 。 强 类 型 的 DataSet 本 身 , 是 由 继 承 于 ADO.NET 中
DataSet,DataTable,和 DataRow 类的子类组成的。除了强类型的 DataTable 外,强类型的
DataSet 现 在 还 包 括 TableAdapter 类 , 这 些 类 包 含 了 填 充 DataSet 中 的 DataTable 和 把
DataTable 的改动传回数据库的各种方法。
注意:想了解使用强类型 DataSet 比之业务对象的优缺点的更多信息,请参考设 计数据层
组件以及在层间传输数据一文。
在这些教程的架构里,我们将使用强类型的 DataSet。图 3 示范说明了使用强类型的
DataSet 之应用程序的不 同层间的流程(workflow)。
图 3: 把所有的数据访问编码委托给 DAL
创建强类型的 DataSet 和 Table Adapter
我们开始创建我们的 DAL,先给我们的项目添加一个强类型的 DataSet。做法如下,在解
决方案管理器里的项目 节点上按右鼠标,选择“添加新项(Add a New Item)”。在模板列单里
选择 DataSet,将其命名 为 Northwind.xsd。
图 4: 给你的项目添加一个新的 DataSet
在点击“添加(Add)”按钮后,Visual Studio 会问我们是否将 DataSet 添加到 App_Code 文件夹
中, 选 择 “ Yes” 。 然 后 Visual Studio 会 显示 强 类型 的 DataSet 的 设 计 器 ,同 时 会 启动
TableAdapter 配置向导,允许你给你的强 类型 DataSet 添加第一个 TableAdapter。
强类型的 DataSet 起了强类型对象的集合的作用,它由强类型 DataTable 实例组成,每个强
类型 DataTable 又进 而由强类型的 DataRow 实例组成。我们将为这个教程系列要用到的每
个数据表建立一个对应的强类型 DataTable 。让我们开始吧,先为 Products 表建立一个
DataTable。
记住,强类型的 DataTable 并不包括如何访问对应底层的数据表的任何信息。要获取用来填
充 DataTable 的数据 ,我们使用 TableAdapter 类,它提供了数据访问层的功能。对于我们
的 Products DataTable , 相 应 的 TableAdapter 类 将 包 括 GetProducts() 和
GetProductByCategoryID(categoryID)等方法,而我 们将在表现层调用这些方法。DataTable
的作用是在分层间传输数据。
TableAdapter 配置向导首先要你选择使用哪个数据库。下拉框里列出了服务器资源管理器
内的那些数据库。如 果你预先没有把 Northwind 数据库添加到服务器资源管理器里去的话,
这时你可以点击新连接按钮来添加。
图 5: 在下拉框里选择 Northwind 数据库
选择好数据库后,按“下一步”按钮,向导会问你是否想在 Web.config 文件里存放连接字符
串 。 将 连 接 字 符 串 存 放 在 Web.config 文 件 里 , 你 可 以 避 免 把 连 接 字 符 串 硬 写 在
TableAdapter 类的编 码中,如果将来连接字符串信息改动的话,这种做法会极大地简化要
做的 编码 改动 。 如 果 你 选 择在 配置 文件 存 放连 接 字 符串 ,连 接 字 符串 将 被置 放于
<connectionStrings>段落中,这个段落可以被加密来提高安全,也可以通过 IIS 图形界面管
理工具中的新的 ASP.NET 2.0 属性页来修改。当然这个工具更适于管理员。
图 6: 在 Web.config 中存放连接字符串
接下来,我们需要定义第一个强类型的 DataTable 的 schema,同时为用来填充强类型
DataSet 的 TableAdapter 类 提 供 第 一 个 方 法 。 这 两 步 可 以 通 过 建 立 一 个 返 回 对 应 于
DataTable 的数据表的字段的查询同时完成。在向导的 最后,我们将为这个查询对应的方法
命名。完成后,这个方法可以在表现层调用,它会执行设置好的查询,进 而填充一个强类
型的 DataTable。
开始定义 SQL 查询之前,我们必须首先选择我们想要 TableAdapter 执行查询的方式。我们
可以直接用 ad-hoc 的 SQL 语句,或建立一个新的存储过程,或使用现存的存储过程。在这
些教程里,我们将使用 ad-hoc 的 SQL 语句。请参考 Brian Noyes 的文章“使用 Visual Studio
2005 DataSet 设计器创建数据访问层”中使用存储过程的例子。
剩余32页未读,继续阅读
子游自在
- 粉丝: 3
- 资源: 40
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0