您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 第8章使用DataSet访问数据库.
第8章使用DataSet访问数据库《ASP.NET数据库网站设计教程(C#版)》配套教学资源本章内容:DataSet的基本构成,访问和填充DataSet,修改DataSet及数据更新。本章重点:DataSet的基本构成,常用子对象、属性和方法,使用DataSet与DataAdapter配合完成常规数据库操作。可以把数据集理解为内存中的一个临时数据库,它把应用程序需要的数据临时保存在内存中。由于这些数据都缓存在本地计算机中,因此不需要与数据库服务器一直保持连接。当应用程序需要数据时,直接从内存中的数据集中读取数据;也可以修改数据集中的数据,然后把数据集中修改后的数据写回数据库。8.1.1DataSet、DataAdapter和数据源之间的关系数据集不直接与数据库联系,数据集与数据库之间的联系是通过.NET数据提供程序来实现的,因此数据集是独立于任何数据库的。8.1DataSet的基本构成DataSet是实现ADO.NET断开式连接的核心,它通过DataAdapter从数据源获得数据后就断开与数据源之间的连接(这一点与前面介绍过的DataReader对象完全不同),此后应用程序所有对数据源的操作(定义约束和关系、添加、删除、修改、查询、排序、统计等)均转向DataSet。当所有这些操作完成后,可以通过DataAdapter提供的数据源更新方法将修改后的数据写入数据库。图8-1表示了DataSet、DataAdapter和数据源之间的关系,从图中可以看到DataSet对象并没有直接连接数据源,它与数据源之间的连接是通过DataAdapter对象来完成的。8.1.2DataSet的组成结构和工作过程1.DataSet的组成结构数据集的结构与数据库的结构相似,数据集中也包含多个数据表,这些表构成了一个数据表的集合(DataTableCollection),其中的每个数据表都是一个DataTable对象。每个数据表都是由列组成的,所有列构成了一个列集合(DataColumnCollection),其中的列称为数据列(DataColumn)。数据表中的数据记录是由行组成的,所有的行构成行集合(DataRowCollection),其中的行称为数据行(DataRow)。如图8-2所示,DataSet主要由DataTableCollection(数据表集合)、DataRelationCollection(数据关系集合)和ExtendedProperties对象组成。其中最基本,也是最常用的是DataTableCollection。8.1.3DataSet中的常用子对象在DataSet内部是一个或多个DataTable的集合。每个DataTable由DataColumn、DataRow和Constraint(约束)的集合以及DataRelation的集合组成。DataTable内部的DataRelation集合对应于父关系和子关系,二者建立了DataTable之间的连接。DataSet由大量相关的数据结构组成,其中最常用的有5个子对象,其名称及功能说明见表8-1。8.1.4DataSet对象常用属性和方法1.DataSet对象的常用属性DataSet对象的常用属性及说明见表8-2。2.DataSet对象的常用方法DataSet对象的常用方法,见表8-3。DataAdapter对象在物理数据库表和内存数据表(结果集)之间起着桥梁的作用。它通常与DataTable对象或DataSet对象配合来实现对数据库的操作。关于DataSet对象的概念及使用方法将在后续章节中介绍,这里主要介绍DataAdapter对象与DataTable对象配合使用的情况。8.2.1创建DataAdapter对象下面以创建SqlDataAdapter对象为例,介绍使用DataAdapter类的构造函数创建DataAdapter对象的方法。常用的创建SqlDataAdapter对象的语法格式如下:SqlDataAdapter对象名=newSqlDataAdapter(sqlString,conn);其中,sqlString为SELECT查询语句或SqlCommand对象,conn为SqlConnection对象。8.2DataAdapter对象8.2.2DataAdapter对象的属性和方法1.DataAdapter对象的常用属性DataAdapter对象的常用属性见表8-4。假设已创建了用于删除数据表记录的SQL语句strDel,并且已建立了与SQLServer数据库的连接对象conn,在程序中通过DataAdapter对象的DeleteCommand属性删除记录的代码如下:SqlCommanddelCmd=newSqlCommand(strDel,conn);//创建Command对象SqlDataAdapterda=newSqlDataAdapter();//创建DataAdapter对象conn.Open();da.DeleteCommand=delCmd;//设置DataAdapter对象的DeleteCommand属性da.DeleteCommand.ExecuteNonQuery();//执行DeleteCommand代表的SQL语句(删除记录)conn.Close();2.DataAdapter对象的常用方法DataAdapter对象的常用方法见表8-5。(1)填充数据集使用DataAdapter对象填充数据集的步骤如下。①创建数据库连接对象(Connection对象)。②定义从数据库查询数据用的SelectSQL语句。③利用①、②步中创建的Connection对象和SelectSQL语句,创建DataAdapter对象:SqlDataAdapterda=newSqlDataAdapter(SelectSQL语句,Connection对象);④调用DataAdapter对象的Fill()方法填充数据集,语法格式如下:数据适配器对象名.Fill(数据集对象名,数据表名称字符串);如果数据集中没有“数据表名称字符串”这个数据表,则调用Fill()方法后会创建该数据表。如果数据集中已经有这个数据表,则把现在查出的数据添加到该数据表中。(2)保存数据集中的数据就像查询数据需要使用查询命令一样,在更新数据时也需要有相关的命令。使用SqlCommandBuilder对象(构造SQL命令)可以自动生成需要的SQL命令。这样,把数据集中修改过的数据保存到数据库中,只需要以下两个步骤。①使用SqlCommandBuilder对象为DataAdapter对象自动生成更新命令,语法格式如下:SqlCommandBuilder对象名=newSqlCommandBuilder(数据适配器对象名);对象名:实例化一个SqlCommandBuilder类对象的名称。数据适配器对象名:已创建的数据适配器对象名。②调用DataAdapter对象的Update()方法更新数据库,语法格式如下:数据适配器对象名.Update(数据集对象名,数据表名称字符串)DataSet的基本工作过程为:首先完成与数据库的连接,DataSet在存放ASP.NET网站的服务器上为每个用户开辟一块内存,通过DataAdapter(数据适配器),将得到的数据填充到DataSet中,然后把DataSet中的数据发送给客户端。ASP.NET网站服务器中的DataSet使用完以后,将释放DataSet所占用的内存。客户端读入数据后,在内存中保存一份DataSet的副本,随后断开与数据库的连接。在这种方式下,应用程序所有针对数据库的操作都是指向DataSet的,并不会立即引起数据库的更新。待数据库操作完毕后,可通过DataSet、DataAdapter提供的方法将更新后的数据一次性保存到数据库中。8.3使用DataSet访问数据库8.3.1创建DataSet创建数据集对象的语法格式为:DataSet数据集对象名=newDataSet();或:DataSet数据集对象名=newDataSet(表名);前一个语法格式表示要先创建一个空数据集,以后再将已经建立的数据表(DataTable)包含进来;后一个语法格式是先建立数据表,然后建立包含该数据表的数据集。8.3.2填充DataSet所谓“填充”,是指将DataAdapter对象通过执行SQL语句从数据源得到的返回结果,使用DataAdapter对象的Fill方法传递给DataSet对象。其常用语法格式如下:Adapter.Fill(ds);或Adapter.Fill(ds,tablename);其中,Adapter为DataSetAdapter对象实例,ds为DataSet对象,tablename为用于数据表映射的源表名称。在第一种格式中仅实现了DataSet对象的填充,而第二种格式则实现了填充DataSet对象和指定一个可以引用的别名两项任务。需要说明的是,Fill方法的重载方式(语法格式)有很多种(共有13种),上面介绍的仅是最常用的两种,读者可查阅MSDN来了解其他重载方式。填充DataSet的一般方法和步骤如下。①使用Connection对象建立与数据库的连接:SqlConnectionconn=newSqlConnection();//创建SQLServer连接对象这里不需要建立Command对象。②创建DataAdapter对象:SqlDataAdapterda=newSqlDataAdapter();//创建空的DataAdapter对象③创建从数据库查询数据用的SelectSQL语句:stringSelectSql=select*fromUserInfo;④设置DataAdapter对象的SelectCommand属性,使用conn指定连接,执行SelectSql指定的SQL语句,从数据库中取出需要的数据。代码如下:da.SelectCommand=newSqlCommand(SelectSql,conn);⑤创建一个空DataSet对象:DataSetds=newDataSet();⑥使用DataAdapter对象的Fill方法填充DataSet:da.Fill(ds);//将DataAdapter执行SQL语句返回的结果填充到DataSet对象⑦为GridView控件设置数据源,并绑定,以便在GridView控件中显示DataSet中的数据。【演练8-1】使用DataSet对象浏览SQLServer数据库UserManagement中UserInfo表中所有记录并显示到GridView控件中。运行结果如图8-3所示。(1)新建网站新建一个空网站,如C:\ex8_1。(2)在Web配置文件中添加连接字符串在web.config文件中添加连接字符串。连接到SQLServer服务器名为“PC\SQL2008”,数据库名为UserManagement,采用信任连接,连接字符串为:connectionStringsaddname=ConnStrconnectionString=DataSource=PC\SQL2008;InitialCatalog=UserManagement;IntegratedSecurity=trueproviderName=System.Data.SqlClient//connectionStrings注意,要把代码中的“PC\SQL2008”更换成用户自己的SQLServer服务器名。(3)设计Default.aspx窗体①添加Web窗体Default.aspx。在Default.aspx窗体中,从工具箱的数据组中添加一个GridView控件。②在Default.aspx.cs中编写事件代码。在Default.aspx.cs
本文标题:第8章使用DataSet访问数据库.
链接地址:https://www.777doc.com/doc-2112596 .html