数据访问一直是开发 Web 应用程序的一个关键问题。现在,大多数复杂的应用程序都可以利用 ASP.NET 2.0 提供的数据访问工具。从体系结构和机制上限制 ASP.NET 1.x 执行的绑定和缓存问题,在 ASP.NET 2.0 中都得以解决了。
在以上代码中:
1.
|
创建了一个 SQLConnection 来连接 SQL Server 数据库。
|
2.
|
创建了一个 SQLCommand 来查询 Customers 表格。
|
3.
|
创建了一个 DataAdapter 来执行 SQLCommand 和数据操作的连接部分。
|
4.
|
从 DataAdapter 可以创建一个 DataSet。DataSet 是数据操作的断开连接部分,并且能绑定到 ASP.NET 2.0 的各种 Web 控件。
|
一旦创建了
DataSet,就能够将它绑定到任何数据识别的控件,方法是通过控件的
DataSource 属性和
DataBind() 方法。不幸的是,如果数据发生更改,您不得不再次调用
DataBind(),将控件重新绑定到数据集。因此,ASP.NET 1.x 开发人员不得不考虑调用绑定方法的精确时间和位置。开发出正确的同步方法和同步事件是相当困难的。
由于存在数据源的概念,ASP.NET 2.0 极大地简化了创建、绑定
DataSet 以及保持数据同步的全部过程。
ASP.NET 2.0ASP.NET 2.0 从几个方面极大地改进了基本模型。最突出的一方面是,通过
DataSource 隐藏了创建
SQLCommand、生成
DataAdapter 和填充
DataSet 的过程,或者由数据绑定向导自动配置这个过程。
Configure DataSource Wizard 生成的代码能够连接数据源(数据库、平面文件、XML、对象),创建查询,并允许开发人员以简单的几个步骤指定参数。
一旦创建了数据源,下一步就是将数据源连接到一个控件。这里的“连接”就是所谓的数据绑定。从数据源提取的值能够连接到控件属性或作为表格、列表或网格中的值使用,这些操作都无需编写任何代码。
ASP.NET 数据控件 ASP.NET 1.1 是为使用 ADO.NET API 和简化数据访问而设计的。ADO.NET 2.0 通过新增的一组控件和向导进一步简化了数据访问过程和编写代码的数量,这些控件和向导是针对数据识别的应用程序,为提高开发速度和简化开发过程而设计的。
DataSource 控件新的 ASP.NET 2.0 数据访问系统的核心是
DataSource 控件。一个
DataSource 控件代表一个备份数据存储(数据库、对象、xml、消息队列等),能够在 Web 页面上声明性地表示出来。页面并不显示
DataSource,但是它确实可以为任何数据绑定的 UI 控件提供数据访问。为了支持
DataSource 并使用自动数据绑定,利用一个事件模型以便在更改数据时通知控件,各种 UI 控件都进行了重新设计。此外,数据源还提供了包括排序、分页、更新、删除和插入在内的功能,执行这些功能无需任何附加代码。
最终,所有
DataSource 控件公开一个公共接口,因此,数据绑定控件无需了解连接细节(即连接到一个数据库还是一个 XML 文件)。每个
DataSource 还公开了特定于数据源的属性,因而对开发人员而言更为直观。例如,
SqlDataSource 公开了
ConnectionString 和
SelectCommand 属性,而
XMLDataSource 则公开了定义源文件和任何架构的属性。在底层,所有数据源都创建特定于提供程序的基础 ADO.NET 对象,该对象是检索数据所需的。
创建一个 DataSource在ASP.NET 2.0 中,
DataSource 的子类是新增的数据控件中功能最强大的。它们提供了到数据库、XML 文件或其他数据源的声明性配置连接。使用控件从数据源检索和更新数据无需添加任何自定义代码。Configure DataSource Wizards 的图形化界面允许程序员定义相应的细节来配置数据源,几个简单的步骤就可以完成。ASP.NET 2.0 自动生成代码来连接资源,如果合适,创建基于参数的查询。自动生成的代码结果存储在一个 .ASPX 文件中。例如,在 .ASPX 文件中存储的
SQLDataSource 代码包含连接字符串的属性和 SQL 语句的属性。
<asp:sqldatasource id="SqlDataSource1" runat="server"
selectcommand="select customerid,
companyname from customers" providername="System.Data.OleDb"
connectionstring="Provider=SQLOLEDB.1;Integrated Security=SSPI;
Initial Catalog=Northwind; Data Source=localhost;
Auto Translate=True; Use Encryption for Data=False>
</asp:sqldatasource> |
当然,开发人员能够根据需要修改这些代码。例如,可以将提供程序名移动到 web.config 文件或其他中心位置。