版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ADO.NET基础基本ADO.NET类数据绑定数据访问ADO.NET基础数据访问1数据访问(1)数据访问就是对数据库中的数据进行CRUD操作:Create(创建)、Retrieve(检索)、Update(更新)和Delete(删除)。主流的数据访问技术根据开发平台的不同主要分为两个体系:微软体系和Java体系。微软体系ODBC(OpenDatabaseConnectivity):开放数据库互联DAO(DataAccessObjects):数据访问对象RDO(RemoteDataObject):远程数据对象OLEDB(ObjectLinkingandEmbeddingdatabase):对象链接和嵌入数据库ADO(ActiveXDataObjects):是一个用于存取数据源的COM组件ADO.NET:微软在.NET框架中提出的全新的数据访问模型LINQtoSQL和ADO.NETEF(EntityFramework):微软下一代基于ADO.NET之上构建的类似ORM技术的高层数据访问技术数据访问(1)数据访问就是对数据库中的数据进行CRUD操作:2数据访问(2)Java体系JDBC(JavaDatabaseConnectivity):Java数据库连接Hibernate:一个开源的数据访问ORM中间件JDO:Java数据对象(JDO)是一个存储Java对象的规范数据访问(2)Java体系3ADO与ADO.NET重点比较一下ADO和ADO.NET:ADO以Recordset存储,而ADO.NET则以DataSet表示。Recordset看起来更像单张数据表;而DataSet可以是多个表的集合。ADO的运作是在线方式,即不论是浏览还是更新数据都必须是实时的;而ADO.NET则使用离线方式,在访问数据的时候ADO.NET会导入并以XML格式维护数据的一份副本,ADO.NET的数据库连接也只有在这段时间需要在线。此外,由于ADO使用COM技术,这就要求所使用的数据类型必须符合COM规范,而ADO.NET基于XML格式,数据类型更为丰富并且不需要再做COM编排导致的数据类型转换,从而提高了整体性能。
ADO与ADO.NET重点比较一下ADO和ADO.NET:4ADO.NET基础Microsoft在开始设计.NET框架时,对于数据访问的技术,没有进一步扩展ADO,而是设计了一个新的数据访问框架ADO.NET,只是保留了ADO这个缩写词。ADO.NET相对ADO来说,具有如下3个方面的优点:(1)提供了断开的数据访问模型,这对Web环境至关重要。(2)提供了与XML的紧密集成。(3)提供了与.NET框架的无缝集成(例如,兼容基类库类型系统)。ADO.NET基础Microsoft在开始设计.NET框架时5ADO.NET的构架ConnectionTransactionCommandParametersDataReaderDataAdapterSelectCommandDataSetDataTableCollectionDataTableDataRowCollectionDataColumnCollectionConstraintCollectionDataRelationCollectionInsertCommandUpdataCommandDeleteCommand
.NETFrameworkDataProviderDatabaseXML.NET数据提供程序(.NETDataProvider)是一组用于访问特定数据库,执行SQL命令并获取值的ADO.NET类,是应用程序与数据源之间的一座桥梁。DataSet代表的是整个数据的集合,包括相关的表、约束和表之间的关系ADO.NET的构架ConnectionTransactio6.NET数据提供程序目前在.NET平台中包含如下.NET数据提供程序:SQLServer.NET数据提供程序。OLEDB.NET数据提供程序。ODBC.NET数据提供程序。Oracle.NET数据提供程序(需要Oracleclient的支持)。SQLite.NET数据提供程序(非官方,由提供)。PostgreSQL.NET数据提供程序(非官方,由/projects/npgsql提供)。MySQL.NET数据提供程序(非官方,由/mysqlnet提供)。.NET数据提供程序目前在.NET平台中包含如下.NET数据7ADO.NET基础基本ADO.NET类数据绑定数据访问ADO.NET基础数据访问8基本ADO.NET类ADO.NET有两种类型的对象:基于连接的和基于内容的。基于连接的对象。
它们是数据提供对象,如Connection、Command、DataAdapter和DataReader。它们执行SQL语句,连接到数据库,或者填充DataSet。基于连接的对象是针对具体数据源类型的,并且可以在提供程序指定的命名空间中(例如SQLServer提供程序的System.Data.SqlClient)找到。基于内容的对象。
这些对象其实是数据的“包”。包括DataSet、DataColumn、DataRow、DataRelation等。它们完全和数据源独立,出现在System.Data命名空间里。基本ADO.NET类ADO.NET有两种类型的对象:基于连接9Connection类Connection类用于和要交互的数据源建立连接。在执行任何操作前(包括读取、删除、新增或者更新数据)必须建立连接。需要注意的问题:连接字符串测试连接Connection类Connection类用于和要交互的数10连接字符串创建连接对象时,需要提供连接字符串。连接字符串包含基本信息:服务器位置要使用的数据库名称如何通过数据库验证。提供验证身份或者以当前用户登录。web.config文件的<connectionStrings>结点便于保存连接字符串。如下面这个示例所示:<configuration> <connectionStrings> <addname="Northwind"connectionString="server=localhost;database=Northwind;uid=sa;pwd=sa"/> </connectionStrings> …</configuration>连接字符串创建连接对象时,需要提供连接字符串。11测试连接选定连接字符串后,管理连接就很简单了,只需简单地使用Open()方法和Close()方法。//创建Connection对象stringconnectionString=ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString;SqlConnectioncon=newSqlConnection(connectionString);try{ con.Open();//打开连接
lblInfo.Text="<b>ServerVersion:</b>"+con.ServerVersion; lblInfo.Text+="<br/><b>Connectionis:</b>"+con.State.Tostring();}例子:测试连接选定连接字符串后,管理连接就很简单了,只需简单地使12catch(Exceptionerr){ //显示信息来处理错误
lblInfo.Text="Errorreadingthedatabase."+err.Message;}finally{ //不论采用哪种方法都要确保正确关闭连接,//即使连接没有成功打开,调用Close()方法也不会产生错误 con.Close(); lblInfo.Text+="<br/><b>NowConnectionIs:</b>"+con.State.ToString();}catch(Exceptionerr)13Command类Command类可以执行所有类型的SQL语句,一般被用来执行数据操作任务(如读或更新表中的记录)。Command对象常用的构造函数包括两个重要的参数:一个是要执行的SQL语句另一个是已建立的Connection对象例如,当使用MicrosoftSQLServer编程接口时:SqlCommandcmd=newSqlCommand("SELECT*FROMEmployees",con);con表示前面已创建的连接到数据库的Connection对象表示要执行的SQL语句Command类Command类可以执行所有类型的SQL语句14Command方法方法名描述ExecuteNonQuery()执行非SELECT语句,如插入、删除、更新等SQL语句。返回值显示命令影响的行数。ExecuteScalar()执行SELECT查询,并返回命令位于结果记录集第一行第一列的字段。ExecuteReader()执行SELECT语句,并返回一个仅向前的、只读的数据集DataReader对象,该对象连接到数据库的结果集上,并允许行检索。Command方法方法名描述ExecuteNonQ15DataReader类DataReader以仅向前、只读流的方式每次读取一条SELECT命令返回的记录,提供了最快捷且毫无拖沓的数据访问。方法名描述Read()将行游标前进到流的下一行。GetValue()用于指定列的整数索引,从当前行中以固定格式返回1个值或多个值GetValues()将当前行中的值保存到数组中。GetInt32()、GetChar()和GetDateTime()这些方法返回当前行中指定序号的字段值,返回值的类型和方法名称中的一致NextResult()如果命令返回的DataReader包含不只一个行集,该方法将游标移动到下一个行集Close()关闭Reader。并释放对行集的引用
DataReader方法DataReader类DataReader以仅向前、只读流16DataSet类DataSet是非连接数据访问的核心。
到目前为止,前面的示例都使用了ADO.NET基于连接的特性。采用这种方式时,只有数据读取后数据才会和数据源断开连接。代码需要负责追踪用户活动、保存信息并确定何时创建和执行新的命令。ADO.NET通过DataSet对象强调了另外一种完全不同的理念。连接数据库时,用从数据库中获得的信息的副本来填充DataSet。如果修改了DataSet中的信息,数据库中相应表的信息并不会随之改变。如果需要的话,还可以重新连接原来的数据源,通过一个批操作把DataSet中数据的修改应用到表中。DataSet类DataSet是非连接数据访问的核心。17DataSet与DataReader有些时候,DataSet比DataReader更便于使用,包括下面这些情形:需要在大量的数据中前后浏览。需要在不同的表间导航。需要通过用户界面控件绑定数据。需要以XML方式操作数据。需要通过Web服务提供批量更新。一般而言,在插入、删除和更新记录时不使用DataSet,但是并不能完全避免使用DataSet。由于这些原因,多数Web程序使用DataSet来检索信息,但使用直接的命令执行更新。DataSet与DataReader有些时候,DataSe18分解DataSetDataTableDataSet关系集合DataRelation表集合DataTable行集合DataRow子关系集合DataRelation列集合DataColumn约束集合Constraint父关系集合DataRelationDefaultViewDataSet包含两类最重要的元素:零个或多个表的集合(通过Tables属性提供)以及零个或多个关系的集合(通过Relation属性提供),关系可以把表连接到一起。分解DataSetDataTableDataSet关系集合19DataAdapter类DataAdapter是DataSet中的表和数据源间的桥梁。它含有查询和更新数据源所需的全部命令。它是提供程序相关的对象,因此每一个提供程序都有一个DataAdapter类(如SqlDataAdapter、OracleDataAdapter等)为了让DataAdapter能够编辑、删除或添加行,需要设定DataAdapter对象的InsertCommand、UpdateCommand和DeleteCommand属性。利用DataAdapter填充DataSet,必须设定SelectCommand。DataAdapter类DataAdapter是DataS20DataAdapter方法方法名描述Fill()执行SelectCommand中的查询后向DataSet添加一个DataTable。如果查询返回多个结果集,该方法将依次添加多个DataTable对象。还可以用该方法向现有的DataTable添加数据FillSchema()执行SelectCommand中的查询,但只获取架构信息,它向DataSet中添加一个DataTable。该方法并不往DataTable中添加任何数据。相反,它只利用列名、数据类型、主键和唯一约束等信息预配置DataTableUpdate()检查DataTable中的所有变化并执行适当的InsertCommand、UpdateCommand和DeleteCommand操作为数据源执行批量更新DataAdapter方法方法名描述Fill()执21【例3-1】填充DataSet示例【例3-2】使用多个表和关系【例3-3】查找特定的行【例3-1】填充DataSet示例【例3-2】使用多个表和22ADO.NET基础基本ADO.NET类数据绑定数据访问Connection类Command类和DataReader类DataSet类DataAdapter类ADO.NET基础数据访问Connection类23数据绑定(1)ASP.NET提供了一个丰富全能的数据绑定模型。数据绑定允许把获得的数据对象绑定到一个或多个Web控件上,接着它们将自动显示数据。数据绑定的关键特征是它是声明性的而不是编程性的。也就是说,在ASP.NET中利用数据源控件在页面和数据源间定义一个声明性的连接,一旦配置好数据源控件,就可以在设计时将它们“勾”到Web控件上,然后ASP.NET将会管理所有的数据绑定细节。配合数据绑定模型,ASP.NET提供了两组数据感知(data-aware)控件:数据绑定控件(data-boundcontrol)数据源控件(datasourcecontrol)数据绑定(1)ASP.NET提供了一个丰富全能的数据绑定模型24数据绑定(2)数据绑定控件(data-boundcontrol) 包含了可用于显示和编辑的数据绑定控件,如GridView、Repeater和新的ListView控件,可分为单值数据绑定和重复值绑定。数据源控件(datasourcecontrol) 用于从数据源(如数据库或XML文件)中检索数据,然后将这一数据提供给数据绑定控件。数据绑定(2)数据绑定控件(data-boundcontr25单值数据绑定(1)ASP.NET中的大部分Web控件(包括Textbox、LinkButton、Image以及其他很多控件)都支持单值数据绑定。支持单值数据绑定的控件允许使用数据绑定表达式绑定它们的部分属性。表达式在页面的.aspx标记部分输入(不是在后台代码中),并由<%#和%>分隔符包含。语法:
<%#数据绑定表达式%>页面运行时为了计算这样的数据绑定表达式,必须在代码中调用Page.DataBind()方法。如下所示:protectedvoidPage_Load(objectsender,EventArgse){ this.DataBind();}单值数据绑定(1)ASP.NET中的大部分Web控件(包括26单值数据绑定(2)单值数据绑定的源可以是属性的值、成员变量或函数的返回值。它还可以是其他运行时可计算的表达式,如对其他控件属性的引用,使用操作符和文本的计算或者其他。例如:<%#GetUserName()%><%#1+(2*20)%><%#"John"+"Smith"%><%#Request.Brower.Brower%>数据绑定表达式几乎可以放在页面的任何地方,通常在控件标签中把数据绑定表达式赋给属性。单值数据绑定(2)单值数据绑定的源可以是属性的值、成员变量或27单值数据绑定(3)下面是几个使用数据绑定表达式的例子:<html><body><formmethod="post"runat="server"> //绑定Label的Text属性
<asp:LabelID="label1"runat="server"Text='<%#FilePath%>'/><br/> //也可以直接将数据绑定表达式放到页面,不绑定到任何属性或特性 <b><%#FilePath%></b><br/> //绑定静态HTML的<img>标记的src特性 <imgsrc="<%#GetFilePath()%>"></form></body></html>
上面的例子中表达式引用了FilePath属性、GetFilePath()函数,因此还要在脚本块或代码隐藏类定义这些项目:单值数据绑定(3)下面是几个使用数据绑定表达式的例子:28单值数据绑定(4)protectedstringGetFilePath(){ return"apress.gif";}protectedstringFilePath{ get{return"apress.gif";}}单值数据绑定(4)protectedstringGe29重复值绑定重复值绑定可以一次把整整一个列表的信息绑定到控件上。ASP.NET带有几个支持重复值绑定的基本列表控件。所有用<select>标记呈现的控件,包括HtmlSelect、ListBox和DropDownList控件。CheckBoxList和RadioButtonList控件,它们的每个子项呈现为独立的复选框或单选按钮BulletedList控件,它创建一系列列表或编号。【例3-4】填充列表框示例
除了简单的列表控件外,ASP.NET还支持重复值绑定的富数据控件。富数据控件拥有同时显示数据项若干属性或字段的能力,一般基于表或用户定义的模板来布局,而且还支持一些更高层次的功能。重复值绑定重复值绑定可以一次把整整一个列表的信息绑定到控件30富数据控件GridView GridView是显示大型表数据的全能网络。支持选择、编辑、排序和分页。GridView是重型的ASP.NET控件,也是ASP.NET1.x中DataGrid的替代品。DetailsView DetailsView是每次显示一条记录的理想控件,它显示为一个表,每行对应一个字段。FormView 和DetailsView类似,每次显示一条记录。与DetailsView的差别在于它是基于模板的,这样它允许在更为灵活的布局中合并字段而不必依赖表格。ListView 基于模板的灵活控件,最好地组合了GridView、DataList和Repeater。类似于GridView,它支持数据编辑、删除和分页。像DataList那样,支持多列和多行布局,而且像Repeater那样允许完全控制控件生成的标记。ListView是ASP.NET3.5新增的富数据控件GridView31数据源控件ASP.NET2.0在ADO.NET的数据模型基础上进行了进一步的封装和抽象,提出了一个新概念“数据源控件”。数据源控件没有可视的外观,它们充当用户界面和数据库之间的桥梁,有大量不同的数据源控件,提供了对不同数据存储的访问。数据源控件可以完成两类任务:可以从数据源中读取数据并为关联的控件提供数据在关联的控件编辑数据后更新数据源数据源控件ASP.NET2.0在ADO.NET的数据模型32数据源控件的类型主要有以下几种:SqlDataSource。可以连接到任意拥有ADO.NET数据提供程序的数据源,包括SQLServer、Oracle以及OLEDB或者ODBC数据源。 ObjectDataSource。可以连接到自定义的数据访问对象。大型专业Web应用程序倾向使用此数据源控件。AccessDataSource。可以连接到Access数据库文件(.mdb)。XmlDataSource。可以连接到XML文件。SiteMapDataSource。可以连接到描述站点导航信息的web.sitemap文件。专门用于显示导航数据,它不支持排序、筛选、分页、缓存、更新、插入、删除等操作。数据源控件的类型主要有以下几种:33联合使用数据源和数据绑定控件用GridView显示和编辑数据DetailsView控件FormView控件联合使用数据源和数据绑定控件用GridView显示和编辑数34GridView控件GridView控件用于配合数据源控件实现对数据库进行浏览、编辑、删除等操作,但不支持插入记录。DetailsView和FormView支持插入记录,基本过程与GridView相同。【例3-5】创建一个能操作SQLServer数据库的ASP.NET应用程序,利用数据源控件SqlDataSource配合GridView控件实现数据浏览、编辑、删除操作。
GridView控件GridView控件用于配合数据源控件35DetailsView控件DetailsView被设计用于每次显示一个记录。它将每个信息段(一个字段或属性)放入到一个表的单独行中。DetailsView控件有3种模式,分别为只读、编辑和插入,支持删除、插入以及编辑操作。【例3-6】创建一个能操作SQLServer数据库的ASP.NET应用程序,利用数据源控件SqlDataSource配合DetailsView控件实现数据浏览、编辑、删除、插入操作。DetailsView控件DetailsView被设计用于36FormView控件FormView控件同DetailsView控件一样,一次显示一条记录。两种不同之处是FormView控件可为每个字段指定任意的显示控件,DetailsView采用表格布局,FormView可自定义布局。【例3-7】创建一个能操作SQLServer数据库的ASP.NET应用程序,利用数据源控件SqlDataSource配合FormView控件实现数据浏览、编辑、删除、插入操作。FormView控件FormView控件同DetailsV37ADO.NET基础基本ADO.NET类数据绑定数据访问单值绑定重复值绑定数据源控件联合使用数据源和数据绑定控件ADO.NET基础数据访问单值绑定38ADO.NET基础基本ADO.NET类数据绑定数据访问ADO.NET基础数据访问39数据访问(1)数据访问就是对数据库中的数据进行CRUD操作:Create(创建)、Retrieve(检索)、Update(更新)和Delete(删除)。主流的数据访问技术根据开发平台的不同主要分为两个体系:微软体系和Java体系。微软体系ODBC(OpenDatabaseConnectivity):开放数据库互联DAO(DataAccessObjects):数据访问对象RDO(RemoteDataObject):远程数据对象OLEDB(ObjectLinkingandEmbeddingdatabase):对象链接和嵌入数据库ADO(ActiveXDataObjects):是一个用于存取数据源的COM组件ADO.NET:微软在.NET框架中提出的全新的数据访问模型LINQtoSQL和ADO.NETEF(EntityFramework):微软下一代基于ADO.NET之上构建的类似ORM技术的高层数据访问技术数据访问(1)数据访问就是对数据库中的数据进行CRUD操作:40数据访问(2)Java体系JDBC(JavaDatabaseConnectivity):Java数据库连接Hibernate:一个开源的数据访问ORM中间件JDO:Java数据对象(JDO)是一个存储Java对象的规范数据访问(2)Java体系41ADO与ADO.NET重点比较一下ADO和ADO.NET:ADO以Recordset存储,而ADO.NET则以DataSet表示。Recordset看起来更像单张数据表;而DataSet可以是多个表的集合。ADO的运作是在线方式,即不论是浏览还是更新数据都必须是实时的;而ADO.NET则使用离线方式,在访问数据的时候ADO.NET会导入并以XML格式维护数据的一份副本,ADO.NET的数据库连接也只有在这段时间需要在线。此外,由于ADO使用COM技术,这就要求所使用的数据类型必须符合COM规范,而ADO.NET基于XML格式,数据类型更为丰富并且不需要再做COM编排导致的数据类型转换,从而提高了整体性能。
ADO与ADO.NET重点比较一下ADO和ADO.NET:42ADO.NET基础Microsoft在开始设计.NET框架时,对于数据访问的技术,没有进一步扩展ADO,而是设计了一个新的数据访问框架ADO.NET,只是保留了ADO这个缩写词。ADO.NET相对ADO来说,具有如下3个方面的优点:(1)提供了断开的数据访问模型,这对Web环境至关重要。(2)提供了与XML的紧密集成。(3)提供了与.NET框架的无缝集成(例如,兼容基类库类型系统)。ADO.NET基础Microsoft在开始设计.NET框架时43ADO.NET的构架ConnectionTransactionCommandParametersDataReaderDataAdapterSelectCommandDataSetDataTableCollectionDataTableDataRowCollectionDataColumnCollectionConstraintCollectionDataRelationCollectionInsertCommandUpdataCommandDeleteCommand
.NETFrameworkDataProviderDatabaseXML.NET数据提供程序(.NETDataProvider)是一组用于访问特定数据库,执行SQL命令并获取值的ADO.NET类,是应用程序与数据源之间的一座桥梁。DataSet代表的是整个数据的集合,包括相关的表、约束和表之间的关系ADO.NET的构架ConnectionTransactio44.NET数据提供程序目前在.NET平台中包含如下.NET数据提供程序:SQLServer.NET数据提供程序。OLEDB.NET数据提供程序。ODBC.NET数据提供程序。Oracle.NET数据提供程序(需要Oracleclient的支持)。SQLite.NET数据提供程序(非官方,由提供)。PostgreSQL.NET数据提供程序(非官方,由/projects/npgsql提供)。MySQL.NET数据提供程序(非官方,由/mysqlnet提供)。.NET数据提供程序目前在.NET平台中包含如下.NET数据45ADO.NET基础基本ADO.NET类数据绑定数据访问ADO.NET基础数据访问46基本ADO.NET类ADO.NET有两种类型的对象:基于连接的和基于内容的。基于连接的对象。
它们是数据提供对象,如Connection、Command、DataAdapter和DataReader。它们执行SQL语句,连接到数据库,或者填充DataSet。基于连接的对象是针对具体数据源类型的,并且可以在提供程序指定的命名空间中(例如SQLServer提供程序的System.Data.SqlClient)找到。基于内容的对象。
这些对象其实是数据的“包”。包括DataSet、DataColumn、DataRow、DataRelation等。它们完全和数据源独立,出现在System.Data命名空间里。基本ADO.NET类ADO.NET有两种类型的对象:基于连接47Connection类Connection类用于和要交互的数据源建立连接。在执行任何操作前(包括读取、删除、新增或者更新数据)必须建立连接。需要注意的问题:连接字符串测试连接Connection类Connection类用于和要交互的数48连接字符串创建连接对象时,需要提供连接字符串。连接字符串包含基本信息:服务器位置要使用的数据库名称如何通过数据库验证。提供验证身份或者以当前用户登录。web.config文件的<connectionStrings>结点便于保存连接字符串。如下面这个示例所示:<configuration> <connectionStrings> <addname="Northwind"connectionString="server=localhost;database=Northwind;uid=sa;pwd=sa"/> </connectionStrings> …</configuration>连接字符串创建连接对象时,需要提供连接字符串。49测试连接选定连接字符串后,管理连接就很简单了,只需简单地使用Open()方法和Close()方法。//创建Connection对象stringconnectionString=ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString;SqlConnectioncon=newSqlConnection(connectionString);try{ con.Open();//打开连接
lblInfo.Text="<b>ServerVersion:</b>"+con.ServerVersion; lblInfo.Text+="<br/><b>Connectionis:</b>"+con.State.Tostring();}例子:测试连接选定连接字符串后,管理连接就很简单了,只需简单地使50catch(Exceptionerr){ //显示信息来处理错误
lblInfo.Text="Errorreadingthedatabase."+err.Message;}finally{ //不论采用哪种方法都要确保正确关闭连接,//即使连接没有成功打开,调用Close()方法也不会产生错误 con.Close(); lblInfo.Text+="<br/><b>NowConnectionIs:</b>"+con.State.ToString();}catch(Exceptionerr)51Command类Command类可以执行所有类型的SQL语句,一般被用来执行数据操作任务(如读或更新表中的记录)。Command对象常用的构造函数包括两个重要的参数:一个是要执行的SQL语句另一个是已建立的Connection对象例如,当使用MicrosoftSQLServer编程接口时:SqlCommandcmd=newSqlCommand("SELECT*FROMEmployees",con);con表示前面已创建的连接到数据库的Connection对象表示要执行的SQL语句Command类Command类可以执行所有类型的SQL语句52Command方法方法名描述ExecuteNonQuery()执行非SELECT语句,如插入、删除、更新等SQL语句。返回值显示命令影响的行数。ExecuteScalar()执行SELECT查询,并返回命令位于结果记录集第一行第一列的字段。ExecuteReader()执行SELECT语句,并返回一个仅向前的、只读的数据集DataReader对象,该对象连接到数据库的结果集上,并允许行检索。Command方法方法名描述ExecuteNonQ53DataReader类DataReader以仅向前、只读流的方式每次读取一条SELECT命令返回的记录,提供了最快捷且毫无拖沓的数据访问。方法名描述Read()将行游标前进到流的下一行。GetValue()用于指定列的整数索引,从当前行中以固定格式返回1个值或多个值GetValues()将当前行中的值保存到数组中。GetInt32()、GetChar()和GetDateTime()这些方法返回当前行中指定序号的字段值,返回值的类型和方法名称中的一致NextResult()如果命令返回的DataReader包含不只一个行集,该方法将游标移动到下一个行集Close()关闭Reader。并释放对行集的引用
DataReader方法DataReader类DataReader以仅向前、只读流54DataSet类DataSet是非连接数据访问的核心。
到目前为止,前面的示例都使用了ADO.NET基于连接的特性。采用这种方式时,只有数据读取后数据才会和数据源断开连接。代码需要负责追踪用户活动、保存信息并确定何时创建和执行新的命令。ADO.NET通过DataSet对象强调了另外一种完全不同的理念。连接数据库时,用从数据库中获得的信息的副本来填充DataSet。如果修改了DataSet中的信息,数据库中相应表的信息并不会随之改变。如果需要的话,还可以重新连接原来的数据源,通过一个批操作把DataSet中数据的修改应用到表中。DataSet类DataSet是非连接数据访问的核心。55DataSet与DataReader有些时候,DataSet比DataReader更便于使用,包括下面这些情形:需要在大量的数据中前后浏览。需要在不同的表间导航。需要通过用户界面控件绑定数据。需要以XML方式操作数据。需要通过Web服务提供批量更新。一般而言,在插入、删除和更新记录时不使用DataSet,但是并不能完全避免使用DataSet。由于这些原因,多数Web程序使用DataSet来检索信息,但使用直接的命令执行更新。DataSet与DataReader有些时候,DataSe56分解DataSetDataTableDataSet关系集合DataRelation表集合DataTable行集合DataRow子关系集合DataRelation列集合DataColumn约束集合Constraint父关系集合DataRelationDefaultViewDataSet包含两类最重要的元素:零个或多个表的集合(通过Tables属性提供)以及零个或多个关系的集合(通过Relation属性提供),关系可以把表连接到一起。分解DataSetDataTableDataSet关系集合57DataAdapter类DataAdapter是DataSet中的表和数据源间的桥梁。它含有查询和更新数据源所需的全部命令。它是提供程序相关的对象,因此每一个提供程序都有一个DataAdapter类(如SqlDataAdapter、OracleDataAdapter等)为了让DataAdapter能够编辑、删除或添加行,需要设定DataAdapter对象的InsertCommand、UpdateCommand和DeleteCommand属性。利用DataAdapter填充DataSet,必须设定SelectCommand。DataAdapter类DataAdapter是DataS58DataAdapter方法方法名描述Fill()执行SelectCommand中的查询后向DataSet添加一个DataTable。如果查询返回多个结果集,该方法将依次添加多个DataTable对象。还可以用该方法向现有的DataTable添加数据FillSchema()执行SelectCommand中的查询,但只获取架构信息,它向DataSet中添加一个DataTable。该方法并不往DataTable中添加任何数据。相反,它只利用列名、数据类型、主键和唯一约束等信息预配置DataTableUpdate()检查DataTable中的所有变化并执行适当的InsertCommand、UpdateCommand和DeleteCommand操作为数据源执行批量更新DataAdapter方法方法名描述Fill()执59【例3-1】填充DataSet示例【例3-2】使用多个表和关系【例3-3】查找特定的行【例3-1】填充DataSet示例【例3-2】使用多个表和60ADO.NET基础基本ADO.NET类数据绑定数据访问Connection类Command类和DataReader类DataSet类DataAdapter类ADO.NET基础数据访问Connection类61数据绑定(1)ASP.NET提供了一个丰富全能的数据绑定模型。数据绑定允许把获得的数据对象绑定到一个或多个Web控件上,接着它们将自动显示数据。数据绑定的关键特征是它是声明性的而不是编程性的。也就是说,在ASP.NET中利用数据源控件在页面和数据源间定义一个声明性的连接,一旦配置好数据源控件,就可以在设计时将它们“勾”到Web控件上,然后ASP.NET将会管理所有的数据绑定细节。配合数据绑定模型,ASP.NET提供了两组数据感知(data-aware)控件:数据绑定控件(data-boundcontrol)数据源控件(datasourcecontrol)数据绑定(1)ASP.NET提供了一个丰富全能的数据绑定模型62数据绑定(2)数据绑定控件(data-boundcontrol) 包含了可用于显示和编辑的数据绑定控件,如GridView、Repeater和新的ListView控件,可分为单值数据绑定和重复值绑定。数据源控件(datasourcecontrol) 用于从数据源(如数据库或XML文件)中检索数据,然后将这一数据提供给数据绑定控件。数据绑定(2)数据绑定控件(data-boundcontr63单值数据绑定(1)ASP.NET中的大部分Web控件(包括Textbox、LinkButton、Image以及其他很多控件)都支持单值数据绑定。支持单值数据绑定的控件允许使用数据绑定表达式绑定它们的部分属性。表达式在页面的.aspx标记部分输入(不是在后台代码中),并由<%#和%>分隔符包含。语法:
<%#数据绑定表达式%>页面运行时为了计算这样的数据绑定表达式,必须在代码中调用Page.DataBind()方法。如下所示:protectedvoidPage_Load(objectsender,EventArgse){ this.DataBind();}单值数据绑定(1)ASP.NET中的大部分Web控件(包括64单值数据绑定(2)单值数据绑定的源可以是属性的值、成员变量或函数的返回值。它还可以是其他运行时可计算的表达式,如对其他控件属性的引用,使用操作符和文本的计算或者其他。例如:<%#GetUserName()%><%#1+(2*20)%><%#"John"+"Smith"%><%#Request.Brower.Brower%>数据绑定表达式几乎可以放在页面的任何地方,通常在控件标签中把数据绑定表达式赋给属性。单值数据绑定(2)单值数据绑定的源可以是属性的值、成员变量或65单值数据绑定(3)下面是几个使用数据绑定表达式的例子:<html><body><formmethod="post"runat="server"> //绑定Label的Text属性
<asp:LabelID="label1"runat="server"Text='<%#FilePath%>'/><br/> //也可以直接将数据绑定表达式放到页面,不绑定到任何属性或特性 <b><%#FilePath%></b><br/> //绑定静态HTML的<img>标记的src特性 <imgsrc="<%#GetFilePath()%>"></form></body></html>
上面的例子中表达式引用了FilePath属性、GetFilePath()函数,因此还要在脚本块或代码隐藏类定义这些项目:单值数据绑定(3)下面是几个使用数据绑定表达式的例子:66单值数据绑定(4)protectedstringGetFilePath(){ return"apress.gif";}protectedstringFilePath{ get{return"apress.gif";}}单值数据绑定(4)protectedstringGe67重复值绑定重复值绑定可以一次把整整一个列表的信息绑定到控件上。ASP.NET带有几个支持重复值绑定的基本列表控件。所有用<select>标记呈现的控件,包括HtmlSelect、ListBox和DropDownList控件。CheckBoxList和RadioButtonList控件,它们的每个子项呈现为独立的复选
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版房地产抵押回购交易合同范本3篇
- 二零二五年度预应力钢筋进出口代理合同3篇
- 室内设计公司2025年度市场推广合同2篇
- 二零二五年度船舶设备个人买卖合同2篇
- 二零二五年度高空作业安全责任免除服务合同3篇
- 二零二五版保姆雇佣合同与雇主合作共赢协议3篇
- 二零二五版抵债协议:债权债务清算与资产转让合同3篇
- 2025版超薄浮法玻璃出口贸易合同范本3篇
- 二零二五版建筑外墙防水涂料研发与销售合同3篇
- 二零二五版快递物流企业碳排放管理与减排协议合同3篇
- 【S洲际酒店婚礼策划方案设计6800字(论文)】
- 医养康养园项目商业计划书
- 《穿越迷宫》课件
- 《C语言从入门到精通》培训教程课件
- 2023年中国半导体行业薪酬及股权激励白皮书
- 2024年Minitab全面培训教程
- 社区电动车棚新(扩)建及修建充电车棚施工方案(纯方案-)
- 项目推进与成果交付情况总结与评估
- 铁路项目征地拆迁工作体会课件
- 医院死亡报告年终分析报告
- 建设用地报批服务投标方案(技术方案)
评论
0/150
提交评论