第9章 使用ADO.NET访问数据库.ppt

上传人:啊飒飒 文档编号:11877093 上传时间:2021-10-09 格式:PPT 页数:51 大小:727KB
返回 下载 相关 举报
第9章 使用ADO.NET访问数据库.ppt_第1页
第1页 / 共51页
第9章 使用ADO.NET访问数据库.ppt_第2页
第2页 / 共51页
第9章 使用ADO.NET访问数据库.ppt_第3页
第3页 / 共51页
第9章 使用ADO.NET访问数据库.ppt_第4页
第4页 / 共51页
第9章 使用ADO.NET访问数据库.ppt_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《第9章 使用ADO.NET访问数据库.ppt》由会员分享,可在线阅读,更多相关《第9章 使用ADO.NET访问数据库.ppt(51页珍藏版)》请在三一文库上搜索。

1、,第9章 ADO.NET数据库编程,第9章 使用ADO.NET访问数据库,本章讲述的主要内容 9.1 ADO.NET和数据库通用接口 9.2 数据库连接对象(Connection) 9.3 数据库命令对象(Command) 9.4 数据读取对象(DataReader) 9.5 数据适配器对象(DataAdapter) 9.6DataSet,教学重点、难点,重点 数据库连接对象(Connection) 数据库命令对象(Command) 数据读取对象(DataReader) 数据适配器对象(DataAdapter) 数据集对象(DataSet),9.1 ADO.NET和数据库通用接口,ADO.NE

2、T微软公司推出的,由ADO演变而来的数据访问技术; 是.NET框架的一部分; 提供了一组.NET类,有助于实现对各种数据源进行高效访问,对复杂数据进行操作和排序; 是.NET编程环境中优先使用的数据访问接口; ADO.NET是一组用于和数据源进行交互的面向对象类库。通常情况下,数据源是数据库,但也可以是文本文件、Excel表格或者XML文件; ADO.NET允许和不同类型的数据源以及数据库进行交互;,9.1 ADO.NET和数据库通用接口,9.1.2 数据库通用接口 各种不同的数据库管理系统采用不同的数据格式与接口,需要编写不同的接口代码访问数据库管理系统,代码重用率低; 产生了用于连接不同数

3、据库管理系统的“驱动程序”,放置在应用程序与数据库之间作为中间层,此类驱动程序使编程人员可以使用相同或相近的代码连接不同类型的数据库; 美国微软公司提供的数据库通用接口程序,经过了ODBCOLEDBADOADO.NET几个发展阶段。 1. ODBC通用数据库接口 ODBC(Open Database Connectivity,开放数据库互联) 使用C语言开发的应用程序接口,该接口由多种函数组成; 应用程序只需要统一的连接代码指向ODBC,然后再由ODBC调用系统提供的数据库驱动程序实现连接不同数据库;,9.1 ADO.NET和数据库通用接口,9.1.2 数据库通用接口 2. ADO通用数据库接

4、口 ODBC结构复杂,效率较低; ADO(Active Data Object,动态数据对象) 建立在OLEDB技术基础上的数据库接口技术,OLEDB建立在ODBC基础上,用面向对象的思想对ODBC函数进行了重新分类和封装; OLEDB可以访问关系数据库也可以访问非关系型数据库(数据文件等); ADO对OLEDB的接口进行了优化,是ODBC和OLEDB的上层接口技术;,9.1 ADO.NET和数据库通用接口,9.1.2 数据库通用接口 3. ADO.NET概述 在.NET框架的System.Data命名空间及其子空间中有一些类,这些类被统称为ADO.NET; ADO.NET是对ADO的改进,区

5、别: 1)ADO.NET支持“断开连接模式”下访问数据库 建立与DB的连接 - 下载需要的数据到本地缓冲区 - 断开连接 - 对数据进行操作(本地) - 再次连接DB(需要时) 关闭连接(修改数据后) 优势:减少了因连接过多对数据库服务器资源的大量占用 2)连接模式下的数据访问,通过DataReader对象实现。该对象表示一个向前的、只读的数据集合,速度快、效率高、功能有限;,9.1 ADO.NET和数据库通用接口,9.1.3 ADO.NET的数据模型 ADO.NET采用了层次管理的结构模型,各部分之间的逻辑关系如图9-3所示。,9.1 ADO.NET和数据库通用接口,9.1.4 ADO.NE

6、T对象概述 ADO.NET对象是指包含数据集DataSet和数据提供器Provider中的对象;在ADO.NET中数据集与数据提供器是两个非常重要,而又相互关联的核心组件。,9.2 数据库连接对象(Connection),9.2 Connection(连接) 数据提供器Provider包括:Connection、Command、DataAdapter、DataReader; Connection类提供了对数据源连接的封装。,9.2 数据库连接对象(Connection),9.2 Connection(连接) 在Connection类中最重要的属性是ConnectionString(连接字符串)

7、,该属性用来指定服务名称、数据源信息及其他登录信息。,9.2 数据库连接对象(Connection),Connection.ConnectionString(连接字符串),SQL Server方式登录: DataSource=localhost;Initial Catalog=student;User ID=sa; Password=123;Integrated Security=SSPI; Windows方式登录: DataSource=localhost;Initial Catalog=student; Integrated Security=SSPI;,Access数据库 Provide

8、r=Mirosoft.Jet.OLEDB.4.0;Data Source=c: App_Dataemployee.mdb;,9.2 数据库连接对象(Connection),9.2 Connection(连接) 创建Connection对象(以SqlConnection为例): /初始化SqlConnection类的新实例 SqlConnection mycon=new SqlConnection(); mycon.ConnectionString(String); 或 /用给定连接字符串初始化SqlConnection类的新实例 SqlConnection mycon=new SqlConne

9、ction(String);,9.2 数据库连接对象(Connection),9.2 Connection(连接) 在ADO.NET中,连接不同种类数据库时ConnectionString类是不同的: 1)使用OLEDB编程接口 使用OleDbConnection对象; using System.Data.OleDb; 2)使用SQL Server编程接口 使用SqlConnection对象; using System.Data.sqlClient; 以上对象包括两个常用方法: Open方法:打开由ConnectionString属性指定的数据源连接; Close方法:断开由Connectio

10、nString属性指定的数据源连接;,9.2 数据库连接对象(Connection),9.2 Connection(连接) 在ADO.NET中,连接数据库的基本步骤: 1)创建一个Connection类的实例,即声明一个新的Connection对象; 2)设置Connection对象的连接字符串属性 ConnectionString; 3)使用Open()方法或Close()方法打开或关闭连接;,9.3 数据库命令对象(Command),9.3 Command(命令) Command对象可以在数据源中执行SQL语句或存储程序,并从数据源返回结果。Command对象常用的构造函数包括两个重要的参

11、数,一个是要执行的SQL语句,另一个是已建立的Connection对象。 Command对象可以分为4类: 1)SqlCommand 2)OleDbCommand 3)OdbcCommand 4)OracleCommand Command对象的属性: 1)CommandText:获取或设置对数据源执行的SQL命令; 2)Connection:获取或设置Command对象要使用的数据连接;,9.3 数据库命令对象(Command),9.3 Command(命令) Command对象可以在数据源中执行SQL语句或存储程序,并从数据源返回结果。Command对象常用的构造函数包括两个重要的参数,一个

12、是要执行的SQL语句,另一个是已建立的Connection对象。 1. ExecuteNonQuery方法 该方法对Connection对象建立的连接进行不返回任何行的查询,如Update(更新)、Delete(删除)和Insert(插入),该方法返回一个整型(Integer)数据,表示受查询影响的行数。 2. ExecuteReader方法 3. ExecuteScalar方法,9.3 数据库命令对象(Command),9.3 Command(命令) 2. ExecuteReader方法 对Connection对象建立的连接执行一个CommandText属性中定义的命令,返回一个仅向前的、只

13、读的数据集DataReader对象,该对象连接到数据库的结果集上,允许行检索。,9.3 数据库命令对象(Command),9.3 Command(命令) 3. ExecuteScalar方法 该方法对Connection对象建立的连接执行CommandText属性中定义的命令,但只返回结果集中的第1行第1列的值。,9.4 数据适配器对象(DataAdapter),9.4 DataAdapter(数据适配器) DataAdapter对象在DataSet对象和数据源之间架起了“桥梁” ; SQL Server:SqlDataAdapter OLEDB数据源:OleDbDataAdapter 当Da

14、taAdapter填充DataSet时,它为返回的数据创建必需的表和列(如果这些表和列尚不存在 ); DataAdapter属性: SelectCommand: 获取或设置一个 Transact-SQL 语句或存储过程,用于在数据源中选择记录,并将结果填充到DataSet; SelectCommand是对Command对象的引用,在将SelectCommand 分配给以前创建的 Command时,不克隆Command; 如果 SelectCommand 不返回任何行,则没有任何表添加到DataSet中,并且不会引发任何异常;,9.4 数据适配器对象(DataAdapter),9.4 DataA

15、dapter(数据适配器) DataAdapter属性: UpdateCommand: 获取或设置一个 Transact-SQL 语句或存储过程,用于更新数据源中的记录; InsertCommand: 获取或设置一个Transact-SQL 语句或存储过程,以在数据源中插入新记录; DeleteCommand: 获取或设置一个 Transact-SQL 语句或存储过程,以从数据集删除记录; 以上属性用于把DataSet/DataTable所做的修改返回到数据源;,9.4 数据适配器对象(DataAdapter),9.4 DataAdapter(数据适配器) DataAdapter对象常用的方法

16、: 1) Fill方法:该方法用来执行SelectCommand,用数据源的数据填充DataSet对象。 Fill(DataSet):指定要用数据填充的有效DataSet对象; Fill(DataSet,String):String指定DataSet中包含的表名称; 2) FillSchema方法:该方法使用SelectCommand提取数据源中表的架构,并根据相应的约束在DataSet对象中创建一个空表; 3) Update方法:该方法用来将DataSet对象中更改的内容更新到初始的数据库中。为指定 DataTable中每个已插入、已更新或已删除的行调用相应的 INSERT、UPDATE 或

17、 DELETE 语句;,9.4 数据适配器对象(DataAdapter),9.4 DataAdapter(数据适配器) 3. 使用DataAdapter对象操作数据库 SQL语句可以通过以下两种方式传递给DataAdapter对象: 1) 通过DataAdapter对象的构造函数执行SQL语句。 例如,下列语句在声明一个DataAdapter对象da的同时,指定da对象要执行strSQL字符串变量表示的SQL语句,要使用Connection对象conn表示的数据库连接。 SqlDataAdapter da = new SqlDataAdapter(strSQL, conn); 2) 通过Dat

18、aAdapter对象的4个常用属性执行SQL语句。 下面的例题说明了使用DataAdapter对象的4个常用Command属性,执行SQL语句操作数据库的方法。,9.5 数据读取对象(DataReader),9.5 DataReader(数据读取器) 执行SQL命令和存储过程,得到一组由DataReader对象引用的数据行,此过程中一直保持与数据库的连接; 不提供非连接的数据访问; 使用前需创建一个命令对象Command,利用Command对象执行SQL语句或存储过程,返回一个DataReader对象; OleDbDataReader和SqlDataReader对象常用的属性和方法: 1) F

19、ieldCount属性:用来获取当前行中的列数,若未设置在有效的记录集中,返回0,否则返回列数,默认值为-1; 2) Read()方法:该方法将Reader指向当前记录,并将记录指针移到下一行,可使用列名或列的次序访问列值。若到了数据表的最后,则返回布尔值false;,9.5 数据读取对象(DataReader),9.5 DataReader(数据读取器) 3) GetValue()方法:该方法用来指定列的整数索引,从当前行中以固定的格式返回1个或多个值; 4) GetValues()方法:从当前行中以固定的格式将1个或多个数值提取到数组中; 5) NextResult()方法:将当前行的指针

20、移到下一个结果集; 6) Close()方法:关闭DataReader对象,并释放对行集的引用,9.6 DataSet概述,9.6.1 DataSet与DataAdapter DataSet是实现ADO.NET断开式连接的核心,它通过DataAdapter从数据源获得数据后就断开了与数据源之间的连接(这一点与前面介绍过的DataReader对象完全不同),此后应用程序所有对数据源的操作(定义约束和关系、添加、删除、修改、查询、排序、统计等等)均转向到DataSet,当所有这些操作完成后可以通过DataAdapter提供的数据源更新方法将修改后的数据写入数据库。,9.6 DataSet概述,9.

21、6.2 DataSet的组成,9.6 DataSet概述,9.6.3 DataSet中的对象、属性和方法 1. DataSet中的对象 DataSet由大量相关的数据结构组成,其中最常用的有如下5个子对象,其名称及功能说明见表10-1。,9.6 DataSet概述,9.6.3 DataSet中的对象、属性和方法 2. DataSet对象的常用属性 DataSet对象的常用属性,见表10-2。,9.6 DataSet概述,9.6.3 DataSet中的对象、属性和方法 3. DataSet对象的常用方法 DataSet对象的常用方法,见表10-3。,9.7 使用DataSet访问数据库,9.7.

22、1 创建DataSet 创建数据集对象的语法格式为: DataSet 数据集对象名 = new DataSet(); 或: DataSet 数据集对象名 = new DataSet(表名);,9.7 使用DataSet访问数据库,9.7.2 填充DataSet 所谓“填充”是指将DataAdapter对象通过执行SQL语句从数据源得到的返回结果,使用DataAdapter对象的Fill方法传递给DataSet对象。 其常用语法格式如下所示: Adapter.Fill(ds); 或: Adapter.Fill(ds, tablename);,9.7 使用DataSet访问数据库,9.7.3 多结

23、果集填充 DataSet对象支持多结果集的填充,也就是说可以将来自同一数据表或不同数据表中不同的数据集合同时填充到DataSet中。,9.7 使用DataSet访问数据库,9.7.4 添加新记录 通过DataSet向数据表添加新记录的一般方法如下: 1) 建立与数据库的连接。 2) 通过DataAdapter对象从数据库中取出需要的数据。 3) 实例化一个SqlCommandBuilder类对象,并为DataAdapter自动生成更新命令。 4) 使用DataAdapter对象的Fill方法填充DataSet。 5) 使用NewRow()方法向DataSet中填充的表对象中添加一个新行。 6)

24、 为新行中各字段赋值 7) 将新行添加到DataSet中填充的表对象中。 8) 调用DataAdapter对象的Update()方法将数据保存到数据库。,9.7 使用DataSet访问数据库,9.7.5 修改记录 通过DataSet修改现有数据表记录的操作方法与添加新记录非常相似,唯一不同的地方是无需使用NewRow()添加新行,而是创建一个DataRow对象后,从表对象中获得需要修改的行并赋给新建的DataRow对象,根据需要修改各列的值(为各字段赋以新值)。最后仍需要调用DataAdapter对象的Update()方法将更新提交到数据库。,9.7 使用DataSet访问数据库,9.7.6

25、删除记录 使用DataSet从填充的表对象中删除行时需要创建一个DataRow对象,并将要删除的行赋值给该对象,而后调用DataRow对象的Delete()方法将该行删除。当然此时的删除仅是针对DataSet对象的,若需从数据库中删除该行,还需要调用DataAdapter对象的Update()方法将删除操作提交到数据库。,9.8 ADO.NET课题设计,1、题目:学生成绩管理系统设计与实现 2、表结构:(no,name,sex,math,eng,poli,totalscore) 3、功能: (1)设计界面,输入以上字段值,将记录插入数据库中; (2)查询所有学生成绩(以GridView控件显示数据); (3)输入姓名或者学号,显示该生成绩; (4)显示总分超过平均分的学生成绩; (5)删除缺考(totalscore=0)学生记录; (6)更新补考学生记录; 4、要求:(1)ADO.NET编程实现(不能采用SqlDataSource控件);(2)按照软件工程方法设计和实现系统,并提交word打印稿,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1