《第19章_C_数据库编程.ppt》由会员分享,可在线阅读,更多相关《第19章_C_数据库编程.ppt(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、http:/ C#数据库编程数据库编程 http:/ C#数据库编程数据库编程 n数据库技术是所有计算机应用必不可少的一个重要环节。在数据库技术是所有计算机应用必不可少的一个重要环节。在.NET环境下,数据库的访问主要是通过环境下,数据库的访问主要是通过ADO.NET来实现的。来实现的。本章介绍本章介绍C#数据库编程知识,并用实例讲述数据库编程知识,并用实例讲述C#访问常用数访问常用数据库,如据库,如SQL Server、Oracle、Access等的方法。等的方法。n本章教学目的:本章教学目的:n了解了解ADO.NETn掌握应用掌握应用ADO.NET对数据库进行访问的编程技术对数据库进行访问
2、的编程技术n学会学会C#数据库应用程序的设计数据库应用程序的设计http:/ C#数据库编程数据库编程 n19.1 ADO.NET 数据库访问数据库访问 n19.2 ADO.NET访问常用数据库访问常用数据库 n19.3 C#数据库的数据库的Windows编程编程 n19.4 C#数据库的数据库的Web编程编程 http:/ ADO.NET 数据库访问数据库访问u 19.1.1 ADO.NET概述概述 u 19.1.2 ADO.NET的数据访问对象的数据访问对象 http:/ ADO.NET 数据库访问数据库访问http:/ ADO.NET概述概述 nActiveX Data Objects.
3、NET(简称简称ADO.NET)是微软设计的一种新的数据库访是微软设计的一种新的数据库访问技术。问技术。ADO.NET并非是并非是ADO的升级版,同以往的数据库访问技术相比,的升级版,同以往的数据库访问技术相比,ADO.NET有很多数据处理的优势。首先有很多数据处理的优势。首先ADO.NET提供了对提供了对XML的强大支持,的强大支持,可以通过可以通过XMLReader、XMLWriter、XMLNavigater和和 XMLDocument等方等方便地创建和使用便地创建和使用XML数据;其次数据;其次ADO.NET是为关系数据访问和非关系数据访问是为关系数据访问和非关系数据访问设计的数据连接
4、模型,它可以实现对数据源的非连接处理;另外设计的数据连接模型,它可以实现对数据源的非连接处理;另外ADO.NET新增新增了一些对象,如了一些对象,如DataReader可以产生一个只读的记录集,用来实现快速读取数可以产生一个只读的记录集,用来实现快速读取数据。据。nADO.NET的最突出的特性是可以采用非连接的方式访问和处理数据,这是的最突出的特性是可以采用非连接的方式访问和处理数据,这是ADO所没有的所没有的(ADO只能采用连接的方式访问和处理数据只能采用连接的方式访问和处理数据)。ADO采用基于连接的方式采用基于连接的方式处理数据库的最大不足就是它耗费了太多的资源,尤其当在网络环境下时,大
5、量处理数据库的最大不足就是它耗费了太多的资源,尤其当在网络环境下时,大量用户同时访问数据库会给数据库服务器造成很大的负担。用户同时访问数据库会给数据库服务器造成很大的负担。ADO.NET只在必要的只在必要的时候对数据库进行连接,当处理完毕后它将及时关闭连接,这就保证了数据库服时候对数据库进行连接,当处理完毕后它将及时关闭连接,这就保证了数据库服务器资源的可用性,使它可以为更多的用户服务,因此也就更加适合网络应用。务器资源的可用性,使它可以为更多的用户服务,因此也就更加适合网络应用。http:/ ADO.NET概述概述n1.ADO.NET构架nADO.NET的体系结构如图的体系结构如图19.1所
6、示。所示。nADO.NET具有两大核心组件:具有两大核心组件:DataSet数据集和数据集和.NET Data Provider数据提供程序。数据提供程序。.NET Data Provider中包括中包括Connection对象、对象、Command对象、对象、DataReader对象和对象和DataAdapter 对象。对象。Connection对象用来和数据源进行连接;对象用来和数据源进行连接;Command对象可以用来从对象可以用来从数据库中返回数据、修改数据或运行存储过程;数据库中返回数据、修改数据或运行存储过程;DataReader对象则提对象则提供了对数据库的快速只读、前向访问功能
7、;供了对数据库的快速只读、前向访问功能;DataAdapter 对象是数据对象是数据源和数据集源和数据集DataSet对象交换数据的桥梁,它负责将数据库中的数据填对象交换数据的桥梁,它负责将数据库中的数据填充到充到DataSet对象中。对象中。http:/ ADO.NET概述概述图19.1 ADO.NET的体系结构http:/ ADO.NET概述概述n2.ADO.NET连接数据源的方式n曾经使用过曾经使用过ADO的读者都知道的读者都知道ADO对象中比较重要的一个对象是记录集对象中比较重要的一个对象是记录集Recordset对象。对象。Recordset对象用记录集保存从数据库中返回的数据,对象
8、用记录集保存从数据库中返回的数据,ADO缓存中的数据是由一条条记录构成的记录集。缓存中的数据是由一条条记录构成的记录集。ADO把把记录集当作一个表,对数据库的操作就演化为对该表的操作。如果记录集的内容来自多个数据库表,还记录集当作一个表,对数据库的操作就演化为对该表的操作。如果记录集的内容来自多个数据库表,还必须使用关联查询把它们合并到一个表中。必须使用关联查询把它们合并到一个表中。n与与ADO中的中的Recordset对象对应,在对象对应,在ADO.NET中提供了一个数据集中提供了一个数据集DataSet对象,它取代了对象,它取代了Recordset对象的位置。对象的位置。ADO.NET就是
9、使用数据集就是使用数据集DataSet对象实现了对数据库数据的非连接处理。对象实现了对数据库数据的非连接处理。n数据集数据集DataSet对象可以理解为一个本地的小型数据库。数据集模型包含一个由单个或多个数据表对象可以理解为一个本地的小型数据库。数据集模型包含一个由单个或多个数据表(DataTable)组成的集合,而组成的集合,而DataTable又由许多行又由许多行(DataRow)和列和列(DataColumn)组成。组成。DataSet对象对象中还包含一个中还包含一个DataRelation对象的集合,用它来表示各个数据表之间的关系,数据集结构如图对象的集合,用它来表示各个数据表之间的关
10、系,数据集结构如图19.2所所示。示。n数据集包含了用户请求的那部分数据库在内存中的备份。这个备份甚至能包含多个表以及表之间的关系数据集包含了用户请求的那部分数据库在内存中的备份。这个备份甚至能包含多个表以及表之间的关系的整个数据库。所以对于数据集对象的访问类似于对数据库的访问,即数据集提供了被访问数据库的非的整个数据库。所以对于数据集对象的访问类似于对数据库的访问,即数据集提供了被访问数据库的非连接备份连接备份离线备份,这相当于直接给出了处理数据库的情境,也就是说,给用户的感觉是数据集与离线备份,这相当于直接给出了处理数据库的情境,也就是说,给用户的感觉是数据集与数据源是直接连接的。数据源是
11、直接连接的。nADO.NET连接数据源机制是:首先通过数据提供程序中的连接数据源机制是:首先通过数据提供程序中的Connection对象连接数据源,然后由对象连接数据源,然后由DataAdapter对象用数据库的数据填充数据集,并通过对象用数据库的数据填充数据集,并通过Command和和DataReader对象对数据集中的对象对数据集中的数据进行各种操作,最后把对数据源数据的更新返回数据源,如图数据进行各种操作,最后把对数据源数据的更新返回数据源,如图19.1所示。这种连接机制可以避免所示。这种连接机制可以避免多重写入和多重读出。多重写入和多重读出。n可见数据集是通过无关联对象访问数据库信息的
12、,实现了连接对象与数据对象的相对独立。数据集的缺可见数据集是通过无关联对象访问数据库信息的,实现了连接对象与数据对象的相对独立。数据集的缺点是要求高速缓存大量的数据,如当需要将表中的所有数据送入数据集时。点是要求高速缓存大量的数据,如当需要将表中的所有数据送入数据集时。http:/ ADO.NET概述概述图19.2 数据集结构http:/ ADO.NET概述概述n3.ADO.NET数据访问接口nADO.NET数据提供程序为应用程序开发提供多层非连接模式,它帮助建立数据集和数据数据提供程序为应用程序开发提供多层非连接模式,它帮助建立数据集和数据源之间的连接。源之间的连接。ADO.NET提供了两套
13、数据提供程序,它们是提供了两套数据提供程序,它们是SQL Server.NET 数据提供数据提供程序(程序(System.Data.SqlClient命名空间)和命名空间)和OLE DB.NET数据提供程序数据提供程序(System.Data.OleDb命名空间命名空间)。每种数据提供程序都包含一组构成。每种数据提供程序都包含一组构成ADO.NET构架的类。构架的类。nSQL Server.NET 数据提供程序属于数据提供程序属于System.Data.SqlClient命名空间,它提供一组对命名空间,它提供一组对象来建立数据集的表和象来建立数据集的表和SQL Server数据库中的表之间的联
14、系,其对象名称以数据库中的表之间的联系,其对象名称以Sql前缀加前缀加.NET数据提供程序对象名,如数据提供程序对象名,如SqlConnection、SqlDataAdapter等。等。SQL Server.NET 数据提供程序具有自己的一套访问数据提供程序具有自己的一套访问SQL Server数据库的协议,对访问数据库的协议,对访问SQL Server数据库数据库提供了特殊的优化。提供了特殊的优化。nOLE DB.NET数据支持程序是用来建立数据集中的表与数据支持程序是用来建立数据集中的表与OLE DB数据源之间的连接,其对数据源之间的连接,其对象名称以象名称以OleDb前缀加前缀加.NET
15、数据提供程序对象名,如数据提供程序对象名,如OleDbConnection、OleDbDataAdapter等,它需借助等,它需借助OLE DB 服务组件和数据库的服务组件和数据库的OLE DB支持供程序来访支持供程序来访问数据库,由于需要通过一些中间层,因此在性能上有些损失。如果访问问数据库,由于需要通过一些中间层,因此在性能上有些损失。如果访问Microsoft SQL Server 7.0及以上的数据库系统使用及以上的数据库系统使用SQL Server.NET 数据支持程序更佳,而如果访问数据支持程序更佳,而如果访问Microsoft SQL Server 6.5或较早的数据库系统,或那
16、些提供有符合条件的或较早的数据库系统,或那些提供有符合条件的OLE DB数据数据提供程序的数据库系统使用提供程序的数据库系统使用OLE DB.NET 数据提供程序更好。数据提供程序更好。http:/ ADO.NET的数据访问对象的数据访问对象 nADO.NET使用了某些使用了某些ADO的对象,如的对象,如Connection和和Command对象,并且还引入了新的对象。对象,并且还引入了新的对象。ADO.NET增加的新对象包括增加的新对象包括DataSet、DataReader和和DataAdapter。使用。使用ADO.NET访问数据库离访问数据库离不开对不开对DataSet对象和对象和.N
17、ET数据提供程序中的对象的操作,以下一一介绍它们的作用和使用方法。数据提供程序中的对象的操作,以下一一介绍它们的作用和使用方法。n1.DataSet(数据集)对象nDataSet(数据集数据集)对象是对象是ADO.NET对象模型中最核心的对象。一个对象模型中最核心的对象。一个DataSet(数据集数据集)对象就是一个记对象就是一个记录集的集合,它相当于数据缓冲区。录集的集合,它相当于数据缓冲区。ADO.NET框架提供了记录集的所有数据库功能:排序、分页、过框架提供了记录集的所有数据库功能:排序、分页、过滤视图、关系、索引和主键。滤视图、关系、索引和主键。nDataSet 对象与对象与ADO的的
18、Recordset 对象相似,但功能更为强大,对象相似,但功能更为强大,ADO的一个重要区别就是的一个重要区别就是DataSet 始终与数据源是断开的。始终与数据源是断开的。DataSet 对象表示数据的缓存,具有类似数据库的结构,如表、列、关系和对象表示数据的缓存,具有类似数据库的结构,如表、列、关系和约束。但是,尽管约束。但是,尽管 DataSet 可以并且的确像数据库那样运行,但可以并且的确像数据库那样运行,但DataSet 对象不直接与数据或其他源对象不直接与数据或其他源数据进行交互。这使得开发人员能够使用始终保持一致的编程模型,而不用理会源数据的驻留位置。所数据进行交互。这使得开发人
19、员能够使用始终保持一致的编程模型,而不用理会源数据的驻留位置。所有来自于数据库、有来自于数据库、XML 文件、代码或用户输入的数据都可添加到文件、代码或用户输入的数据都可添加到 DataSet 对象中。这样,当对对象中。这样,当对 DataSet 进行了更改,则在更新源数据之前可以对这些更改进行跟踪和验证。进行了更改,则在更新源数据之前可以对这些更改进行跟踪和验证。DataSet 对象的对象的 GetChanges 方法实际上是创建了另一个方法实际上是创建了另一个DatSet,该,该DatSet只包含对数据做出的更改,然后只包含对数据做出的更改,然后DataAdapter(或其他对象或其他对象
20、)使用此使用此 DataSet 来更新原始的数据源。来更新原始的数据源。nDataSet 具有许多具有许多 XML 特性,包括生成和使用特性,包括生成和使用 XML 数据和数据和 XML 架构的能力。架构的能力。XML 架构可以用来描架构可以用来描述通过述通过 WebServices 交换的架构。实际上,为了类型安全和语句结束,可以对带有架构的交换的架构。实际上,为了类型安全和语句结束,可以对带有架构的 DataSet 进行编译。进行编译。nDataSet(数据集数据集)对象的公共属性如表对象的公共属性如表19.1所示。所示。http:/ ADO.NET的数据访问对象的数据访问对象 名 称描
21、述EnforceConstraints获取或设置一个值,该值指示在尝试执行任何更新操作时是否遵循约束规则HasErrors获取一个值,该值指示此DataSet的任何表的任何行中是否有错误Relations获取用于将表链接起来并允许从父表浏览到子表的关系的集合Tables获取包含在 DataSet 中的表的集合表19.1 DataSet(数据集)对象的公共属性http:/ ADO.NET的数据访问对象的数据访问对象 nDataSet(数据集数据集)对象的公共方法如表对象的公共方法如表19.2所示。所示。表19.2 DataSet(数据集)对象的公共方法名 称描 述AcceptChanges提交自
22、加载此DataSet(或上次调用AcceptChanges以来)对其进行的所有更改Clear通过移除所有表中的所有行来清除任何数据的DataSetClone复制DataSet的结构,包括所有 DataTable 架构、关系和约束。不复制任何数据Copy复制该DataSet的结构和数据RejectChanges回滚自创建DataSet以来(或上次调用 DataSet.AcceptChanges 以来)对其进行的所有更改Reset将 DataSet 重置为其初始状态。子类应重写 Reset,以便将 DataSet 还原到其原始状态http:/ ADO.NET的数据访问对象的数据访问对象 n2.Co
23、nnection对象n要访问数据源的数据,首先要做的就是建立与该数据源的连接。要访问数据源的数据,首先要做的就是建立与该数据源的连接。Connection对象就是用来建立与数据库的连接。对象就是用来建立与数据库的连接。Connection对象提供对象提供一些属性用于我们输入与数据源进行连接所需的信息,如数据源所在的一些属性用于我们输入与数据源进行连接所需的信息,如数据源所在的位置、数据库名、连接的用户账号和密码等,它提供的公共属性如表位置、数据库名、连接的用户账号和密码等,它提供的公共属性如表19.9所示。所示。nConnection对象的公共方法如表对象的公共方法如表19.10所示。所示。h
24、ttp:/ ADO.NET的数据访问对象的数据访问对象 名 称描 述UserId获取登录数据库使用的账号Password获取用户的密码Database获取当前数据库或在连接打开后要使用的数据库的名称DataSource获取数据库所在的位置。一般为数据库所在的主机名,如是文件型数据库,则为文件所在的路径和名字State获取连接的当前状态ConnectionTimeout获取连接超时时间表19.9 公共属性 http:/ ADO.NET的数据访问对象的数据访问对象 名 称描 述Close关闭与数据库的连接。这是关闭任何打开连接的首选方法CreateCommand创建并返回一个与 SqlConnec
25、tion 关联的SqlCommand对象Open使用 ConnectionString 所指定的属性设置打开数据库连接表19.10 公共方法http:/ ADO.NET的数据访问对象的数据访问对象 n创建连接对象。可通过调用创建连接对象。可通过调用Open()方法显式打开连接,也可使用方法显式打开连接,也可使用 DataAdapter 隐式打开连接。隐式打开连接。n连接数据源有以下两种方式。连接数据源有以下两种方式。nSqlConnection:建立与支持:建立与支持SQL Managed Provider的数据库的连接。的数据库的连接。nOleDbConnection:建立与支持:建立与支持
26、ADO.NET Managed Provider的数据源的连接。的数据源的连接。n(1)采用采用SQL Managed Provider连接到数据库连接到数据库n/创建数据库连接创建数据库连接nSqlConnection mySqlConnection=new SqlConnection(Server=myservername;Database=mydatabase;nuid=myuser;pwd=mypassword;ConnectionTimeout=30);nmySqlConnection.Open();/打开刚建立的与打开刚建立的与SQL Server数据库的连接数据库的连接nmySq
27、lConnection.Close();/关闭连接关闭连接n(2)采用采用ADO.NET Managed Provider连接到数据源连接到数据源n连接连接Access数据库的语句:数据库的语句:nOleDbConnection myOleDbConnection=new OleDbConnection(Provider=Microsoft.Jet.OLEDB.4.0;nDataSource=mypathmyfile.mdb;ConnectionTimeout=30);nMyOleDbConnection.Open();/打开连接打开连接nMyOleDbConnection.Close();/
28、关闭连接关闭连接http:/ ADO.NET的数据访问对象的数据访问对象 n3.Command对象n当与数据库建立了连接后,就可以用当与数据库建立了连接后,就可以用Command对象用来读取或修改数据源的数据,如进行对数据库数对象用来读取或修改数据源的数据,如进行对数据库数据的增、删、改等数据库操作。该对象包含可应用于数据库的所有操作命令,操作命令也可以是存储过据的增、删、改等数据库操作。该对象包含可应用于数据库的所有操作命令,操作命令也可以是存储过程调用、程调用、Update语句或返回结果的语句。还可将输入和输出参数以及返回值用作命令语法的一部分。语句或返回结果的语句。还可将输入和输出参数以
29、及返回值用作命令语法的一部分。nCommand对象有两种形式:对象有两种形式:nOleDbCommand用于用于ADO Managed Proider支持的数据源。支持的数据源。nSqlCommand用于用于SQL Server数据库。数据库。nCommand对象的公共属性如表对象的公共属性如表19.11所示。所示。nCommand对象的公共方法见表对象的公共方法见表19.12所示。所示。n下面的语句说明如何对数据库发出下面的语句说明如何对数据库发出Insert语句语句(以以sqlCommand为例为例)。nSqlConnection myConnection=new SqlConnectio
30、n(Server=myservername;nDatabase=northwind;uid=myuser;pwd=mypassword);nSqlCommand mySqlCommand=new SqlCommand(Insert into 表名表名(字段名字段名1,字段名字段名2,n字段名字段名3,字段名字段名4,)Values(值值1,值值2,值值3,值值4,),myConnection);nmyConnection.Open();nmySqlCommand.ExecuteNonQuery();nmyConnection.Close();http:/ ADO.NET的数据访问对象的数据访问
31、对象 名 称描 述CommandText获取或设置要对数据源执行的Transact-SQL语句或存储过程CommandTimeout获取或设置在终止执行命令的尝试并生成错误之前的等待时间CommandType获取或设置一个值,该值指示如何解释CommandText属性Connection获取或设置SqlCommand的此实例使用的SqlConnectionParameters获取SqlParameterCollectionUpdatedRowSource获取或设置命令结果在由DbDataAdapter的Update方法使用时如何应用于DataRow表19.11 公共属性http:/ ADO.N
32、ET的数据访问对象的数据访问对象 名 称描 述Cancel试图取消SqlCommand的执行CreateParameter创建SqlParameter对象的新实例ExecuteNonQuery对Connection执行Transact-SQL语句并返回受影响的行数ExecuteReader已重载。将CommandText发送到Connection,并生成一个 SqlDataReaderExecuteScalar执行查询,并返回查询所返回的结果集中第一行的第一列。忽略额外的列或行ResetCommandTimeout将CommandTimeout属性重置为其默认值表19.12 公共方法http:
33、/ ADO.NET的数据访问对象的数据访问对象 n4.DataReader对象n在在ADO技术中,当技术中,当Recordset对象要读对象要读1000行数据库记录时,必须为这行数据库记录时,必须为这1000行记录分配内存,并且一直行记录分配内存,并且一直“连接连接”直至直至连接的生命周期结束。这样,如果有连接的生命周期结束。这样,如果有1000个用户在同一时间对这同一台计算机进行同样的操作,则内存将被过度使用。个用户在同一时间对这同一台计算机进行同样的操作,则内存将被过度使用。为解决这一问题,为解决这一问题,ADO.NET新增了新增了DataReader对象,对象,DataReader对象以
34、只读、只向前的方式提供了一种快速读取数对象以只读、只向前的方式提供了一种快速读取数据库数据的方式,该对象仅与数据库建立一个只读的且仅向前的数据流,并在当前内存中每次仅存放一条记录,所以据库数据的方式,该对象仅与数据库建立一个只读的且仅向前的数据流,并在当前内存中每次仅存放一条记录,所以DataReader对象可用于只需读取一次的数据,即可用于一次性地滚动读取数据库数据。因此,使用对象可用于只需读取一次的数据,即可用于一次性地滚动读取数据库数据。因此,使用DataReader可提可提高应用程序的性能,并减少系统开销。高应用程序的性能,并减少系统开销。n创建创建SqlDataReader对象必须调
35、用对象必须调用 SqlCommand 对象的对象的ExecuteReader方法,下面是它的一些重要的公共属性和方方法,下面是它的一些重要的公共属性和方法。法。nDataReader对象的公共属性如表对象的公共属性如表19.13所示。所示。nDataReader对象的公共方法如表对象的公共方法如表19.14所示。所示。n当创建当创建 Command 对象的实例后,可调用对象的实例后,可调用Command.ExecuteReader 从数据源中检索行,从而创建一个从数据源中检索行,从而创建一个 DataReader对象,如以下示例所示。对象,如以下示例所示。nSqlConnection myCo
36、nnection=new SqlConnection(Server=myservername;Database=northwind;nuid=myuser;pwd=mypassword);nSqlCommand mySqlCommand=new SqlCommand(select*from 表名表名,mySqlConnection);nmySqlConnection.Open();nmyReader=mySqlCommand.ExecuteReader();nDataReader 提供未缓冲的数据流,该数据流使过程逻辑可以有效地按顺序处理从数据源中返回的结果。由于数据不在提供未缓冲的数据流,该
37、数据流使过程逻辑可以有效地按顺序处理从数据源中返回的结果。由于数据不在内存中缓存,所以在检索大量数据时,内存中缓存,所以在检索大量数据时,DataReader 是一种适合的选择。每次使用完是一种适合的选择。每次使用完DataReader对象后都应调用对象后都应调用Close方法。方法。n如果如果Command包含输出参数或返回值,那么在包含输出参数或返回值,那么在 DataReader 关闭之前,将无法访问这些输出参数或返回值。关闭之前,将无法访问这些输出参数或返回值。http:/ ADO.NET的数据访问对象的数据访问对象 名 称描 述Depth获取一个值,该值指示当前行的嵌套深度Field
38、Count获取当前行中的列数IsClosed获取一个值,该值指示数据读取器是否已关闭Item已重载。获取以本机格式表示的列的值。在C#中,该属性为 SqlDataReader 类的索引器RecordsAffected获取执行Transact-SQL语句所更改、插入或删除的行数表19.13 公共属性http:/ ADO.NET的数据访问对象的数据访问对象 名 称描 述Close关闭SqlDataReader对象GetName获取指定列的名称NextResult当读取批处理Transact-SQL语句的结果时,使数据读取器前进到下一个结果Read使 SqlDataReader 前进到下一条记录表1
39、9.14 公共方法http:/ ADO.NET的数据访问对象的数据访问对象 n5.DataAdapter 对象nDataAdapter 对象在对象在 DataSet 与源数据之间起到桥梁的作用。与源数据之间起到桥梁的作用。DataAdapter对象使用对象使用Fill()方法将数据填充到方法将数据填充到DataSet的的DataTable中去,并提供将异动的数据更新到数据源的能力。中去,并提供将异动的数据更新到数据源的能力。n DataAdapter 对象为我们隐藏了与对象为我们隐藏了与Connection和和Command 对象对象沟通的细节。沟通的细节。DataAdapter 使用使用 C
40、onnection 来连接数据源并取出数来连接数据源并取出数据,使用据,使用 Command 对象从数据源中检索数据并将更改保存到数据源对象从数据源中检索数据并将更改保存到数据源中。在使用中。在使用 Microsoft SQL Server 数据库时,使用数据提供程序特定数据库时,使用数据提供程序特定的的 SqlDataAdapter(以及与其关联的以及与其关联的 SqlCommand 和和 SqlConnection)能够提高整体性能。对于其他支持能够提高整体性能。对于其他支持 OLE DB 的数据库,的数据库,则使用则使用 OleDbDataAdapter 对象及其关联对象及其关联 Ole
41、DbCommand 和和 OleDbConnection 对象。对象。nDataAdapter 对象提供了一组属性,用于将数据库中的数据填充至对象提供了一组属性,用于将数据库中的数据填充至DataSet,即将数据从,即将数据从DataSet更新到数据库。下面是它的一些重要的更新到数据库。下面是它的一些重要的公共属性和方法。公共属性和方法。http:/ ADO.NET访问常用数访问常用数据库据库 u 19.2.1 SQL Server 2000 u 19.2.2 Oracle u 19.2.3 Access http:/ ADO.NET访问常用数访问常用数据库据库 n在在C#中数据库访问主要采用
42、中数据库访问主要采用ADO.NET技术,利用技术,利用ADO.NET技术可以访技术可以访问各种类型的数据库,本小节介绍问各种类型的数据库,本小节介绍C#对常用数据库的访问技术。对常用数据库的访问技术。n本小节要介绍的数据库包括以下几个:本小节要介绍的数据库包括以下几个:lSQL Server 2000lOraclelAccessn在数据访问(在数据访问(Data access)中,最主要的也是首先要做的就是建立应)中,最主要的也是首先要做的就是建立应用程序与数据源的连接。本教程对数据库连接方法进行详细讲解。用程序与数据源的连接。本教程对数据库连接方法进行详细讲解。http:/ SQL Serv
43、er 2000 nSQL Server数据库是在数据库是在C#数据库应用程序开发过程常用的数据库应用程序开发过程常用的数据库,可以通过以下方式访问数据库,可以通过以下方式访问SQL Server数据库:数据库:lSqlConnection lOleDbConnectionhttp:/ SQL Server 2000 n1.SqlConnectionnSqlConnection是是ADO.NET中专门针对中专门针对SQL Server数据库的访问通道,利用数据库的访问通道,利用SqlConnection方方式访问式访问SQL Server数据比其他方式访问速度更快。数据比其他方式访问速度更快。h
44、ttp:/ SQL Server 2000 n2.OleDbConnectionn根据根据SQL Server数据库身份验证方式的不同对应不同的连接字符串。数据库身份验证方式的不同对应不同的连接字符串。http:/ Oracle nOracle是一个多用户的关系型数据库管理系统,可以运行在多种工作站是一个多用户的关系型数据库管理系统,可以运行在多种工作站和微型计算机上。在大型项目中经常使用和微型计算机上。在大型项目中经常使用Oracle数据库。可以使用以下数据库。可以使用以下方式访问方式访问Oracle数据库:数据库:lOracleConnectionlOleDbConnectionhttp:
45、/ Oracle n1OracleConnectionn在安装了在安装了Oracle数据库的计算机上开发数据库的计算机上开发.NET应用程序,会有应用程序,会有OracleConnection对象。与对象。与SqlConnection类似,类似,OracleConnection是是ADO.NET中专门针对中专门针对Oracle数据库的访问通道。数据库的访问通道。采用采用OracleConnection方式连接方式连接Oracle数据库时,连接字符串如下:数据库时,连接字符串如下:nData Source=MyOracleDB;User Id=myUsername;Password=myPass
46、word;Integrated Security=no;http:/ Oracle n【例例19.3】用用OracleConnection连接连接Oracle数据库数据库nOracleConnection myOracleConnection=new OracleConnection(Data Source=MyOracleDB;User Id=myUsername;Password=myPassword;Integrated Security=no;);nMyOracleConnection.Open();/打开连接打开连接nMyOracleConnection.Close();/关闭连接关
47、闭连接http:/ Oracle n2OleDbConnectionn采用采用OleDbConnection方式连接方式连接Oracle数据库时,连接字符串如下:数据库时,连接字符串如下:nProvider=OraOLEDB.Oracle;Data Source=MyOracleDB;User Id=myUsername;Password=myPassword;n【例例19.4】用用OleDbConnection连接连接Oracle数据库数据库nOleDbConnection myOleDbConnection=new OleDbConnection(Provider=OraOLEDB.Ora
48、cle;Data Source=MyOracleDB;User Id=myUsername;Password=myPassword;);nMyOleDbConnection.Open();/打开连接打开连接nMyOleDbConnection.Close();/关闭连接关闭连接http:/ Access nAccess是是Microsoft Office家族的一个成员之一,它是基于家族的一个成员之一,它是基于SQL的关系型数据库,功能强大、使用方便,常常用于小型的关系型数据库,功能强大、使用方便,常常用于小型项目中。在项目中。在.Net中使用中使用Access数据库只能通过数据库只能通过Ole
49、DbConnection方式连接,连接字符串如下:方式连接,连接字符串如下:nProvider=Microsoft.Jet.OLEDB.4.0;Data Source=somepathmydb.mdb;http:/ Access n【例例19.5】用用OleDbConnection连接连接Access数据库数据库nOleDbConnection myOleDbConnection=new OleDbConnection(Provider=Microsoft.Jet.OLEDB.4.0;nDataSource=mypathmyfile.mdb;);nMyOleDbConnection.Open(
50、);/打开连接打开连接nMyOleDbConnection.Close();/关闭连接关闭连接 即即“Provider=Microsoft.Jet.OLEDB.4.0;DataSource=mypathmyfile.mdb;”http:/ C#数据库的数据库的Windows编程编程 n本节将数据库应用与本节将数据库应用与Windows Forms结合,以讲述结合,以讲述C#数据库的数据库的Windows编程编程技术。编程编程技术。n【例例19.6】在这一节,我们将通过一个小例子来讨论在在这一节,我们将通过一个小例子来讨论在C#中如何应用中如何应用ADO.NET对数据库对数据库进行基本操作:添加