1. DataReader 对象是查询数据库返回的一个关联的、只进的只读数据流。执行查询时,第一行返回到 DataReader 中。数据流保持到数据库的连接,然后返回下一条记录。DataReader 从数据库中读取行数据时,每行的列值都被读取和计算,但是不能被编辑。
2. 虽然连接数据库的应用程序使用 DataReader 就已足够,但是,DataReader 不能很好地支持数据库访问的断开连接模型。而 DataAdapter 和 DataSet 类则满足了这一需求。
DataSet 是 ADO.NET 断开连接体系结构中主要的数据存储工具。填充 DataSet 时,并非通过 Connection 对象将 DataSet 直接连接到数据库。您必须创建一个 DataAdapter 来填充 DataSet。DataAdapter 连接数据库,执行查询并填充 DataSet。
当 DataAdapter 调用 Fill 或 Update 方法时,在后台完成所有的数据传输。每个 .NET Framework 的数据提供程序都有一个 DataAdapter 对象。一个 DataSet 代表一组完整的数据,包括表格、约束条件和表关系。DataSet 能够存储代码创建的本地数据,也能存储来自多个数据源的数据,并断开到数据库的连接。
DataAdapter 能控制与现有数据源的交互。DataAdapter 也能将对 DataSet 的变更传输回数据源中。
3. 新的 ASP.NET 2.0 数据访问系统的核心是 DataSource 控件。突出的一方面是,通过 DataSource 隐藏了创建 SQLCommand、生成 DataAdapter 和填充 DataSet 的过程,或者由数据绑定向导自动配置这个过程。
<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>
4. ASP.NET 2.0 提供了几个独特的数据源对象:AccessDataSource、SqlDataSource、ObjectDataSource、DataSetDataSource、XmlDataSource、SiteMapDataSource。
SQLDataSource 和 ObjectDataSource 支持数据层缓存。通过设置数据源对象的一些属性,程序员不用开发任何自定义代码,即可使用缓存 api。数据源对象将自动管理底层存储机制的一致性。
SiteMapDataSource 和 XmlDataSource 组件是分层数据源控件,用于像 TreeView 和 Menu 控件这样的分层组件。其他各种组件用于管理列表数据。
5. ObjectDataSource:System.Web.UI.WebControls.ObjectDataSource 用于实现一个数据访问层,从而提供更好的封装和抽象。ObjectDataSource 控件支持绑定到一个特定的数据层,而非绑定到一个数据库,其绑定方式与使用其他控件绑定数据库的方式相同。ObjectDataSource 控件能够绑定到任何一个方法,该方法返回一个 DataSet 对象或 IEnumerable 对象(例如,一个 DataReader 或类集合)。
6. DataSetDataSource:System.Web.UI.WebControls.DataSetDataSource 控件允许使用 XML 列表数据。列表数据以行和列排列。要使用数据,只需设置 DataFile 属性,使其指向 XML 文件。例如对于XML文件:
<?xml version="1.0"?>
<collection>
<book>
<title>cosmos</title>
<author>carl sagan</author>
<publisher>ballantine books</publisher>
</book>
<book>
<title>catwings</title>
<author>ursula k. le guin</author>
<publisher>scholastic</publisher>
</book>
</collection>
创建连接数据源控件:
<asp:datasetdatasource id="Datasetdatasource1" runat="server"
datafile="collection.xml" />
7. XML 数据通常用于表示半结构化或层次化数据。使用 XML 文档作为数据源,可以从其他资源(例如,其他公司或现有应用程序)接收 XML 文档,并将 XML 数据格式化,以便与应用程序兼容。
要配置一个 System.Web.UI.WebControls.XmlDataSource,必须指定 XML 文件的路径,如果 XML 需要传输数据,则还需指定 XSLT 样式表路径或 XPath 查询路径(可选)。
<asp:XmlDataSource
ID="XmlDataSource1"
Runat="server"
DataFile="~/xml/fruits.xml">
</asp:XmlDataSource>
XMLDataSource 特别适用于拥有层次结构的控件,例如,树视图或数据列表。
<asp:TreeView
ID="TreeView1"
Runat="server"
DataSourceID="XmlDataSource1"
ShowLines="True">
</asp:TreeView>
以上两个列表说明了如何声明性地配置一个 XmlDataSource 和一个 TreeView 控件,使之呈现如图所示的 XML 层次结构。
8. ASP.NET 2.0 对改进数据绑定控件(例如 DataGrid、DataList 和 DropDownList 等)的概念作出了几个重要的创新:
现在,当数据绑定控件绑定到一个数据源控件(通过 DataSourceID 属性)时,能够自动绑定本身。这使页面开发人员无需了解页面的生存周期,并且不必在此时显式调用 DataBind()。数据绑定控件能够自动完成这些工作,甚至能侦听数据源的更改事件。
ASP.NET 2.0 引入了新的数据绑定控件,这些控件能自动使用数据源的功能,例如排序、分页、更新、插入和删除。
9. 几个新的控件:GridView、DetailsView、FormView大大简化了数据库操作的工作量,几乎不需要写代码即可完成大部分功能。
10.新增的 ASP.NET 2.0 数据功能:
1)ASP.NET 2.0 通过实现表格级 SQL 通知来支持数据库缓存依赖关系。更改数据时,一个表格级依赖关系通知页面。下面的代码将产品页面缓存了一小时,但是向数据库表添加了一个依赖关系。
2)虽然默认情况下 SQLDependency 类只支持 Microsoft SQL Server,但是您能够通过 machine.config 和 web.config 文件替代和重新配置类。这个功能允许您创建自定义的 SQLDependency 类,为任何 DataSource(包括 Oracle、Sybase 或其他任何数据库)提供相似的功能。
11.关于ViewState的比较:
在 ASP.NET 1.x 中,两个字符串进入 ViewState 缓冲区中的序列化如下所示:
<p<l<string1;>;l<string2;>>;>;
ASP.NET 1.x 中使用的 ViewState 序列化格式是元组格式,由三个一组的层次集合和使用大于号和小于号的序列对组成。大于号之前的字母代表存储对象的类型(t=triplet,p=pair,i=integer,l=ArrayList,等)。大于号和小于号内的每个子元素由分号分隔。这是有趣的序列化格式,有点像一个压缩的 XML。但是,如果您关心空间,那么它不是最有效的序列化格式(只是比 XML 稍好一点)。
ASP.NET 2.0 改变了这种序列化格式。在 ASP.NET 2.0 中,相同的两个字符串进入 ViewState 缓冲区的序列化如以下代码行所示:
[][]string1[]string2
浙公网安备 33010602011771号