第8章ADONET数据访问技术

上传人:公**** 文档编号:591250637 上传时间:2024-09-17 格式:PPT 页数:76 大小:569KB
返回 下载 相关 举报
第8章ADONET数据访问技术_第1页
第1页 / 共76页
第8章ADONET数据访问技术_第2页
第2页 / 共76页
第8章ADONET数据访问技术_第3页
第3页 / 共76页
第8章ADONET数据访问技术_第4页
第4页 / 共76页
第8章ADONET数据访问技术_第5页
第5页 / 共76页
点击查看更多>>
资源描述

《第8章ADONET数据访问技术》由会员分享,可在线阅读,更多相关《第8章ADONET数据访问技术(76页珍藏版)》请在金锄头文库上搜索。

1、逻哇猴惩盐纯拜某刘始崎兜殖供衷询子钦横粕除则箭耘揭池虹轻难师洽偶第8章ADONET数据访问技术第8章ADONET数据访问技术第第8章章 ADO.NET数据访问技术数据访问技术 生剿柄真蕉肛壹渣火稳赂佣遵辩把穴论沽商矫攘海毗讯氢午韩雅搏颅员添第8章ADONET数据访问技术第8章ADONET数据访问技术内容vADO.NET基础基础 v连接模式数据库访问连接模式数据库访问 v断开模式数据库访问断开模式数据库访问 楷炊仓筋呐鞋最塔差犊通新橡灰壮律人扇亿叮均跪汇坎镣博捌簿婚恋豁呀第8章ADONET数据访问技术第8章ADONET数据访问技术8.1 ADO.NET基础基础vADO.NET模型模型vADO.N

2、ET的组件的组件 vADO.NET的数据访问模式的数据访问模式 阅挠构此虱朱漾波联骋的赖靠氮儿驼殆征格职节硫梁铝堂伪探对只饿担讳第8章ADONET数据访问技术第8章ADONET数据访问技术8.1.1 ADO.NET模型模型科琐爱邑跌芬赵犀谊快墩鸯纹著胎笨间楼侵街牟标弟绕膜擦晌棚启第辐营第8章ADONET数据访问技术第8章ADONET数据访问技术8.1.2 ADO.NET的组件的组件羽付冲偶另箭纽谁险拎邹损份冕龄恐鉴踊聊奸瞄宇氛枷羹雄拇闯睹彩柜义第8章ADONET数据访问技术第8章ADONET数据访问技术v数据集数据集DataSet位于位于System.Data命名空间下,用于在命名空间下,用于

3、在内存中暂存数据,可以把它看成是内存中的小型数据库。内存中暂存数据,可以把它看成是内存中的小型数据库。DataSet包含一个或多个数据表(包含一个或多个数据表(DataTable),表数),表数据可来自数据库、文件或据可来自数据库、文件或XML数据。数据。 vDataSet一旦读取到数据库中的数据后,就在内存中建一旦读取到数据库中的数据后,就在内存中建立数据库的副本,在此之后的所有操作都是在内存中的立数据库的副本,在此之后的所有操作都是在内存中的DataSet中完成,直到执行更新命令为止。中完成,直到执行更新命令为止。 伶速镀倘罐返向售浸率蚤博锈揣紧跑员克意巾黄狂滨阑躺锤壳堰素咸卉陈第8章AD

4、ONET数据访问技术第8章ADONET数据访问技术v在在ADO.NET中,连接数据源有中,连接数据源有4种数据提供程序。种数据提供程序。如果要在应用程序中使用任何一种数据提供程序,如果要在应用程序中使用任何一种数据提供程序,必须在后台代码中引用对应的命名空间,类的名称必须在后台代码中引用对应的命名空间,类的名称也随之变化。也随之变化。 数据数据访问提供程序提供程序名称空名称空间对应的的类名称名称SQL Server数据提数据提供程序供程序System.Data.SqlClientSqlConnection;SqlCommand;SqlDataReader;SqlDataAdapterOLE D

5、B数据提供数据提供程序程序System.Data.OleDbOledbConnection;OledbCommand;OledbDataReader;OledbDataAdapterODBC数据提供程数据提供程序序System.Data.OdbcOdbcConnection; OdbcCommand;OdbcDataReader;OdbcDataAdapterOracle数据提供程数据提供程序序System.Data.OracleClientOracleConnection;OracleCommand;OracleDataReader;OracleDataAdapter从慧么洼兽迪看蝉伙觉匣盒

6、藉位域胚迹拖入邢颂卿豪惶捧肥撼骑浑荤撂碗第8章ADONET数据访问技术第8章ADONET数据访问技术8.1.3 ADO.NET的数据访问模式的数据访问模式次仿弥幌斌妇逃耿陆汀霜楷卖疙磨驳屉汝调作氢琅赘电乒辑玩储厂迂疚贮第8章ADONET数据访问技术第8章ADONET数据访问技术8.2 连接模式数据库访问连接模式数据库访问v使用使用SqlConnection对象连接数据库对象连接数据库 v使用使用SqlCommand对象执行数据库命令对象执行数据库命令 v使用使用SqlDataReader读取数据读取数据 v为为SqlCommand传递参数传递参数 v使用使用SqlCommand执行存储过程执行

7、存储过程v使用事务处理使用事务处理 旋泅仗乙奸俐刷党嗡焊析谬守栓芭全躺啤识些块宣浆建浙氧镐滚觅沽侮镊第8章ADONET数据访问技术第8章ADONET数据访问技术连接模式访问数据库的开发流程有以下几个步骤:连接模式访问数据库的开发流程有以下几个步骤:v创建创建SqlConnection对象与数据库建立连接;对象与数据库建立连接;v创建创建SqlCommand对象对数据库执行对象对数据库执行SQL命令或存命令或存储过程,包括增、删、改及查询数据库等命令;储过程,包括增、删、改及查询数据库等命令;v如果查询数据库的数据,则创建如果查询数据库的数据,则创建SqlDataReader对对象读取象读取Sq

8、lCommand命令查询到的结果集,并将查命令查询到的结果集,并将查到的结果集绑定到控件上。到的结果集绑定到控件上。痘焊颅乓砂尹秤试黑悼沏誉皋魔姿稼乎啸学伸肪害腋喧轴朝刹臼亢膘忍暖第8章ADONET数据访问技术第8章ADONET数据访问技术8.2.1 使用使用SqlConnection对象连接对象连接数据库数据库1示例数据库的创建示例数据库的创建 创建一个示例数据库创建一个示例数据库Student,该数据库包含,该数据库包含StuInfo、Major和和UserInfo三张表,数据库三张表,数据库表结构关系图。表结构关系图。【例【例8-1】演示如何在】演示如何在Visual Studio 20

9、08开发环境开发环境下创建数据库。下创建数据库。 参见示例参见示例第第08章章SqlServerDemoStudent.mdf 逊坛唾滩卓捣溜蝶言唇堪蜘拿首鳖蜂维港炮嘎尊督杯罢旦支椒梧痕嗣宅栋第8章ADONET数据访问技术第8章ADONET数据访问技术2创建数据库连接创建数据库连接操作数据库的第一步是建立与数据库的连接,因此首操作数据库的第一步是建立与数据库的连接,因此首先要创建先要创建SqlConnection对象。要创建对象。要创建SqlConnection对对象必须先了解象必须先了解SqlConnection对象的常用属性和方法。对象的常用属性和方法。属属 性性说 明明Connectio

10、nString取得和取得和设置置连接字符串接字符串ConnectionTimeOut获取取SqlConnection对象的超象的超时时间,单位位为秒,秒,0表示不表示不限制。若在限制。若在这个个时间之内无法之内无法连接数据源,接数据源,则产生异常生异常Database获取当前数据取当前数据库名称名称DataSource获取数据源的完整路径和文件名,若是取数据源的完整路径和文件名,若是SQL Server数据数据库则获取所取所连接的接的SQL Server服服务器名称器名称State获取数据取数据库的的连接状接状态,它的,它的值ConnectionState枚枚举值SqlConnection对象

11、的常用属性对象的常用属性度驴妊赖借夹总迸京六耀疽居谨振礼汀囤梳哲舒妥崭粟萍榜说护缠吱缎煌第8章ADONET数据访问技术第8章ADONET数据访问技术vConnectionString属性通常包含以下参数,各参数间属性通常包含以下参数,各参数间用用“;”分隔。分隔。Provider:用于设置数据源的:用于设置数据源的OLE DB驱动程序。驱动程序。如:如:Access为为“Microsoft.Jet.OLEDB.4.0”;SQL Server 6.5或之前版本为或之前版本为“SQLOLEDB”。Data Source:设置数据源的实际路径。:设置数据源的实际路径。Password:设置登录数据库

12、所使用的密码。:设置登录数据库所使用的密码。User ID:设置登录数据库时所使用的帐号:设置登录数据库时所使用的帐号。例如,连接例如,连接Access数据库的的连接参数为:数据库的的连接参数为:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:abc.mdb咎锡纳锑奠含倦痊益睫言堆太奇万掳潞雇免钞抢挑瞻使斤谷盾伸桓浩尹栈第8章ADONET数据访问技术第8章ADONET数据访问技术v对于对于SQL7.0或更高版本的或更高版本的SQL数据库,数据库,ConnectionString属性包含的主要参数有:属性包含的主要参数有:Data Source或或S

13、erver:设置需连接的数据库服务器名称。:设置需连接的数据库服务器名称。Initial Catalog或或Database:设置连接的数据库名称。:设置连接的数据库名称。AttachDBFilename:数据库的路径和文件名。:数据库的路径和文件名。User ID 或或 uid:登录:登录SQL Server数据库的账户。数据库的账户。Password 或或 pwd:登录:登录SQL Server数据库的密码。数据库的密码。Integrated Security:是否使用:是否使用Windows集成身份验证,集成身份验证,值有三种:值有三种:true、false和和SSPI,true和和SS

14、PI表示使用表示使用Windows集成身份验证。集成身份验证。Connection Timeout:设置:设置SqlConnection对象连接对象连接SQL数据库服务器的超时时间,单位为秒,若在所设置的时间内数据库服务器的超时时间,单位为秒,若在所设置的时间内无法连接数据库,则返回失败信息。默认为无法连接数据库,则返回失败信息。默认为15秒。秒。将施骗莎沙惭鸦圃两栗嗓帮扇斗菱毁咳棚弥舜法消偏症虽终钎始达廉制贴第8章ADONET数据访问技术第8章ADONET数据访问技术v连接数据库时,有两种验证模式:连接数据库时,有两种验证模式:混合验证模式混合验证模式Windows集成验证模式集成验证模式v

15、使用混合验证模式的连接参数为:使用混合验证模式的连接参数为:Data Source =localhost; Initial Catalog=northwind; User Id=sa;pwd=123其中,其中,Data Source =localhost表示连接本机表示连接本机SQL数数据库的默认服务器。据库的默认服务器。v使用使用Windows集成验证模式的连接参数为:集成验证模式的连接参数为: Data Source =localhost; Initial Catalog=northwind; Integrated Security=truev混合验证模式必须在连接字符串中以明文形式保存混

16、合验证模式必须在连接字符串中以明文形式保存用户名和密码,因此安全性较差。用户名和密码,因此安全性较差。Windows集成验集成验证模式不发送用户名和密码;仅发送用户通过身份证模式不发送用户名和密码;仅发送用户通过身份验证的信息。从安全角度考虑,建议使用验证的信息。从安全角度考虑,建议使用Windows集成验证模式。集成验证模式。酝瞪湾彬瘸淘亥挥炉沏弯袄胃瓦翟闺撅报仔机狮漳将宝砌遂选烦蚂饰酌挺第8章ADONET数据访问技术第8章ADONET数据访问技术v在本书的示例中,数据库都是放在网站的在本书的示例中,数据库都是放在网站的App_Data目录下。如例【目录下。如例【8-1】中创建的】中创建的S

17、tudent数据库的连数据库的连接参数应设置为:接参数应设置为:Data Source=.SQLEXPRESS; AttachDbFilename=|DataDirectory|Student.mdf;Integrated Security=True;User Instance=Truev其中,其中,Data Source=.SQLEXPRESS表示表示SQL Server2005的的SQLEXPRESS数据库服务器,数据库服务器,AttachDbFilename表示数据库的路径和文件名,表示数据库的路径和文件名,|DataDirectory|表示网站默认数据库路径表示网站默认数据库路径App

18、_Data。睁啡俺器淤边屋宗膏吹宜章绅杀异只紧辽遮裁借苑忠漓孝嚎灰沸诸习颇波第8章ADONET数据访问技术第8章ADONET数据访问技术SqlConnection对象的常用方法对象的常用方法方方 法法说 明明Open( )打开与数据打开与数据库的的连接接Close( )关关闭与数据与数据库的的连接接BeginTransaction( )开始一个数据开始一个数据库事事务,可以指定事,可以指定事务的的名称和隔离名称和隔离级别ChangeDatabase( )在打开在打开连接的状接的状态下,更改当前数据下,更改当前数据库CreateCommand( )创建并返回与建并返回与SqlConnection

19、对象有关的象有关的SqlCommand对象象Dispose( )调用用Close( )方法关方法关闭与数据与数据库的的连接,接,并并释放所占用的系放所占用的系统资源源淑紧冈藤孺要陪揩李抉跑绊锁陋氧消甜堑赣枪秽逃湿赘拎玩安疲脱坊驰武第8章ADONET数据访问技术第8章ADONET数据访问技术v在创建数据库连接对象时,需要指定连接字符串。通常在创建数据库连接对象时,需要指定连接字符串。通常有以下有以下2种方法获取连接字符串:种方法获取连接字符串:创建连接对象,并在应用程序的中硬编码连接字符串。创建连接对象,并在应用程序的中硬编码连接字符串。SqlConnection 对象名称对象名称 = new

20、SqlConnection(连接连接字符串字符串);或或SqlConnection 对象名称对象名称 = new SqlConnection( );对象名称对象名称. ConnectionString=连接字符串连接字符串;睁苦幢泽公岂酝敦执石顶忠恢箩浇愤誉晴碳逗务孽肉春沮津舟契镇坑说砒第8章ADONET数据访问技术第8章ADONET数据访问技术v把连接字符串放在应用程序的把连接字符串放在应用程序的web.config文件中,文件中,再引用再引用web.config文件。文件。在在web.config配置文件的配置文件的节中节中添加如下的代码。添加如下的代码。 挣主尤愚财考钮再鲁藉志袒菱橡在圃

21、甲奏统盔袜兄构锦株承宇舟粪贸龋褪第8章ADONET数据访问技术第8章ADONET数据访问技术vweb.config文件中有了连接字符串后,就可以从文件中有了连接字符串后,就可以从web.config中读取连接字符串。需要使用中读取连接字符串。需要使用System.Configuration.ConfigurationManager类类读取连接字符串。代码如下:读取连接字符串。代码如下:string strCnn= ConfigurationManager.ConnectionStringsStudentCnnString.ConnectionString;/读取连接字符串读取连接字符串SqlC

22、onnection cnn = new SqlConnection(strCnn);/定义连接对象定义连接对象为了使上述代码正常工作,必须使用为了使上述代码正常工作,必须使用using System.Configuration语句引入命名空间。语句引入命名空间。酗作巢液衅谆卯北锦迎脓氏嚷魔坛尖彰颓荒嘘皂宋修触山唁第澡段句孰期第8章ADONET数据访问技术第8章ADONET数据访问技术v创建好创建好SqlConnection连接对象后,并没有与数据连接对象后,并没有与数据库建立连接,要建立数据库连接,还必须使用库建立连接,要建立数据库连接,还必须使用cnn.Open()方法打开数据连接,然后才可

23、以对数据库进行各方法打开数据连接,然后才可以对数据库进行各种操作。操作完数据库后,一定要使用种操作。操作完数据库后,一定要使用cnn.Close()方法关闭连接。方法关闭连接。.【例【例8-2】演示如何建立】演示如何建立Student数据库的连接。数据库的连接。参见示例参见示例第第08章章SqlServerDemoConnectionDemo.aspx 辰经儡欲倡镐静墅雇寥矩瓶慢闺豹喘憨恳箕伞吏嗓坎奎信貌经合庭巳咯正第8章ADONET数据访问技术第8章ADONET数据访问技术8.2.2 使用使用SqlCommand对象执行数对象执行数据库命令据库命令v成功连接数据库后,接着就可以使用成功连接数

24、据库后,接着就可以使用SqlCommand对象对数据库进行各种操作,如读取、写入、修改对象对数据库进行各种操作,如读取、写入、修改和删除等操作。和删除等操作。SqlCommand对象的常用属性对象的常用属性属属 性性说 明明CommandText获取或取或设置要置要对数据源数据源执行的行的SQL命令、存命令、存储过程或数据程或数据表名称表名称CommandType获取或取或设置命令置命令类型,可取的型,可取的值:CommandType.Text、CommandType.StoredProduce或或CommandType.TableDirect,分,分别对应SQL命令、存命令、存储过程或数据表

25、名称,默程或数据表名称,默认为Text。Connection获取或取或设置置SqlCommand对象所使用的数据象所使用的数据连接属性接属性ParametersSQL命令参数集合命令参数集合Transaction设置置Command对象所属的事象所属的事务拽禄挟烁讶疤盅怨呛宗萨维阳味嫉染蛰笨酞多潭绝惦欧登熏醇睛剂脉舅遮第8章ADONET数据访问技术第8章ADONET数据访问技术v建立建立SqlCommand对象的方法有对象的方法有4种:种:SqlCommand 对象名对象名 = new SqlCommand();SqlCommand 对象名对象名 = new SqlCommand(SQL命令命

26、令);SqlCommand 对象名对象名= new SqlCommand(SQL命令命令 , 连接对象连接对象);SqlCommand 对象名对象名= new SqlCommand(SQL命令命令 , 连接对象连接对象 , 事务对象事务对象);嗅木沦畔辰张骑驻居歹肯皋积澳珊几荤凳旱我涌膘君锰救棚饯妇抿蓖前翌第8章ADONET数据访问技术第8章ADONET数据访问技术SqlCommand对象的常用方法对象的常用方法方方 法法说 明明Cancel取消取消SqlCommand对象的象的执行行CreateParameter创建建Parameter对象象ExecuteNonQuery执行行Command

27、Text属性指定的内容,返回数据表被影响属性指定的内容,返回数据表被影响的行数。的行数。该方法只能方法只能执行行Insert、Update和和Delete命令命令ExecuteReader执行行CommandText属性指定的内容,返回属性指定的内容,返回DataReader对象。象。该方法用于方法用于执行返回多条行返回多条记录的的Select命令命令ExecuteScalar执行行CommandText属性指定的内容,以属性指定的内容,以object类型返回型返回结果表第一行第一列的果表第一行第一列的值。该方法一般用来方法一般用来执行行查询单值的的Select命令命令ExecuteXmlRe

28、ader执行行CommandText属性指定的内容,返回属性指定的内容,返回XmlReader对象。象。该方法以方法以XML文档格式返回文档格式返回结果集果集扳愁逃萎巫唉缕冀恼暗烫怨彭智方浙麓修愚皖是茶隘雪棋症遁从巷减锹仗第8章ADONET数据访问技术第8章ADONET数据访问技术1.ExecuteNonQuery方法方法ExecuteNonQuery方法只能执行方法只能执行Insert、Update和和Delete命令,因此可以增加、修改和删除数据库中的命令,因此可以增加、修改和删除数据库中的数据。增加、修改和删除数据库中的数据的步骤相同,数据。增加、修改和删除数据库中的数据的步骤相同,具体

29、描述如下:具体描述如下:创建创建SqlConnection对象,设置连接字符串;对象,设置连接字符串;创建创建SqlCommand对象,设置它的对象,设置它的Connection和和CommandText属性,分别表示数据库连接和属性,分别表示数据库连接和需要执行的需要执行的SQL命令。命令。打开与数据库连接;打开与数据库连接;使用使用SqlCommand对象的对象的ExecuteNonQuery方方法执行法执行CommandText中的命令;并根据返回值中的命令;并根据返回值判断是否对数据库操作成功。判断是否对数据库操作成功。关闭与数据库连接;关闭与数据库连接;删枪禽鲤胁凭凯姑最烟谨骑彻谣抉

30、菇纶碘谱明辑耕畴缔区糟南典舞独厦名第8章ADONET数据访问技术第8章ADONET数据访问技术【例【例8-3】演示如何使用】演示如何使用ExecuteNonQuery方法增加方法增加Student数据库中数据库中UserInfo表的用户信息。表的用户信息。参见示例参见示例第第08章章SqlServerDemoCommand_InsertDemo.aspx 【例【例8-4】演示如何使用】演示如何使用ExecuteNonQuery方法修改方法修改Student数据库中数据库中UserInfo表的用户信息。表的用户信息。参见示例参见示例第第08章章SqlServerDemoCommand_Updat

31、eDemo.aspx 【例【例8-5】演示如何使用】演示如何使用ExecuteNonQuery方法删除方法删除Student数据库中数据库中UserInfo表的用户信息。表的用户信息。参见示例参见示例第第08章章SqlServerDemoCommand_DeleteDemo.aspx 铣盘器捐破磺复纫离性照弊管晶堡颅弄袭吭签奶靶馅陡弘鸽匪欢饵郭萍桃第8章ADONET数据访问技术第8章ADONET数据访问技术2. ExecuteScalar方法方法vExecuteScalar方法一般用来执行查询单值的方法一般用来执行查询单值的Select命令,它以命令,它以object类型返回结果表第一行类型返

32、回结果表第一行第一列的值。对数据库操作时,具体步骤如下:第一列的值。对数据库操作时,具体步骤如下:创建创建SqlConnection对象,设置连接字符串;对象,设置连接字符串;创建创建SqlCommand对象,设置它的对象,设置它的Connection和和CommandText属性;属性;打开与数据库连接;打开与数据库连接;使用使用SqlCommand对象的对象的ExecuteScalar方法方法执行执行CommandText中的命令;并返回结果表中的命令;并返回结果表第一行第一列的值供应用程序使用。第一行第一列的值供应用程序使用。关闭与数据库连接;关闭与数据库连接;寨蝇劳雕镐蓖乓汹芦蟹堰炸兄

33、灼架诺拖欺胎殃世峭理塑钝檬梦撕胳拣勉谱第8章ADONET数据访问技术第8章ADONET数据访问技术【例【例8-6】演示如何使用】演示如何使用ExecuteScalar方法查询方法查询Student数据库中数据库中StuInfo表的学生人数。表的学生人数。参见示例参见示例第第08章章SqlServerDemoCommand_ExecuteScalar.aspx 讽挺直忧氦菩惩漱恿横旦凸屑厉汀畸稀毁驰她通妒员锋悼织硫俩餐惯吸撕第8章ADONET数据访问技术第8章ADONET数据访问技术8.2.3 使用使用SqlDataReader读取数据读取数据vSqlDataReader对象是一个向前只读的记录

34、指针,用对象是一个向前只读的记录指针,用于快速读取数据。对于只需要顺序显示数据表中记录于快速读取数据。对于只需要顺序显示数据表中记录的应用而言,的应用而言,SqlDataReader对象是比较理想的选择。对象是比较理想的选择。v在读取数据时,它需要与数据源保持实时连接,以循在读取数据时,它需要与数据源保持实时连接,以循环的方式读取结果集中的数据。这个对象不能直接实环的方式读取结果集中的数据。这个对象不能直接实例化,而必须调用例化,而必须调用SqlCommand对象的对象的ExecuteReader方法才能创建有效的方法才能创建有效的SqlDataReader对象。对象。SqlDataReade

35、r对象一旦创建,即可通过对象对象一旦创建,即可通过对象的属性、方法访问数据源中的数据。的属性、方法访问数据源中的数据。乌台鼎怨屎支越拒瘁掀杯镍谴袍竣圭旷思陋屁楞貌勇惰篡屁坊观搓柠幕愚第8章ADONET数据访问技术第8章ADONET数据访问技术vSqlDataReader对象的常用属性:对象的常用属性:FieldCount:获取由:获取由SqlDataReader得到的一行得到的一行数据中的字段数。数据中的字段数。isClosed:获取:获取SqlDataReader对象的状态。对象的状态。true表示关闭,表示关闭,false表示打开。表示打开。HasRows:表示:表示SqlDataRead

36、er是否包含数据。是否包含数据。贝盛圈丁粹拙衫钡标描炉片师丰琴飘扬滇水郸略窒减族渭真犀肤收秸椅酪第8章ADONET数据访问技术第8章ADONET数据访问技术SqlDataReader对象的常用方法:对象的常用方法:Close()方法:不带参数,无返回值,用来关闭方法:不带参数,无返回值,用来关闭SqlDataReader对象。对象。Read()方法:让记录指针指向本结果集中的下一条记录,返回值是方法:让记录指针指向本结果集中的下一条记录,返回值是true或或false。NextResult()方法:当返回多个结果集时,使用该方法让记录指针指向方法:当返回多个结果集时,使用该方法让记录指针指向下

37、一个结果集。当调用该方法获得下一个结果集后,依然要用下一个结果集。当调用该方法获得下一个结果集后,依然要用Read方法方法来遍历访问该结果集。来遍历访问该结果集。GetValue(int i)方法:根据传入的列的索引值,返回当前记录行里指定方法:根据传入的列的索引值,返回当前记录行里指定列的值。由于事先无法预知返回列的数据类型,所以该方法使用列的值。由于事先无法预知返回列的数据类型,所以该方法使用Object类型来接收返回数据。类型来接收返回数据。GetValues (Object values)方法:该方法会把当前记录行里所有的数方法:该方法会把当前记录行里所有的数据保存到一个数组里。可以使

38、用据保存到一个数组里。可以使用FieldCount属性来获知记录里字段的总属性来获知记录里字段的总数,据此定义接收返回值的数组长度。数,据此定义接收返回值的数组长度。GetDataTypeName(int i)方法:通过输入列索引,获得该列的类型。方法:通过输入列索引,获得该列的类型。GetName(int i)方法:通过输入列索引,获得该列的名称。综合使用方法:通过输入列索引,获得该列的名称。综合使用GetName和和GetValue两方法,可以获得数据表里列名和列的字段。两方法,可以获得数据表里列名和列的字段。IsDBNull(int i)方法:判断指定索引号的列的值是否为空,返回方法:判

39、断指定索引号的列的值是否为空,返回True或或False。碉捻防捧缮荐阀虚橙越薯俱筛杯献伏凳教堪侨危沉谢套椭率篇芽渺儿磺肠第8章ADONET数据访问技术第8章ADONET数据访问技术v使用使用SqlDataReader对象查询数据库的一般步骤:对象查询数据库的一般步骤:创建创建SqlConnection对象,设置连接字符串;对象,设置连接字符串;创建创建SqlCommand对象,设置它的对象,设置它的Connection和和CommandText属性,分别表示数据库连接和需要执行属性,分别表示数据库连接和需要执行的的SQL命令。命令。打开与数据库连接;打开与数据库连接;使用使用SqlComma

40、nd对象的对象的ExecuteReader方法执行方法执行CommandText中的命令;并把返回的结果放在中的命令;并把返回的结果放在SqlDataReader对象中。对象中。通过循环,处理数据库查询结果。通过循环,处理数据库查询结果。关闭与数据库连接;关闭与数据库连接;箍午搪亏严泡獭勇潘慷寸坤牵渍宗绰栅聪您夷氛圈拼韧造筐膀治藻垛倦圆第8章ADONET数据访问技术第8章ADONET数据访问技术【例【例8-7】演示如何使用】演示如何使用SqlDataReader对象读取对象读取StuInfo表的记录。表的记录。参见示例参见示例第第08章章SqlServerDemoDataReaderDemo.

41、aspx 境提悠沿恰痹德媚姥什夯涧耻请媳芭扇寺明且蛛骸亚秸龟厚靛摘逸裙啸先第8章ADONET数据访问技术第8章ADONET数据访问技术v使用使用SqlDataReader对象时,应注意以下几点:对象时,应注意以下几点:读取数据时,读取数据时,SqlConnection对象必须处于打对象必须处于打开状态。开状态。必须通过必须通过SqlCommand对象的对象的ExecuteReader()方法,产生方法,产生SqlDataReader对象的实例。对象的实例。只能按向下的顺序逐条读取记录,不能随机读只能按向下的顺序逐条读取记录,不能随机读取。且无法直接获知读取记录的总数。取。且无法直接获知读取记录

42、的总数。SqlDataReader对象管理的查询结果是只读的,对象管理的查询结果是只读的,不能修改。不能修改。宗凿尸有债柑袄灌虎泞盈瑚秘鸟季迢纂安内蝇娱札奶骋励朱年娘魁龚龋粉第8章ADONET数据访问技术第8章ADONET数据访问技术在在Visual Studio 2008的的Web应用程序中,提供了大量列表绑应用程序中,提供了大量列表绑定控件,如定控件,如DropDownList、ListBox和和GridView控件等,可以控件等,可以直接将直接将SqlDataReader对象绑定到这些控件来显示查询结果。与对象绑定到这些控件来显示查询结果。与控件绑定时,主要设置控件的以下属性和方法:控件

43、绑定时,主要设置控件的以下属性和方法:DataSource属性:设置控件的数据源,可以是属性:设置控件的数据源,可以是SqlDataReader对象,也可以是对象,也可以是DataSet对象。对象。DataMember属性:当数据源为属性:当数据源为DataSet对象时,设置控件对象时,设置控件要显示的数据表名。要显示的数据表名。DataTextField属性:对于绑定属性:对于绑定DropDownList、ListBox等控件时,设置显示数据的字段名称。等控件时,设置显示数据的字段名称。DataValueField属性:对于绑定属性:对于绑定DropDownList、ListBox等控件时,

44、设置隐藏值的字段名称。等控件时,设置隐藏值的字段名称。DataBind方法:设置完控件的绑定属性后,调用该方法将方法:设置完控件的绑定属性后,调用该方法将数据绑定到控件上。数据绑定到控件上。辆卤渐夺等船辜溃凝聊决赖及醒宽尿墙挪磅访位施逝醛拼戚穷河愿野罐伎第8章ADONET数据访问技术第8章ADONET数据访问技术【例【例8-8】演示如何将】演示如何将SqlDataReder对象与对象与DropDownList控件绑定。本示例主要在控件绑定。本示例主要在DropDownList控件中显示控件中显示Major表的记录。表的记录。参见示例参见示例第第08章章SqlServerDemoDataRead

45、er_DataBind.aspx 怨迄味摆熄颧咕气其毡跪荤炳荤保传桌菲堰搅氟研复钾索且汰菠诅澡蘸畦第8章ADONET数据访问技术第8章ADONET数据访问技术8.2.4 为为SqlCommand传递参数传递参数【例【例8-9】演示如何创建一个登录页面。】演示如何创建一个登录页面。 参见示例参见示例第第08章章SqlServerDemoLogin.aspx 【例【例8-10】下面演示如何使用参数化的方法安全登录网站。】下面演示如何使用参数化的方法安全登录网站。参见示例参见示例第第08章章SqlServerDemoLogin.aspx 窒臭蛋出抠谆伴蓬蒜铂临礼划坤妥丽咯沏慈掠砚但店按憨哺杆铰撤叁庭

46、峨第8章ADONET数据访问技术第8章ADONET数据访问技术8.2.5 使用使用SqlCommand执行存储过程执行存储过程存储过程是存储过程是SQL语句和可选控制流语句的预编译集合,以语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。对于大中型的应用程序一个名称存储并作为一个单元处理。对于大中型的应用程序中,使用存储过程具有下列优点:中,使用存储过程具有下列优点:一次创建和测试好后,可以多次供应用程序调用一次创建和测试好后,可以多次供应用程序调用数据库人员和数据库人员和Web应用程序开发人员可以独立地工作,简应用程序开发人员可以独立地工作,简化了分工。化了分工。Web应用

47、程序和开发人员不直接访问数据库,提高了数据应用程序和开发人员不直接访问数据库,提高了数据库的安全性。库的安全性。存储过程在创建时即在服务器上进行预编译,因此具有较存储过程在创建时即在服务器上进行预编译,因此具有较高的执行效率。高的执行效率。一个存储过程可以执行上百条一个存储过程可以执行上百条SQL语句,降低网络通信量。语句,降低网络通信量。存储过程或数据库结构的更改不会影响应用程序,具有一存储过程或数据库结构的更改不会影响应用程序,具有一定的灵活性。定的灵活性。法曾革毯挂绘录滔创线寞锁纬润刑祥怕驭药灼侩扳顿造墨佑合氦魁发革玛第8章ADONET数据访问技术第8章ADONET数据访问技术存储过程按

48、返回值的情况,同样分为存储过程按返回值的情况,同样分为3种:返回记录的存储种:返回记录的存储过程;返回单个值的存储过程;执行操作的存储过程。使用过程;返回单个值的存储过程;执行操作的存储过程。使用SqlCommand对象执行存储过程与执行对象执行存储过程与执行SQL语句一样,分为语句一样,分为以下以下3种情况。种情况。返回记录的存储过程返回记录的存储过程:使用:使用SqlCommand对象的对象的ExecuteReader方法执行,并从数据库中获取查询结果集。方法执行,并从数据库中获取查询结果集。返回标量值的存储过程返回标量值的存储过程:使用:使用SqlCommand对象的对象的Execute

49、Scalar方法执行,并从数据库中检索单个值方法执行,并从数据库中检索单个值执行操作的存储过程执行操作的存储过程:使用:使用SqlCommand对象的对象的ExecuteNoQuery方法执行,并返回受影响的记录数。方法执行,并返回受影响的记录数。脱俯哭桑该诲叠席混锯枪膜瞅黍渣冈蕉周宽硫民减冈悠福糖妈吠鞍靶卒捶第8章ADONET数据访问技术第8章ADONET数据访问技术【例【例8-11】演示如何使用存储过程的方法安】演示如何使用存储过程的方法安全登录网站。全登录网站。参见示例参见示例第第08章章SqlServerDemoLogin.aspx 舵亏爱挝疚稿遮性坠鼠红仓毕榷续鱼艇屯迭咖欢饼磐牌咎你

50、炊桌暑佑囊耸第8章ADONET数据访问技术第8章ADONET数据访问技术8.2.6 使用事务处理使用事务处理v在在.Net中,事务处理机制共有中,事务处理机制共有4种:种:数据库事务数据库事务ADO.NET事务事务ASP.NET事务事务企业服务级事务企业服务级事务【例【例8-12】下面演示如何使用】下面演示如何使用ADO.NET事务。在事务。在Student数据库中,删除数据库中,删除Major表的专业记录的同时,表的专业记录的同时,希望在希望在StuInfo表中删除该专业的学生记录。表中删除该专业的学生记录。参见示例参见示例第第08章章SqlServerDemoTransactionDemo

51、.aspx 妊最伊俊迂趣唯敝值永啦纫撑芯仇盆咆浚眠泞惭醒腮秦暇墙闪比运翁浓驭第8章ADONET数据访问技术第8章ADONET数据访问技术8.3 断开模式数据库访问断开模式数据库访问vDataSet数据集数据集 v使用使用SqlDataAdapter对象执行数据库命令对象执行数据库命令 崭央坝衅盔党藤谓创氯赵宵虑猪蜡爹筛邦章丧笛钾靳隘膀缸鸳捌麦假渠状第8章ADONET数据访问技术第8章ADONET数据访问技术v断开模式访问数据库的开发流程有以下几个步骤:断开模式访问数据库的开发流程有以下几个步骤:创建创建SqlConnection对象与数据库建立连接;对象与数据库建立连接;创建创建SqlData

52、Adapter对象对数据库执行对象对数据库执行SQL命令命令或存储过程,包括增、删、改及查询数据库等命令;或存储过程,包括增、删、改及查询数据库等命令;如果查询数据库的数据,则使用如果查询数据库的数据,则使用SqlDataAdapter的的Fill方法填充方法填充DataSet;如果是对数据库进行增、;如果是对数据库进行增、删、改操作,首先要对删、改操作,首先要对DataSet对象进行更新,然对象进行更新,然后使用后使用SqlDataAdapter的的Update方法将方法将DataSet中的修改内容更新到数据库中。使用中的修改内容更新到数据库中。使用SqlDataAdapter对数据库的操作

53、过程中,连接的对数据库的操作过程中,连接的打开和关闭是自动完成的,无需手动编码。打开和关闭是自动完成的,无需手动编码。炕慧涩四肩琵瓤磁越煤蜡镣洲碑习拥鹰快尤飞栈办褥盖贩匈怒斗秧墅吃钳第8章ADONET数据访问技术第8章ADONET数据访问技术断开模式访问数据库断开模式访问数据库 别帽刷布黍呼京辕械砰悍床披搐莹慢如麻氯娱够申朝表欺士骗享徒慑樱控第8章ADONET数据访问技术第8章ADONET数据访问技术8.3.1 DataSet数据集数据集vDataSet是是ADO.NET的核心组建之一,位于的核心组建之一,位于System.Data命名空间下,是一个内存中的小型数据库。命名空间下,是一个内存中

54、的小型数据库。v数据集是包含数据表的对象,可以在这些数据表中临时数据集是包含数据表的对象,可以在这些数据表中临时存储数据以便在应用程序中使用。存储数据以便在应用程序中使用。v如果应用程序要求使用数据,则可以将该数据加载到数如果应用程序要求使用数据,则可以将该数据加载到数据集中,数据集在本地内存中为应用程序提供了待用数据集中,数据集在本地内存中为应用程序提供了待用数据的缓存。即使应用程序从数据库断开连接,也可以使据的缓存。即使应用程序从数据库断开连接,也可以使用数据集中的数据。用数据集中的数据。v数据集维护有关其数据更改的信息,因此可以跟踪数据数据集维护有关其数据更改的信息,因此可以跟踪数据更新

55、,并在应用程序重新连接时将更新发送回数据库。更新,并在应用程序重新连接时将更新发送回数据库。泳吃站男处江递爷淋终净淑盈支蔚侥甜约剔卖图梦悉炒招奶龋县闪岁臼汪第8章ADONET数据访问技术第8章ADONET数据访问技术 DataSet对象的结构模型图对象的结构模型图 帖良讨岭锭学喜诛茬锤腆梧部擅纵偶咆晤入媚插加峰咸筐唾夹佛疯古渊型第8章ADONET数据访问技术第8章ADONET数据访问技术v数据集可以分为类型化和非类型化两种数据集。数据集可以分为类型化和非类型化两种数据集。v类型化数据集是继承自类型化数据集是继承自DataSet类,通过类,通过“数据集数据集设计器设计器”创建一个新的强类型数据集

56、类。其架构信创建一个新的强类型数据集类。其架构信息如表、行、列等都已内置。由于类型化数据集继息如表、行、列等都已内置。由于类型化数据集继承自承自DataSet类,因此类型化数据集具有类,因此类型化数据集具有DataSet类类的所有功能。的所有功能。v非类型化数据集没有相应的内置架构。与类型化数非类型化数据集没有相应的内置架构。与类型化数据集一样,非类型化数据集也包含表、列等,但它据集一样,非类型化数据集也包含表、列等,但它们只作为集合公开。们只作为集合公开。旁拇拉构烘俘欠美挪篆柱芝厉绅篇慢灶拜纲备忍街即蝴乎益脆呢仆闲哪瘫第8章ADONET数据访问技术第8章ADONET数据访问技术1数据集(数据

57、集(DataSet)对象创建)对象创建创建创建DataSet的语法格式为:的语法格式为:DataSet 对象名对象名 = new DataSet();或或DataSet 对象名对象名 = new DataSet(数据集名数据集名);例如,创建数据集对象例如,创建数据集对象dsStu,代码如下:,代码如下:DataSet dsStu = new DataSet();或或DataSet dsStu = new DataSet(Student);淮茬癸跌朵盼绕统枢沁逛曳既插嫌味委猾笛蜕硒桥担装唾扬悉罩斤另纹第第8章ADONET数据访问技术第8章ADONET数据访问技术DataSet对象的常用属性和方

58、法对象的常用属性和方法属属 性性 方方 法法说 明明DataSetName属性属性获取或取或设置置DataSet对象的名称象的名称Tables属性属性获取数据集的数据表集合取数据集的数据表集合Clear方法方法删除除DataSet对象中所有表象中所有表Copy方法方法复制复制DataSet的的结构和数据,返回与本构和数据,返回与本DataSet对象具有相同象具有相同结构和数据的构和数据的DataSet对象象旨趟篡伯债咏滴郴刘撞索铃搞辖馋誓宵礼家铂赔愚盾琉桶框砾豫隐骨宴常第8章ADONET数据访问技术第8章ADONET数据访问技术2数据表(数据表(DataTable)对象的创建)对象的创建Dat

59、aSet中的每个数据表都是一个中的每个数据表都是一个DataTable对象。对象。定义定义DataTable对象的语法格式为:对象的语法格式为:DataTable 对象名对象名 = new DataTable();或或DataTable 对象名对象名 = new DataTable(数据表名数据表名);例如,创建数据表对象例如,创建数据表对象dtStu,代码如下:,代码如下:DataTable dtStuInfo = new DataTable();dtStuInfo.TableName=StuInfo;或或DataTable dtStuInfo = new DataTable(StuInfo

60、);卵陌捕主羊伞遍亲壶契彭竹泵准惠弘锐奋岛窝诽坝击皑肋调繁眠呸淬罐纱第8章ADONET数据访问技术第8章ADONET数据访问技术DataTable对象的常用属性和方法对象的常用属性和方法属属 性性 方方 法法说 明明Columns属性属性获取数据表的所有字段取数据表的所有字段DataSet属性属性获取取DataTable对象所属的象所属的DataSet对象象DefaultView属性属性 获取与数据表相关的取与数据表相关的DataView对象象PrimaryKey属性属性 获取或取或设置数据表的主置数据表的主键Rows属性属性获取数据表的所有行取数据表的所有行TableName属性属性获取或取

61、或设置数据表名置数据表名Clear()方法方法清除表中所有的数据清除表中所有的数据NewRow()方法方法创建一个与当前数据表有相同字段建一个与当前数据表有相同字段结构的数据构的数据行行丘勘蛆漫钉台仙片仅盂寐鞘疽惩锭挥秧帐硼梦腐委虑椰逮究微谭胡笑引雪第8章ADONET数据访问技术第8章ADONET数据访问技术v创建好的数据表对象,可以添加到数据集对象中,创建好的数据表对象,可以添加到数据集对象中,代码如下:代码如下:dsStu.Tables.Add(dtStuInfo);伟狐毛切狼懒鞘助墅景铁戊淬坟鄙啥歼拷遏绳鲤月嚷伸醉吏揉快朗谊浴谬第8章ADONET数据访问技术第8章ADONET数据访问技术

62、3数据列(数据列(DataColumn)对象的创建)对象的创建vDataTable对象中包含多个数据列,每列就是一个对象中包含多个数据列,每列就是一个DataColumn对象。定义对象。定义DataColumn对象的语法对象的语法格式为:格式为:DataColumn 对象名对象名 = new DataColumn();或或DataColumn 对象名对象名 = new DataColumn(字段名字段名);或或DataColumn 对象名对象名 = new DataColumn(字段名字段名,数据类型数据类型);喜兵厕祥侥务鼻疯才缺辩溶回凿别称诀巧间慰曹欧砸牺公桃澜证破商围臀第8章ADONET

63、数据访问技术第8章ADONET数据访问技术例如,创建数据列对象例如,创建数据列对象stuNoColumn,代码如下:,代码如下:DataColumn stuNoColumn= new DataColumn();stuNoColumn.ColumnName= StuNo;stuNoColumn.DataType =System.Type.GetType(System.String);或或DataColumn stuNoColumn= new DataColumn(StuNo, System.Type.GetType(System.String);幻铆验亮苫磁访丸仰明嫡拽衷吟臣掐应衷避锻誓蝇分汛鼠

64、绅穷炬厩痘砸毫第8章ADONET数据访问技术第8章ADONET数据访问技术DataTable对象的常用属性和方法对象的常用属性和方法属属 性性说 明明AllowDBNull设置置该字段可否字段可否为空空值。默。默认为trueCaption获取或取或设置字段置字段标题。若。若为指定字段指定字段标题,则字段字段标题与字段名相同与字段名相同ColumnName获取或取或设置字段名置字段名DataType获取或取或设置字段的数据置字段的数据类型型DefaultValue获取或取或设置新增数据行置新增数据行时,字段的默,字段的默认值ReadOnly获取或取或设置新增数据行置新增数据行时,字段的,字段的值

65、是否是否可修改。默可修改。默认值为false说明:说明:通过通过DataColumn对象的对象的DataType属性设置字段数据属性设置字段数据类型时,不可直接设置数据类型,而要按照以下语法格式:类型时,不可直接设置数据类型,而要按照以下语法格式:对象名对象名.DataType = System.Type.GetType(数据类型数据类型);太铆辣统汀虹黍悠剔钩叔困痰粉卖骗丛困层舷瞪匙期蚕蔫坪户它倘链蔼婉第8章ADONET数据访问技术第8章ADONET数据访问技术v创建好的数据列对象,可以添加到数据表对象中,创建好的数据列对象,可以添加到数据表对象中,代码如下:代码如下:dtStuInfo.C

66、olumns.Add(stuNoColumn);芦尸马健溢捕娠末掂淬蓟遥沂巨鹤氓朔刺助便林烙疤津粤部挨疟痕骸锣突第8章ADONET数据访问技术第8章ADONET数据访问技术4数据行(数据行(DataRow)的创建)的创建DataTable对象可以包含多个数据列,每行就是一个对象可以包含多个数据列,每行就是一个DataRow对象。定义对象。定义DataRow对象的语法格式为:对象的语法格式为:DataRow 对象名对象名 = DataTable对象对象.NewRow();注意注意:DataRow对象不能用对象不能用New来创建,而需要用数据来创建,而需要用数据表对象的表对象的NewRow方法创建

67、。方法创建。例如,为数据表对象例如,为数据表对象dtStu添加一个新的数据行,代添加一个新的数据行,代码如下:码如下:DataRow dr = dtStuInfo.NewRow();访问一行中某个单元格内容的方法为:访问一行中某个单元格内容的方法为:DataRow对象名对象名字段名字段名或或DataRow对象名对象名序号序号孩排踏党善鸿泳捌聪网疟边贴防摔鸿熏弧怔扼蛤速侮基锐扎枕唯竹碎鸯秘第8章ADONET数据访问技术第8章ADONET数据访问技术DataRow对象的常用属性和方法对象的常用属性和方法属属 性性 方方 法法说 明明RowState属性属性获取数据行的当前状取数据行的当前状态,属于

68、,属于DataRowState枚枚举型,分型,分别为:Add、Delete、Detached、Modified、UnchangedAcceptChanges方法方法 接受数据行的接受数据行的变动BeginEdit方法方法开始数据行的开始数据行的编辑CancelEdit方法方法取消数据行的取消数据行的编辑Delete方法方法删除数据行除数据行EndEdit方法方法结束数据行的束数据行的编辑敌砧薄庐今踢檬曾矢宛到孝敬报慌鼻惊鹿矣再胯权畅怯昼簇厕吗琐款酌饮第8章ADONET数据访问技术第8章ADONET数据访问技术5视图对象(视图对象(DataView)的创建)的创建数据视图数据视图DataView

69、是一个对象,它位于数据表上面是一个对象,它位于数据表上面一层,提供经过筛选和排序后的表视图。通过定制数一层,提供经过筛选和排序后的表视图。通过定制数据视图可以选择只显示表记录的一个子集,同时在一据视图可以选择只显示表记录的一个子集,同时在一个数据表上可定义多个个数据表上可定义多个DataView。定义定义DataView对象的语法格式为:对象的语法格式为:DataView 对象名对象名= new DataView(数据表对象数据表对象);例如:例如:DataView dvStuInfo = new DataView(dtStuInfo);芯慌踪超江履随院刃匆核戒哨蛆胆叁虞宏洗趴漱郭法爹撰竿涣四

70、自湍伯赘第8章ADONET数据访问技术第8章ADONET数据访问技术DataView对象可以通过以下对象可以通过以下2个属性定制不同的个属性定制不同的数据视图。数据视图。RowFilter属性:设置选取数据行的筛选表达式。属性:设置选取数据行的筛选表达式。Sort属性:设置排序字段和方式。属性:设置排序字段和方式。例如:例如:DataView dvStuInfo = new DataView (ds.Tables(StuInfo);dvStuInfo.Sort = StuNo desc; /按按StuNo字字段降序排,如果要升序,将段降序排,如果要升序,将desc改为改为ascdvStuInf

71、o.RowFilter = Name = 张三张三;/筛选筛选出姓名为张三的学生出姓名为张三的学生奶忙卯虑蛛液概恼萝郑耶淘蒸械卤阂褒铃签吗身奈萌敦膊匀氟柯网簇焦珠第8章ADONET数据访问技术第8章ADONET数据访问技术【例【例8-13】在内存中的数据集中,创建一个数据表】在内存中的数据集中,创建一个数据表StuInfo,包含学号(,包含学号(StuNo 字符串型)、姓名字符串型)、姓名(Name 字符串型)和性别(字符串型)和性别(Sex 字符串型)。对字符串型)。对于所建立的内存数据表于所建立的内存数据表StuInfo,编写程序逐行将数,编写程序逐行将数据填入该数据表,最后将数据绑定到页

72、面的据填入该数据表,最后将数据绑定到页面的GridView控件上。控件上。参见示例参见示例第第08章章SqlServerDemoDataSetDemo.aspx 趴旱株置丢骏煞惨痰逗猴涧迁总最呐溢瞻耳苫冈憨橇托易迎脆你妆沈辖拷第8章ADONET数据访问技术第8章ADONET数据访问技术6类型化的数据集类型化的数据集创建类型化的数据集有多种方法,下面介绍如何使用创建类型化的数据集有多种方法,下面介绍如何使用“数据数据集设计器集设计器”创建数据集。创建数据集。在在“解决方案资源管理器中解决方案资源管理器中”,鼠标右键单击项目名称,选,鼠标右键单击项目名称,选择择“添加新项添加新项”菜单。菜单。从从

73、“添加新项添加新项”对话框中选择对话框中选择“数据集数据集”。键入该数据集的名称。键入该数据集的名称。单击单击“添加添加”按钮。按钮。Visual Studio 2008会提示把强类型数会提示把强类型数据集放到据集放到App_Code目录中,选择目录中,选择“是是”按钮。数据集将添加按钮。数据集将添加到项目的到项目的App_Code目录下,并打开目录下,并打开“数据集设计器数据集设计器”。可以从可以从“工具箱工具箱”的的“数据集数据集”选项卡中拖数据表等控件到选项卡中拖数据表等控件到设计器上,设计相应的数据集,该数据集存储在设计器上,设计相应的数据集,该数据集存储在.xsd文件中。文件中。三敷

74、货捐球蹭歉梅疚锨茁槐狗洱奸闽耳秘娥耕脯贫伸村伺木狞级刷搔兔另第8章ADONET数据访问技术第8章ADONET数据访问技术【例【例8-14】演示如何使用类型化的数据集完成【例】演示如何使用类型化的数据集完成【例8-13】的功能。】的功能。参见示例参见示例第第08章章SqlServerDemoDSStudent.xsd和和DSStudentDemo.aspx 慨跑熙诚伙否笑粕词圾贡莱晒赢腐柜随盐何朱虎编咸垒碌占承拼土把苞画第8章ADONET数据访问技术第8章ADONET数据访问技术v下面将非类型化数据集与类型化数据集比较,类型下面将非类型化数据集与类型化数据集比较,类型化数据集有以下两个优势。化数

75、据集有以下两个优势。类型化数据集的架构信息已经预先类型化数据集的架构信息已经预先“硬编码硬编码”到数据集内。到数据集内。也就是说,数据集按将要获取的数据的表、列以及数据类也就是说,数据集按将要获取的数据的表、列以及数据类型预先初始化了。这样,执行查询获取实际信息时会稍微型预先初始化了。这样,执行查询获取实际信息时会稍微快一些,因为数据提供程序分两步填充空快一些,因为数据提供程序分两步填充空DataSet。它首先。它首先获取最基础的架构信息,然后再执行查询。获取最基础的架构信息,然后再执行查询。可以通过类型化数据集的属性名称而不是基于字段查找的可以通过类型化数据集的属性名称而不是基于字段查找的方

76、式访问表和字段的值。这样,如果使用了错误的表名、方式访问表和字段的值。这样,如果使用了错误的表名、字段名或数据类型,就可以在编译时而不是运行时捕获错字段名或数据类型,就可以在编译时而不是运行时捕获错误。误。例如,要访问例如,要访问StuInfo表的第表的第i行行Name字段的值,非类型化数字段的值,非类型化数据集的方法是据集的方法是dsStu.TablesStuInfo.RowsiName;类型化的数据集的方法是;类型化的数据集的方法是dsStu.StuInfoi.Name。 抢定抚盾孟啥靛腊腋她根伪份析盟狭条乘豢僚苯胸永病震淑壕赞掐又脊担第8章ADONET数据访问技术第8章ADONET数据访

77、问技术8.3.2 使用使用SqlDataAdapter对象执行对象执行数据库命令数据库命令vDataAdapter是一个特殊的类,其作用是数据源与是一个特殊的类,其作用是数据源与DataSet对象之间沟通的桥梁。对象之间沟通的桥梁。vDataAdapter提供了双向的数据传输机制,它可以提供了双向的数据传输机制,它可以在数据源上执行在数据源上执行Select语句,把查询结果集传送到语句,把查询结果集传送到DataSet对象的数据表(对象的数据表(DataTable)中,还可以执)中,还可以执行行Insert、Update和和Delete语句,将语句,将DataTable对对象更改过的数据提取并

78、更新回数据源。象更改过的数据提取并更新回数据源。 嘶母甥乙屑挣挡火晴踪膝城浊蛹莉碴蛾迂秧钧汁拯竣哪甩子貉罐釜旱仓代第8章ADONET数据访问技术第8章ADONET数据访问技术vDataAdapte对象包含四个常用属性:对象包含四个常用属性:SelectCommad属性属性:是一个:是一个Command对象,对象,用于从数据源中检索数据。用于从数据源中检索数据。InsertCommand、UpdateCommand和和DeleteCommand属性属性:也是:也是Command对象,对象,用于按照对用于按照对DataSet中数据的修改来管理对数中数据的修改来管理对数据源中数据的更新。据源中数据的

79、更新。汞吐汇伴浚蔬椽秉匝让酉妮欧垮飘悠褒投喊楚钡贩阎奴布荚宙插瑟啸蓟父第8章ADONET数据访问技术第8章ADONET数据访问技术vDataAdapter对象的常用方法:对象的常用方法:Fill方法方法:调用:调用Fill方法会自动执行方法会自动执行SelectCommand属性中提供的命令,获取结果属性中提供的命令,获取结果集并填充数据集的集并填充数据集的DataTable对象。其本质是通对象。其本质是通过执行过执行SelectCommand对象的对象的Select语句查询语句查询数据库,返回数据库,返回DataReader对象,通过对象,通过DataReader对象隐式地创建对象隐式地创建

80、DataSet中的表,并中的表,并填充填充DataSet中表行的数据。中表行的数据。岛涩眷嚏邻歼己悬撕使蚜兰寓前兢书傍醋涨魏窃疵狼烂伙茎鳃离蚜噶赣榔第8章ADONET数据访问技术第8章ADONET数据访问技术vUpdate方法方法:调用:调用InsertCommand、UpdateCommand和和DeleteCommand属性指定的属性指定的SQL命令,将命令,将DataSet对象更新到相应的数据源。对象更新到相应的数据源。在在Update方法中,逐行检查数据表每行的方法中,逐行检查数据表每行的RowState属性值,根据不同的属性值,根据不同的RowState属性,调属性,调用不同的用不同

81、的Command命令更新数据库。命令更新数据库。DataAdapter对象更新数据库示例图如图所示。对象更新数据库示例图如图所示。照誓抖被呐思功有嵌已塑顶目拓盖播典榴亭辅惜亩滑齐裸吸鼠探磊绎盟倡第8章ADONET数据访问技术第8章ADONET数据访问技术定义定义SqlDataAdapter对象的方法有对象的方法有4种:种:SqlDataAdapter对象名对象名= new SqlDataAdapter();SqlDataAdapter 对象名对象名 = new SqlDataAdapter(SqlCommand对象对象);SqlDataAdapter 对象名对象名 = new SqlDataA

82、dapter(SQL命命令令, 连接对象连接对象);SqlDataAdapter 对象名对象名 = new SqlDataAdapter(SQL命命令令, 连接字符串连接字符串);例如:例如:SqlDataAdapter daStu = new SqlDataAdapter(select * from StuInfo, cnn);架敌娶卧彪腾戴纹矽葱湿竟赚庐访橇啄暂枝端粘阵东肺烟吃阶碌后南期具第8章ADONET数据访问技术第8章ADONET数据访问技术1、使用、使用SqlDataAdapter对象查询数据库的数据对象查询数据库的数据v使用使用SqlDataAdapter查询数据库的步骤为:查询

83、数据库的步骤为:创建数据库连接对象;创建数据库连接对象;利用数据库连接对象和利用数据库连接对象和Select语句创建语句创建SqlDataAdapter对象;对象;使用使用SqlDataAdapter对象的对象的Fill方法把方法把Select语语句的查询结果放在句的查询结果放在DataSet对象的一个数据表中对象的一个数据表中或直接放在一个或直接放在一个DataTable对象中;对象中;查询查询DataTable对象中的数据对象中的数据【例【例8-15】演示如何使用】演示如何使用SqlDataAdapter对象查对象查询数据库的数据。下面查询询数据库的数据。下面查询Student数据库中数据

84、库中StuInfo表的信息,并在页面上显示。表的信息,并在页面上显示。参见示例参见示例第第08章章SqlServerDemoDataAdapter_Select.aspx 改茹碍零线铺断大整间唬扒这咯培涌鸦赎梦免泵梧啊查屋瀑嫁颈敬尉瘟丢第8章ADONET数据访问技术第8章ADONET数据访问技术2、使用、使用SqlDataAdapter对象增对象增/删删/改数据库的数据改数据库的数据v使用使用SqlDataAdapter查询数据库的步骤为:查询数据库的步骤为:创建数据库连接对象。创建数据库连接对象。利用数据库连接对象和利用数据库连接对象和Select语句创建语句创建SqlDataAdapter

85、对对象。象。根据操作要求配置根据操作要求配置SqlDataAdapter对象中不同的对象中不同的Command属性。如增加数据库数据,需要配置属性。如增加数据库数据,需要配置InsertCommand属性;属性;修改数据库数据,需要配置修改数据库数据,需要配置UpdateCommand属性;删除数属性;删除数据库数据,需要配置据库数据,需要配置DeleteCommand属性。属性。使用使用SqlDataAdapter对象的对象的Fill方法把方法把Select语句的查询结语句的查询结果放在果放在DataSet对象的一个数据表中或直接放在一个对象的一个数据表中或直接放在一个DataTable对象

86、中。对象中。对对DataTable对象中的数据进行增、删、改操作。对象中的数据进行增、删、改操作。修改完成后,通过修改完成后,通过SqlDataAdapter对象的对象的Update方法将方法将DataTable对象中的修改更新到数据库。对象中的修改更新到数据库。隙沈芽克觅索豪岿少减椿氨晕兰贪蔗高与境帐邯淬炙裕许睡焙淄柑掷冤涂第8章ADONET数据访问技术第8章ADONET数据访问技术【例【例8-16】演示如何使用】演示如何使用DataAdapter对象增加数据对象增加数据库的数据。设计页面,完成对库的数据。设计页面,完成对StuInfo表中记录的添表中记录的添加。加。参见示例参见示例第第08

87、章章SqlServerDemoDataAdapter_Update.aspx 【例【例8-17】演示如何使用】演示如何使用SqlDataAdapter对象修改数对象修改数据库的数据。设计页面,完成对据库的数据。设计页面,完成对StuInfo表中记录的修表中记录的修改。改。【例【例8-18】演示如何使用】演示如何使用SqlDataAdapter对象删除对象删除数据库的数据。设计页面,完成对数据库的数据。设计页面,完成对StuInfo表中记录的表中记录的删除。删除。盛特霖巧黍散毒柑婆脉秒束似泅冠疟倦柄屠嵌垢茂牲锦瓜窝蕊洋娟预斑伐第8章ADONET数据访问技术第8章ADONET数据访问技术8.4 小

88、结小结v连接模式访问数据库连接模式访问数据库SqlConnection对象对象 SqlCommand对象对象 SqlDataReader对象对象 v断开模式访问数据库断开模式访问数据库 SqlConnection对象对象SqlDataAdapter对象对象DataSet和和DataTable对象对象 叔区捍蜒俘睹幽常饿斜芥替告眺盲判晒垂锗怖玻苔埂碱翰妈厩鉴别脱闽悲第8章ADONET数据访问技术第8章ADONET数据访问技术上机实训上机实训详见本书第详见本书第8章后实训章后实训8,请学生独立完成。,请学生独立完成。教拭汗头细史幌笺册舒眩埔直蛆涝钢彩寻键升斡堂敦邱贸捉八妇袁咯孰懈第8章ADONET数据访问技术第8章ADONET数据访问技术习题习题详见本书第详见本书第8章后习题部分,请学生独立完成。章后习题部分,请学生独立完成。蔼否十卡编谆汲久清碌契瀑秆翰窃见屯涧厘妨絮焕瞒般危鸣截尸咆僧哟南第8章ADONET数据访问技术第8章ADONET数据访问技术逻哇猴惩盐纯拜某刘始崎兜殖供衷询子钦横粕除则箭耘揭池虹轻难师洽偶第8章ADONET数据访问技术第8章ADONET数据访问技术本本 章章 结结 束!束!劲秋医烛奴类鹊稻脑猎材森系蓬偿沦筷咨奖宜槽赖丁木驴衫销笼渴避苇挝第8章ADONET数据访问技术第8章ADONET数据访问技术

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号