komatu

       暗  香  堂
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C#2.0学习笔记(1)

Posted on 2006-03-30 11:05  暗香堂  阅读(358)  评论(0)    收藏  举报
一个多星期下来,把C#2.0的开发文档总算看完了,整理出的笔记有点乱哦~

1.  DataReader 对象是查询数据库返回的一个关联的、只进的只读数据流。执行查询时,第一行返回到 DataReader 中。数据流保持到数据库的连接,然后返回下一条记录。DataReader 从数据库中读取行数据时,每行的列值都被读取和计算,但是不能被编辑。

2.  虽然连接数据库的应用程序使用 DataReader 就已足够,但是,DataReader 不能很好地支持数据库访问的断开连接模型。而 DataAdapter DataSet 类则满足了这一需求。

DataSet ADO.NET 断开连接体系结构中主要的数据存储工具。填充 DataSet 时,并非通过 Connection 对象将 DataSet 直接连接到数据库。您必须创建一个 DataAdapter 来填充 DataSetDataAdapter 连接数据库,执行查询并填充 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 提供了几个独特的数据源对象:AccessDataSourceSqlDataSourceObjectDataSourceDataSetDataSourceXmlDataSourceSiteMapDataSource

SQLDataSource ObjectDataSource 支持数据层缓存。通过设置数据源对象的一些属性,程序员不用开发任何自定义代码,即可使用缓存 api。数据源对象将自动管理底层存储机制的一致性。

SiteMapDataSource XmlDataSource 组件是分层数据源控件,用于像 TreeView Menu 控件这样的分层组件。其他各种组件用于管理列表数据。

5.  ObjectDataSourceSystem.Web.UI.WebControls.ObjectDataSource 用于实现一个数据访问层,从而提供更好的封装和抽象。ObjectDataSource 控件支持绑定到一个特定的数据层,而非绑定到一个数据库,其绑定方式与使用其他控件绑定数据库的方式相同。ObjectDataSource 控件能够绑定到任何一个方法,该方法返回一个 DataSet 对象或 IEnumerable 对象(例如,一个 DataReader 或类集合)。

6.  DataSetDataSourceSystem.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 对改进数据绑定控件(例如 DataGridDataList DropDownList )的概念作出了几个重要的创新:

现在,当数据绑定控件绑定到一个数据源控件(通过 DataSourceID 属性)时,能够自动绑定本身。这使页面开发人员无需了解页面的生存周期,并且不必在此时显式调用 DataBind()。数据绑定控件能够自动完成这些工作,甚至能侦听数据源的更改事件。

ASP.NET 2.0 引入了新的数据绑定控件,这些控件能自动使用数据源的功能,例如排序、分页、更新、插入和删除

9.  几个新的控件:GridViewDetailsViewFormView大大简化了数据库操作的工作量,几乎不需要写代码即可完成大部分功能。

10.新增的 ASP.NET 2.0 数据功能:

1ASP.NET 2.0 通过实现表格级 SQL 通知来支持数据库缓存依赖关系。更改数据时,一个表格级依赖关系通知页面。下面的代码将产品页面缓存了一小时,但是向数据库表添加了一个依赖关系。

2)虽然默认情况下 SQLDependency 类只支持 Microsoft SQL Server,但是您能够通过 machine.config web.config 文件替代和重新配置类。这个功能允许您创建自定义的 SQLDependency 类,为任何 DataSource(包括 OracleSybase 或其他任何数据库)提供相似的功能。

11.关于ViewState的比较:

ASP.NET 1.x 中,两个字符串进入 ViewState 缓冲区中的序列化如下所示:

<p<l<string1;>;l<string2;>>;>;

ASP.NET 1.x 中使用的 ViewState 序列化格式是元组格式,由三个一组的层次集合和使用大于号和小于号的序列对组成。大于号之前的字母代表存储对象的类型(t=tripletp=pairi=integerl=ArrayList,等)。大于号和小于号内的每个子元素由分号分隔。这是有趣的序列化格式,有点像一个压缩的 XML。但是,如果您关心空间,那么它不是最有效的序列化格式(只是比 XML 稍好一点)。

ASP.NET 2.0 改变了这种序列化格式。在 ASP.NET 2.0 中,相同的两个字符串进入 ViewState 缓冲区的序列化如以下代码行所示:

[][]string1[]string2

ASP.NET 2.0 中,不仅通过改变编码缩减代码行大小,同时Microsoft 通过将 ViewState 分割成两个独立不同的类别解决了这一特殊问题: ViewState 和控件状态。控件状态是另一类隐藏的状态,专门为维护控件的核心行为功能而保留,而 ViewState 只包含维护控件内容 (UI) 的状态。