当前位置:开发者网络 >> 技术教程 >> .NET教程 >> Asp.Net开发 >> 内容
精彩推荐
分类最新教程
分类热点教程
  
Asp.Net Unleashed 2nd Edition 学习笔记 第三部分
作者:未知
日期:2007-01-19
人气:
投稿:(转贴)
来源:未知
字体:
收藏:加入浏览器收藏
以下正文:

Part III: Working with ADO.NET


CHAPTER 9 Introduction to ADO.NET
    9.1 An Overview of ADO.NET
        有多个NameSpace以及其中的类组成了ADO.NET的有用的类
            System.Data.SqlClient,完成对SQL Server 7及以上版本的访问连接
            System.Data.OleDb,完成OleDb Provider的数据库的访问
            System.Data.Odbc,完成Odbc Provider数据库的访问
            System.Data.Oracle,完成对Oracle数据库的访问
        每一个NameSpace下面又有Connection、Command以及DataReader等类完成具体的工作
    9.2 Performing Common Database Tasks
        Opening a Database Connection
            先创建一个Connection的实例,然后配置ConnectionString,使用Connection.Open()方法建立连接
        Retrieving Records from a Database Table
            在创建完Connection之后,创建Command实例,Command.Connection配置好,创建Command.CommandText,执行Command.ExecuteReader()方法,返回一个DataReader,使用DataReader.Read()方法循环DataReader获取所有数据
            使用DataReader.HasRows属性,可以获取是否返回了记录
            使用DataReader.ExecuteScalar()方法,获取单个记录
        Using Parameters with Queries   
            使用Command.Parameters这个ParametersCollection类的Add方法,增加Parameter
        Adding Records to a Database
            使用SQL语句完成记录增加,需要设定Command的SQL语句,执行Command.ExecuteNonQuery()方法
        Updating Database Records
            使用SQL语句完成更新,需要设定Command的SQL聚于,执行Command.ExecuteNonQuery()方法
        Deleting Database Records
            使用SQL语句完成删除,需要设定Command的SQL聚于,执行Command.ExecuteNonQuery()方法
    9.3 Improving Database Performance
        Using SQL Stored Procedures
            使用Stored Procedure可以提高一些性能,而且程序的结构也好于把SQL代码写在程序内部,至少可以不用修改程序,就可以完成某些变动—直接修改stored procedure就可以了
        Retrieving Return Values and Output Parameters
            通过增加Command的Parameter,并且指定Parameter的Direction为ReturnValue,可以获取Store Procedure的返回值
            通过增加Command的Parameter,并且指定Parameter的Direction为Output,可以获取Store Procedure的Output类型的参数
        Improving Performance with Connection Pooling
            连接数据库是一个损耗时间和资源的动作,可以使用连接池来得到某些程度的缓解
            只有使用了相同ConnectionString的连接才是会共享一个连接池的
            通过在ConnectionString中加入某些属性字符串,可以配置连接池,具体如下:
                Connection Lifetime,连接的生命长度,默认是无限长时间
                Connection Reset,连接被放入连接池的时候是否需要被复位
                Enlist,用于表明当前连接是否被自动加入Transaction事务上下文
                Max Pool Size,连接池中保存的连接的最大数量
                Min Pool Size,连接池中保存的连接的最小数量
                Pooling,是否允许使用连接池

    9.4 Advanced Database Topics
        Executing Database Commands in a Transaction
            事务Transaction保证了操作的原子性
        Creating a Database Transaction
            在SQL中使用Begin Transaction/Commit Transaction/Rollback Transaction,来完成事务的开始/结束/回滚
        Creating an ADO.NET Transaction

CHAPTER 10 Binding Data to Web Controls
    10.1 Overview of Data Binding
        Data binding是一个处理过程,在运行时,动态的把数值赋值给控件的属性
        使用<%#和%>标示了动态绑定表达式
        通过使用Control.DataBind()方法,就将<%# %>中的动态绑定表达式进行计算,并赋值给Control的属性
        必须注意的地方:Page也是一个Control的子类,所以Page上也有DataBind()方法,如果调用Page.DataBind()方法,那么Page上的所有Control都会进行一次数据绑定,即使在Page.DataBind()方法前已经有Control调用过DataBind()方法了,也要重新进行一次数据绑定,这就有可能引起一些程序结果上的变化
    10.2 Binding a Server Control to a Data Source
        Binding to the Repeater Control
            Repeater控件如果没有绑定数据源,那么就不会显示任何信息。典型的做法是,使用Repeater控件显示DB中表的记录
            可以使用DataReader获取数据,把DataReader赋值给Repeater.DataSource,最后调用Repeater.DataBind()方法完成数据绑定
            Repeater也可以使用<%# Container.DataItem(string fieldName) %>来进行数据绑定
        Using Templates
            Repeater控件可以使用Template,在Template中放置其他Control设置是内联代码都是可以的,Template有五种类型,
                HeaderTemplate,控制Repeater头部的格式
                ItemTemplate,控制Repeater每一个Item的显示格式
                AlternatingTemplate,控制交互的、替换的Item的格式
                SeperatorTemplate,控制Repeater中Item之间的分隔符的显示格式
                FooterTemplate,控制Repeater的尾部如何显示
        View State and the Repeater Control
            可以根据实际情况,通过设定Repeater.EnableViewState属性为false来禁止Repeater存储在ViewState中
        Binding to the DropDownList Control
            对DropDownList控件进行数据绑定和对Repeater进行数据绑定类似,有一个小小的不同是需要设置DropDownList.DataTextField属性,从而表明希望那个字段绑定到DropDownList上
            如果希望DropDownList的每一个Item的Value和Text属性并不是一个值的时候,需要另外设定DropDownList.DataValueField属性
        Binding to the RadioButtonList Control
            RadioButtonList控件的数据绑定工作需要设定RadioButtongList.DataSource属性和RadioButtonList.DataTextField属性,然后调用RadioButtonList.DataBind()方法,就可以了
        Binding to the CheckBoxList Control
            CheckBoxList控件的数据绑定工作和RadioButtonList的数据绑定类似,设定CheckBoxList.DataSource和CheckBoxList.DataTextField属性,然后调用CheckBoxList.DataBind()方法就可以了
        Binding to a ListBox Control
            ListBox控件的数据绑定工作需要设定ListBox.DataSource属性和ListBox.DataTextField属性,然后调用ListBox.DataBind()方法就可以了
        Binding to Other Controls
            Binding to Image Controls
                把一组Image控件绑定到数据源的方法是把Image控件放在Repeater控件中,通过绑定Repeater控件到数据源,就间接完成了Image控件到数据源的绑定
                除了使用Image控件,还可以使用HTML语言的img标记来完成图片到数据的绑定
            Binding to HyperLink Controls
                和Image类似,通过把HyperLink控件放在Repeater控件的ItemTemplate中,也可以实现HyperLink到数据源的绑定
                除了使用HyperLink控件,还可以使用HTML语言的<a href />标记来完成HyperLink和数据的绑定工作
            Binding to Button and LinkButton Controls
                对于Button和LinkButton控件和数据源的绑定,和Image控件与HyperLink控件是类似的
    10.3 Creating Master/Detail Forms
        创建主从表的Form有两种方法,一种是把主从表放在一个Form上,另一个方法放在多个页面上
        Creating Single-Page Master/Detail Forms
            书上面的例子是,使用DropDownList代表了主表数据,使用Repeater代表了从表数据。在DropDownList的SelectedIndexChanged事件中,根据DropDownList选择的值,取数据,并绑定到Repeater上
        Creating Multipage Master/Detail Forms       
            书上面的例子是,一个Page存放了Repeater,Repeater绑定了主表数据,每个Repeater的Item设定一个URL,使用类似于detail.aspx?id=的形式,在导航到子表的时候传递给子表的ID,子表在Load的时候,根据QueryString的查询,找到传递来的detail的id,查询数据库,获得数据,并绑定到这个Page的显示控件上
    10.4 Data Binding without Data Binding Expressions
        前面说的都是使用形如<%# Container.Item() %>的绑定表达式,为什么现在讲不要使用这种表达式呢?因为在Repeater的ItemTemplate中,不是用绑定表达式,可能代码更好读一些,毕竟首先是给人写程序,然后才是为了计算机
        不使用绑定表达式,就使用Repeater的ItemDataBound事件来完成,ItemDataBound事件是在每一个Item接收到数据源的数值的时候被触发的,所以,如果Repeater的数据源有10条记录,那么ItemDataBound事件会被处触发10次,每条一次,这会严重降低效率!!
        具体做法就是在Repeater的ItemDataBound事件中,书写代码,简单来说,就是找到需要用于显示数据的控件,然后把数值赋值给找到的控件的属性

CHAPTER 11 Using the DataList and DataGrid Controls
    11.1 Overview of the DataList and DataGrid Controls
        DataList和DataGrid有一些共同的特点:支持事件event bubbling、支持模板template以及datakeys集合
        Understanding Event Bubbling
            event bubbling是Repeater、DataList和DataGrid都支持的一种特性,所谓event bubbling是指子控件的事件可以被父控件所捕获到,从而,子控件触发的事件可以在父控件上面编写程序进行处理
            DataGrid和DataList控件支持五种事件:ItemCommand/UpdateCommand/EditCommand/DeleteCommand/CancelCommand
            如果希望在Repeater上面处理五种事件中的某一个,可以在Template中的Control的CommandName属性上指名是哪一种事件,有CommandName属性的控件有三个Button/LinkButton/ImageButton
        Using Templates
            除了拥有Repeater所拥有的Template之外,DataList还拥有SelectedItemTemplate和EditItemTemplate两个Template
            DataGrid支持四种Template,HeaderTemplate/ItemTemplate/FooterTemplate/EditItemTemplate
            DataList和DataGrid可以使用FindControl方法来获得其Template中的子控件
        Using the DataKeys Collection
            DataList和DataGrid独有的DataKeys集合,这个集合代表了控件中每一个Item的主键
            通过设定DataGrid或者DataList的DataKeyField属性可以设置DataGrid或者DataList的DataKeys集合
            DataKeys集合的优点在于,更新数据的时候,可以通过DataKeys集合中的值唯一的标示出记录
    11.2 Using the DataList Control
        Displaying Data in a DataList
            DataList和Repeater差不多,只不过DataList默认的现实行为是Table显示,
            通过设定RepeatLayout="Flow",将显示方式修改为每一个Item放在一个<span>中,而不是Table的Cell中,默认RepeatLayOut="Table"
            通过设定GridLines来确定是否还是Cell的边界,外观效果是横竖线           
        Using Templates with a DataList
            可以通过在Template中编辑格式从而完成对数据显示风格的修改
        Using Styles with a DataList
            DataList有很多的属性,可以完成界面风格上的修改,如下:
                BackColor/BorderColor/BoderStyle/BorderWidth/CssClass/Font/ForeColor/Height/HorizontalAlign/VerticalAlign/Width/Wrap
        Creating Multiple Columns in a DataList
            DataList可以被设定为在一行上面显示多列数据,并且可以控制纵横向排列方式
            通过修改DataList.RepeatColumns属性,设置DataList中在一行上面显示几列数据
            通过修改DataList.RepeatDirection属性,设置DataList中纵横向的排列方式
        Capturing Events Raised in a DataList Control           
            DataList支持五类子控件发送出的事件,
                CancelCommand,属性CommandName="cancel"的子控件触发的事件
                DeleteCommand,属性CommandName="delete"的子控件触发的事件
                EditCommand,属性CommandName="edit"的子控件触发的事件
                ItemCommand,子控件触发的,没有被CancelCommand/DeleteCommand/UpdateCommand/EditCommand处理的事件
                UpdateCommand,属性CommandName="update"的子控件触发的事件
            触发这些事件的控件只能够是Button/LinkButton/ImageButton
            ItemCommand事件是默认的事件,如果Button/LinkButton/ImageButton被点击了,而这个Control没有设定其他Command,那么就是DataList的ItemCommand来处理这个事件
            在每一个事件处理程序中,都有一个DataListCommandArgs参数,这个参数代表了触发事件的上下文环境,具体有
                CommandArgument,代表了触发事件的Control的CommandArgument属性
                CommandName,代表了触发事件的Commaned的名字
                CommandSource,代表了触发事件的DataList
                Item,代表了触发事件的Item
        Selecting Items in a DataList Control
            可以使用SeletectedItem或者/和SeletectedItemStyle来控制被选择Item的格式
        Using the DataKeys Collection with the DataList Control
            通过使用DataKeys集合获得当前Item的对应记录的PK
            通过设定DataList的DataKeyField属性来设置PK的字段
            注意:DataKeys集合不支持多字段主键,主键是Null也是不可以的
            通过传递给DataKeys集合一个Item的Index就可以获得当前Item的主键值了
        Creating a Master/Detail Form with a DataList Control
            就是在主表点击的时候,使用DataKeys集合获得PK,然后查询数据库获得子表的数据,填充给子表的显示控件
        Editing Items in a DataList Control
            这是比较复杂的一个步骤,
                首先在在EditItemTemplate中放入LinkButton,用于触发Edit事件
                在LinkButton上要声明CommandName="Edit"
                在DataList上要声明OnEditCommand属性,并把事件处理程序名赋值给OnEditCommand属性
                在DataList.EditCommand事件中,得到触发事件的Item的Index
                编写代码,完成这个工作
                对于Update/Cancel/Delete也是一样的处理方式
    11.3 Using the DataGrid Control
        DataGrid和DataList、Repeater类似,都是用于显示多条数据,较之DataList和Repeater更强大的地方是DataGrid支持排序和分页
        DataGrid,可以不用设置Template,而使用默认方式显示数据,也可以通过GridLines属性设置是否显示网格线,通过BackImageUrl属性设置背景图画,通过ShowHeader/ShowFooter属性设置是否显示表头/表尾
        Creating Columns in a DataGrid Control
            DataGrid支持五种列类型,
                BoundColumn,DataGrid默认的列类型,用于显示数据
                HyperLinkColumn,将记录显示为超链接
                TemplateColumn,使用模板显示记录
                ButtonColumn,显示Button控件
                EditCommandCOlumn,显示编辑命令,例如显示Edit/Update/Cancel
            通过设置DataGrid.AutoGenerateColumns属性为false来手动增加Column,从而更强大的控制DataGrid的显示样式       
        Adding a BoundColumn to a DataGrid
            DataGrid默认的列类型是BoundColumn,如果只是显示某几列,而非全部列,或者需要控制列显示的顺序,那么可以显示的声明BoundColumn
            注意,要将DataGrid.AutoGenerateColumns属性设置为false
            通过BoundColumn.DataFormatString属性来设置记录显示的效果、格式
            通过BoundColumn.HeaderText/BoundColumn.FooterText/BoundColumn.HeaderImageUrl来设置列的显示格式
        Adding a HyperLinkColumn to a DataGrid
            如果需要在DataGrid的Cell显示为到其他页的链接,可以使用HyperLinkColumn
            HyperLinkColumn在两个地方很有用:
                可以使用HyperLink完成主从表样式
                使用HyperLinkColumn电视一个到其他页面的超链接
            HyperLinkColumn的重要属性有:
                DataNavigateUrlField,用于产生HyperLinkColumn的数据字段
                DataNavigateUrlFormasString,一个格式化字符串,用于格式化DataNavigateUrlField
                DataTextField/DataTextFormatString,显示为HyperLinkColumn文本的数据库字段
                FooterText/HeaderText,显示在HyperLinkColumn底/顶端的文本               
        Adding a TemplateColumn to a DataGrid
            如果需要更强大的显示效果上面的控制,可以使用TemplateColumn,通过TemplateColumn可以使用到四种Template,
                HeaderTemplate,格式化显示在TemplateColumn顶部的文字
                ItemTemplate,格式化TemplateColumn中的Item的显示
                EditItemTemplate,格式化TemplateColumn被选择时候的显示
                FooterTemplate,格式化显示在TemplateColumn底部的文字
        Adding a ButtonColumn to a DataGrid
            通过ButtonColumn,可以增加Button,来完成想要的动作效果
        Adding an EditCommandColumn to a DataGrid Control
            通过设置EditCommandColumn来完成,Item被选择编辑的时候的动作效果,粗粗看了一下,和DataList的Edit差不多
        Using Styles with a DataGrid
            DataGrid有很多的属性,可以设置
        Sorting Columns in a DataGrid Control
            通过DataGrid.AllowSorting=true,Column.SortExpression属性和编码SortCommand事件,完成按列排序功能
        Paging Through Records in a DataGrid
            如果需要允许DataGrid分页,那么DataGrid的数据源必须实现了ICollection接口,DataReader没有时间ICollection接口
            通过设置DataGrid.AllowPaging,编码PageIndexChanged事件,来完成DataGrid的分页功能
        Implementing Custom Paging
            使用DataGrid的内件的分页机制,性能是一个大问题。因为换页的时候,必须取DB的数据,如果数据量很大,这是非常大的性能瓶颈
            做法很简单,不是每次都去把数据全取出来,而是使用参数,设定每一页的首末两条记录的PK,然后在SQL查询语句中使用这两个PK作为参数进行范围选取
        Selecting Rows in a DataGrid Control
            通过修改DataGrid.SelectedIndex属性,可以编码的选择某一行。
            通过DataGrid.ItemCommand事件中的DataGridCommandEventArgs参数,可以获得被选择的Item的Index
        Editing Items in a DataGrid Control
            通过增加EditCommandColumn到DataGrid中,并编码EditCommand、UpdateCommand和CancelCommand事件,可以完成对Item的编辑的功能
        Editing Items in a DataGrid Control with Templates
            使用上面的EditCommandColumn,有一定的限制
                首先只能够使用DataGrid内建的TextBox或者CheckBox之类的控件,如果我希望是从一个DropDownList中选择,就不好完成了
                其次,不能够使用验证控件,来校验是否输入合法
            鉴于这种限制,所以,使用Template是一种比较好的选择

CHAPTER 12 Working with DataSets
    12.1 Understanding DataSets
        DataSet和DataReader比较起来,
            DataSet不必总是保持数据库连接,取回数据后,可以断开数据库连接
            DataSet会在内存中建立一个DB的影像
        Elements of DataSets
            DataSet部分比较重要的类有,
                DataAdapter,是DataSet和DataAdapter代表的数据源之间的一个桥梁,使用DataAdapter获取数据、更新数据
                DataSet,可以保存有多个DataTable
                DataTable,代表了一个数据库的表
                DataRelation,DB表之间的关系
                DataView,代表了对DataTable作了过滤或者排序的一种视图
        Adding DataTables to a DataSet
            步骤很简单,
                创建DataSet
                建立Db的连接
                使用Command建立DataAdapter
                DataAdapter.Fill()方法完成DataSet的数据填充,同时DataTable也被添加到DataSet中了
        Binding Controls to a DataSet
            使用DataSet的数据绑定和DataReader类似,只不过如果DataSet中有多个DataTable的时候,要在指定Control.DataSource之后指定Control.DataMember为想要展示的表名
    12.2 Understanding DataTables
        Creating DataTables Programmatically
            DataTable有Rows集合和Columns集合,代表了DataTable中的记录和列信息
        Setting DataTable Properties
            DataTable的属性有四个,分别是,
                CaseSensitive,决定了在搜索、排序和过滤数据的时,进行比较是否是大小写敏感的
                MinimumCapacity,决定了最开始DataTable能够接受的记录条目数
                PrimaryKey,决定了作为PK的数据库表字段
                TableName,决定了DataTable的名字
        Setting Column Properties in a DataTable
            DataColumn属性有,
                AllowDBNull,是否允许本字段为Null
                AutoIncrement,创建一个自增字段
                AutoIncrementSeed,一个long整型的数字,代表了自增字段的初始值是多少
                AutoIncrementStep,一个long类型的数字,代表了自增的时候每次往上加多少
                ColumnName,字段名称
                DataType,字段类型
                DefaultValue,默认值
                Expression,创建计算字段或者汇总字段的时候使用
                MaxLength,字段的最大长度
                ReadOnly,决定字段值是否允许被更新
                Unique,决定表中所有数据关于本字段的数值不能够有雷同
        Assigning Default Values to Columns
            使用DataColumn.DefaultValue来设定字段默认值,以便没有填入数据的时候写入一个值
        Making Columns Unique
            使用DataColumn.Unique属性设定当前字段是否唯一
        Adding AutoIncrement Columns
            使用DataColumn.AutoInCrement属性设定是否自增
        Creating Calculated and Aggregate Columns
            可以使用DataColumn.Expression属性,来设定本字段为计算或者汇总字段,本字段的值是根据这个Expression和其他字段的值进行确定的
            可以用于汇总的函数有,
                Avg,计算平均值
                Count,计算总行数
                Max,计算最大值
                Min,计算最小值
                StDev,标准差计算
                Sum,求和
                Var,方差
        Computing Column Values in a DataTable
            使用DataTable.Compute()方法,可以使用上面说的七个汇总函数计算想要得到的值
        Defining Relationships Between DataTables
            DataSet中有多个表,可以设定表之间的关联关系,使用DataSet.Relations.Add()方法,来添加DataRelation
        Retrieving DataTable Schema Information
            可以通过DataAdapter.FillSchema()方法或者设置DataAdapter.MissingSchemaAction=MissingSchemaAction.AddWithKey属性可以获得数据库的Schema
            设置DataAdapter.MissingSchemaAction属性需要先于DataAdapter.Fill()方法
        Updating Records in a DataTable
            使用DataAdapter.Update()方法就可以更新回数据库,当然更新的时候,需要设置DataAdapter.UpdateCommand属性
    12.3 Understanding DataViews
        DataView是DataTable的某一个角度的特殊视图,可能是过滤过的,可能是排序过的
        可以通过DataTable.DefaultView()方法来获得一个DataView
        Filtering Rows in a DataView
            通过设置DataView.RowFilter属性来进行DataView的过滤工作
        Sorting Rows in a DataView
            通过设置DataView.Sort属性来完成DataView的排序功能
        Finding Rows in a DataView
            使用DataView.Find()方法可以找到相应对应行的RowIndex
    12.4 Using DataSets with ASP.NET Pages
        Caching DataSets
            通过Cache["CacheDataSet"] = myDataSet;来完成DataSet的缓存工作,以便提高性能
        Displaying Cached Data/Filtering Cached Data/Finding a Row in a Cached DataSet
            通过Cache一个DataView来显示数据
            利用DataView的RowFilter属性进行数据过滤
            利用DataView的Find()方法来获取想要的Row

CHAPTER 13 Working with XML
    13.1 Overview of the XML Classes
        DotNet提供了大量的类用于处理关于XML的数据,这些类分布在许多个Namespace中,主要的有:
            XmlTextReader,提供了快速、向前的对Xml文件的原始数据访问。这个类把Xml数据解析为token(是不是可以翻译为记号?),而不是把xml数据解析为对象模型(例如DOM)
            XmlTextWriter,提供了快速、向前的把数据写入xml文件。可以保证写入的数据符合W3C的xml 1.0标准
            XmlDocument,依照W3C xml dom level 1和2,来代表xml,使用XmlDocument,可以导航和编辑一个xml文档树上的结点
            XmlDataDocument,使用XmlDataDocument和DataSet可以提供对于同样的数据的关系化或者非关系化视图
            XmlNodeReader,对于XmlDocument或者XmlDataDocument提供的数据,进行快速、向前的访问
            DocumentNavigator,对于XmlDocument提供的数据,提供快速高效的导航
            DataDocumentNavigato,对于XmlDataDocument提供的数据,提供高速高效的导航,支持Xpath数据模型进行导航
            XslTransForm,借助于XSL完成对xml文档的转换工作。支持XSLT 1.0的语法
        XmlTextReader/XmlTextWriter,允许开发员执行基本的从文件中读取或者写入xml数据
        XmlDocument允许开发员使用DOM模型来表示XML数据,XmlDataDocument扩展了XmlDocument类,允许开发员使用DOM或者DataSet表示XML数据
        XmlNodeReader/DocumentNavigator/DataDocumentNavigator允许开发员对由XmlDocument或者XmlDataDocument表示的Xml文档的结点之间进行导航,后两个支持XPath表达式
        XslTransform类实现了Xml文档的转换。典型的应用有,把一个Xml文档转换为另一个格式的xml文档,或者把一个Xml文档转换为html文档。甚至,可以把一个xml文档转换为任何形式的文件
    13.2 Using XML with DataSets
        DataSet不仅可以展现从数据库中获取到的数据,也可以用于展现Xml数据
        DataSet展现Xml数据有两个方式,
            直接把xml数据装载进DataSet
            从一个DataSet构建出XmlDataDocument
        Reading an XML Document into a DataSet
            使用DataSet.ReadXml()方法就可以直接把一个XML文件读入到DataSet中
        Using a Schema with ReadXml
            当使用DataSet.ReadXml()方法的时候,DataSet会自己去判断Xml的格式,那么,就有可能在某些时刻出现问题,如果我们在读入XML的同时提供了Schema,就会省掉许多可能出现的问题,读入XML Schema的方法有两个
                提供一个单独的xml schema文件,使用DataSet.ReadXmlSchema()方法
                将schema文件放在xml文件中
        Writing an XML Document from a DataSet
            有好几个办法可以获得DataSet中数据
                使用DataSet.GetXml()方法可以获得Xml数据的字符串表示,使用DataSet.GetXml()方法不仅获得了DataSet中的XML数据还获得了Schema,如果只是想获得schema,可以使用DataSet.GetXmlSchema()方法来仅仅获得schema
                将DataSet数据以XML格式写入流中也有两个方法:DataSet.WriteXml()和DataSet.WriteXmlSchema()
                    DataSet.WriteXml()方法有一个参数指名了在保存Xml数据的同时对Schema的处理,可选择有,
                        DiffGram,按照格式写入Xml数据,这个格式保证数据可以被SQL Server 2000的UpdateGrams使用
                        IgnoreSchema,只写入数据,不包括Xml Schema
                        WriteSchema,数据和Schema都写入流(默认选项)
    13.3 Transforming XML with XSL Stylesheets
        XSL的应用有很多,典型的几个是
            使用XSL,把XML文件转换为HTML文件
            使用XSL,把一种格式的XML文件转换为另外格式的XML文件
    13.4 Using the ASP.NET Xml Control
        使用asp.net中的xml控件,可以简单的显示xml文档中的原始内容,也可以和xsl一起使用,对xml文档进行格式化
        xml控件支持四个属性,
            DocumentSource,指定了Xml文件的路径
            TransformSource,指定了XSL文件的路径
            Document,预装载的Xml文档
            Transform,预装载的XSL格式表(stylesheet)
    13.5 Using the XslTransform Class
        除了使用asp.net的xml控件以外,也可以使用XslTransform类来完成XML文档的转换工作
    13.6 Using Strongly Typed DataSets
        Strongly Typed DataSet,强类型化的数据集,原有的访问DataSet中的数据,都要操纵Tables、Rows和Columns,现在使用强类型化的数据集,使用属性、方法就可以了,可读性更高,但是未必就省多少事情
        创建一个强类型化的数据集,要完成几个步骤,
            创建一个XML schema,用于表示DataSet的结构,
            使用Xsd.exe命令行工具以及XMl schema产生表示DataSet的类的源代码
            编译源代码,把编译好的类放在bin目录下面
        其实创建一个XML Schema的时候,可以使用DataSet.GetXMLSchema()方法来获得,不必自己写,省掉很多的事情的

CHAPTER 14 Using ADO.NET to Create a Search Page
    14.1 Using SQL Server Full-Text Search
        这一节讲解了如何配置SQL Server 2000的全文检索服务
        然后说了一些如何写全文检索的SQL语法
        不多说了,用的时候看看就可以了
    14.2 Using the Microsoft Indexing Service
        这一节讲解了如何配置Windows的索引服务
        使用Connection连接所以服务new OleDbConnection( "Provider=MSIDXS;Data Source=Web")
        操作的SQL语法
        用的时候再说吧

相关文章: