《2022年C#数据库操作 2.pdf》由会员分享,可在线阅读,更多相关《2022年C#数据库操作 2.pdf(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、11.3 ADO.NET概念ADO.NET是由很多类组成的类库,这些类提供了许多对象,分别用来实现连接数据库,查询数据, 插入数据, 更新数据和删除数据等操作。ADO.NET提供了下面两种访问数据库的方法(1)利用 Connection ,Command 和 DataReader 对象访问数据库。这种方式只能从数据库读取数据,不能添加,修改和删除基类。如果只是进行查询,这种方式效率更高一些(2)利用 Connection,Command,DataAdapter 和 DataSet 对象。这种方式比较灵活,不仅可以读取数据库进行查询操作。还可以进行添加,删除和修改等操作。另外, ADO.NET对
2、象模型主要由两个基本组件构成;一个是ADO.NET数据库提供程序,用于连接到数据库,执行命令和检查结果;另一个是数据集(DataSet) ,DataSet 对象是支持ADO.NET的断开式,分布式数据方案的核心对象。1 .NET Data Provider .NET 数据提供者是指存取数据源的一组类库,主要是为了统一各类型数据源的存取方式而设计出一套高效类库。在 .NET Data Provider中包括了下表四个对象对象名称功能说明Connection 提供和数据源的连接功能Command 提供存取数据库命令,并执行传送数据或修改数据的命令,例如执行 SQL命令,预存程序。DataAdapt
3、er 担任DataSet 对象和数据源间的桥梁。DataAdapter使用四个Command 对象执行查询,新增,修改,删除的SQL命令,把数据加载 DataSet,或者把DataSet 内的数据更新返回数据源。DataReader 通过 Command 对象执行SQL查询命令取得数据流,以便进行高速,只读的数据浏览功能DataSet 该对象可视为一个虚拟的数据源。在该对象中,存在着许多DataTable 对象。 DataTable对象可以看作一个内存中的Table,开发人员可以自定义Table 中的栏目来在显示数据,也可以通过将不同数据源的数据存在不同DataTable 对象的方式将这些数据
4、整合在一起。11.4 ADO.NET对象不同的数据提供程序会由于其所用的数据库技术不同而有不同的实现方式。它们提供了对底层数据源的访问,包括四个数据对象,其分别是Connection 对象, Command 对象,DataReader 对象和 DataAdapter 对象。11.4.1 Connection 对象Connection 对象用于连接到数据源。ADO.NET中包括 OleDbConnection 和 SqlConnection等对象,前者用来连接基于OLE DB的数据库,后者专门用来连接SQL Server数据库。(1)使用 SqlConnection 对象连接到SQL Serve
5、r数据库连接到数据库是访问数据库的第一步,可以使用下面的语句连接到SQL Server 的 pubs数据库名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 31 页 - - - - - - - - - String ConnectionString= “server=( local) ;uid=sa;pwd=;database=pubs” ;如果是 Windows 身份验证时;则连接字符串具有如下形式Data Source=( local) ;Initial Catalog
6、=数据库名; Integrated Security=True ;SqlConnection MyConnection=new SqlConnection (ConnectionString )其中,ConnectionString 变量存储了访问数据库的各种信息,server 用于指定运行SQL Server的服务器; uid 和 pwd 分别指定登录到SQL Server服务器的用户名和密码;database 指定数据库名, MyConnection 变量为 SqlConnection 类型的变量,代表了实际的连接对象(3)使用 OleDbConnection 对象连接到OLE数据源进行数
7、据库的连接需要使用连接字符串,连接OLE DB数据库(以Access数据库为例)的 Connection 对象的语句为String ConnectionString= “Provider=Microsoft.Jet.OLEDB.4.0 ” ;Data Source=“文件路径及文件名” ;如果数据库使用Access 2007版本编写的时候连接字符串改为String ConnectionString= “Provider= Microsoft.ACE.OLEDB.12.0” ;Data Source=“文件路径及文件名” ;(1)注意 Data Source 要分开写即中间要留有空格OleDbC
8、onnection MyConnection=new OleDbConnection (ConnectionString )其中 Provider 提出了 OLE DB数据库的驱动程序, DataSource 提出 Access数据库文件名的绝对路径。表 17.3 SqlConnection 连接字符串中的常用关键字名称默 认值说明Data Source或Server 或Address或Addr 或NetworkAddress 连接的 SQL Server实例名称或网络地址Initial Catalog 或Database 要连接的数据库名称Integrated Security 或Trust
9、ed_Connection False 当为 false 时,在连接时必须指定SQL Server登录账号和密码Password 或Pwd SQLServer登录账户密码Persist Security Info False 当该值设置为false 或 no 时,如果要连接是打开的或者一直处于打开状态,那么安全信息将不会作为连接的一部分User ID SQL Server登录账户(4)OleDbConnection 与 SqlConnection 对象常用的属性和方法作为连接不同数据库的对象,OleDbConnection 与 SqlConnection 具有同样的属性和方法,如表11.1 和
10、 11.2 所示名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 31 页 - - - - - - - - - 表 11.1 Connection 对象的常用属性属性含义ConnectionString 获取或设置用于打开SQL数据库的字符串ConnectionTimeOut 获取终止尝试连接并生成错误之前所等待的时间DataBase 获取当前数据库或连接打开后要使用的数据库名称DataSource 获取要连接SQL Server实例名称ServerVersion 获取包含
11、客户端要连接的SQL Server实例的版本字符串State 获取或设置连接的当前状态SqlConnection 类的 State 属性表述当前数据库连接状态;其值是一个ConnectionState 枚举类型, ConnectionState 枚举类型共包含6 个值,表示6 种数据库连接状态。(1)Closed:连接处于关闭状态;(2)Connecting:正在与数据源连接;(3)Open:连接处于打开状态;(4)Executing:正在执行命令;(5)Fetching:长在检索数据;(6)Broken:连接中断;表 11.2 Connection 对象的常用方法方法含义Open 打开数据库
12、连接Close 关闭与数据库的连接,这是关闭任何连接的首选方法ChangeDatabase 为打开的SqlConnection 更改当前数据库11.4.2 Command 对象在创建 Connection 对象后,需要创建Command 对象实现对数据库的操作,Command 对象要与对应的连接方式匹配;对SqlConnection 采用 SqlCommand;对 OleDbConnection 则采用 OleDbCommand (1)创建 SqlCommand 对象创建一个SqlCommand 对象的语句为String ConnectionString = server =(local);u
13、id=sa;pwd=;database=pubs; / 创建一个 SqlConnection 对象 SqlConnection MyConnection = new SqlConnection(ConnectionString); / 打开 Connection 对象,以实现对Command 对象的进一步操作 MyConnection.Open(); string SqlString = select * from authors; / 创建一个 SqlCommand 对象 SqlCommand MyCommand = newSqlCommand(SqlString, MyConnection
14、) ;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 31 页 - - - - - - - - - 2)SqlCommand和 OleDbCommand 对象的常用属性和方法 SqlCommand 与 OleDbCommand 对象具有同样的属性和方法,其常用属性和方法如表 11.3 和表 11.4 所示表 11.3 Command 对象的常用属性属性含义CommandText 获取或设置对数据源执行的T-SQL语句或存储过程CommandTimeOut 获取或设置在终止
15、尝试并生成错误之前的等待时间Connection 获取或设置SqlCommand 实例并使用SqlConnection 表 11.4 Command 对象的常用方法方法含义ExecuteReader 将 CommandText 发送到 Connection 并生成一个SqlDataReader ExecuteNonQuery 对连接执行T-SQ语句并返回受影响的行数(成功执行时,返回1,否则返回0;ExecuteScalar 执行查询并返回查询所返回的结果集中第一行的第一列的值。忽略额外的列或行11.4.3 DataReader 对象DataReader 对象提供了一个只读的,单项前移的记录集
16、;使用该对象可以有效地节约内存,因为内存中一次只保存一条记录,而不是将所有记录都装入内存。与DataSet 相比,如果执行纯粹的读操作,DataReader 的速度要快得很多。DataReader对象只能与Command 对象结合使用, 并要与 Command 对象采用的方式相匹配;对SqlCommand 采用 SqlDataReader;对 OleDbCommand 则采用过OleDbDataReader DataReader 对象的常用属性和方法如表11.5 和表 11.6 所示表 11.5 DataReader 对象的常用属性属性含义FieldCount 表明当前记录中的字段数据。为只读
17、属性HasRows 表明是否还有记录未被读取。为只读属性IsClosed 表明 DataReader 对象是否已经关闭,为只读属性GetValue 获取以本地格式表示的指定列的值3 DataReader 常用的属性和方法通过 Command 对象 ExecuteReader 方法执行SQL查询命令,可建立DataReader对象, DataReader 对象内存放着查询结果,可使用下表DataReader 对象的属性与方法逐一取得每条记录或相关字段的数据表 11.6 DataReader 对象常用的方法方法含义Close 完成读取DataReader 对象的查询结果, 可使用这个方法关闭 Da
18、taReader对象FieldCount 属性将从当前DataReader 查询结果中取得的数据记录的字段名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 31 页 - - - - - - - - - 总数返回。若返回值为5,表示该条数据记录共有5 个字段,其字段下标为0-4(字段下标从0 开始)GetDataTypeName(i)用于获取字段的数据类型名,参数i 为字段序数GetName(i)获取字段名,参数i 为字段序数DataReader“ 字段名称 ” 取得字段名称
19、所指的字段数据GetValues(ArrayName) 读 取 记 录 中 所 有 字 段 值 , 并 将 结 果 存 入 数 组 ,参 数ArrayName 为数组名IsDBNull(i)判断某个字段是是否为空值,字段下标从0 开始算起,若没有数据返回true,否则返回false GetValue( i)取得第 i 个字段的数据内容,字段下标从0 开始算起GetOrdinal (“ 字 段 名称” )取得某个字段的下标。0 为第一例Read()先将记录指针移到下一条,并判断记录指针是否指到EOF(文件结束符号) 。若记录指针指到EOF则返回 false;若记录指针没有指到EOF ,则返回Tr
20、ue;并将当前所指的数据记录从数据库中读出来,再将记录指针移到下一条记录文件开始符号文件结束符号BOF 1 2 3 4 5 EOF 如何执行会返回多结果集的数据命令欲执行一个会返回多结果集的数据命令,仍然是调用SqlCommand.ExecuteReader 方法,然后在调用属性NextResult 方法将数据读取器前移下一个结果集。如果有其他结果集,NextResult 方法会返回TRUE ;否则会返回False; 11.4.4 DataAdapter 对象DataAdapter 对象用来把来自特定数据源的信息调整为关系型数据格式,以适应 DataSet对象的需要。 DataAdapter
21、对象的功能很强大,不但负责把DataSet 与关系型数据源联系起来,而且能够自动改变DataSet 的数据结构。DataAdapter 对象与采用的连接方式相匹配:对SqlConnection 采用 SqlDataAdapter;对OleDbConnection 则采用OleDbDataAdapter 。DataAdapter 对象具有的属性和方法如表11.7和表 11.8 所示表 DataAdapter 对象的常用属性属性含义DeleteCommand 获取或设置一个T-SQL语句或存储过程,以从数据集删除记录InsertCommand 获取或设置一个T-SQL语句或存储过程,以在数据源中插
22、入新纪录SelectCommand 获取或设置一个T-SQL语句或存储过程,用于在数据源中选择记录UpdateCommand 获取或设置一个T-SQL语句或存储过程,用于更新数据源中的记录表 11.8 DataAdapter 对象的常用方法方法含义Fill 在 DataSet 中添加或刷新行以匹配数据源中的行(即同时执行SQL语句)(SelectCommand)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 31 页 - - - - - - - - - GetFillPa
23、rameters 获取当执行SQL Select语句时用户设置的参数Update 为 DataSet 中每个插入,已更新或删除的行条用相应的Insert,Update或 Delete 语句( InsertCommand ,DeleteCommand ,UpdateCommand )即更新数据库里面的数据。11.4.5 DataSet 对象DataSet 对象是一个简单,存储在内存的数据库,提供了一个不依赖于数据源而可进行持续编程的模型。一个DataSet 表示整个数据集,包含相互联系,约束和关系等内容。DataSet 包含一个或多个DataTable 对象, DataTable表示来自一个表的
24、行集合。DataTable对象有数据行(DataRow)和数据列(DataColumn) ,以及主键,外键约束和有关DataTable对象中数据的关系信息组成。对 DataSet 对象中数据的操作时通过调用这些子对象的方法完成的。DataSet(数据集)是ADO.NET离线数据存取结构中的核心部分,其功能主要是在内存中暂存并处理各种从数据源中所取回的数据要全面了解DataSet 对象,首先要了解DataTable 对象。利用DataTable 对象和方法可以对 DataTable 中存储的数据信息进行访问。DataTable的常用属性如表11.9 表 11.9 DataTable 对象的常用属
25、性属性含义TableName 用来返回表名Columns 用来返回表所包含所有列,可以用 Columns.Count 表明列数,用 Columns(列序数或列名)具体引用每一列,每一列都是一个DataColumn 对象Rows 用来返回表所包含的所有行(记录),可以像Columns 属性一样用Rows.Count 表名行数,使用Rows(行序数)来引用行,用Rows.Item(列序数或列名)引用行的某列,每一行都是一个DataRow 对象名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第
26、 6 页,共 31 页 - - - - - - - - - 1 .NET Data Provider .NET 数据提供之是指存取数据源的一组类库,主要是为了统一各类型数据源的存取方式而设计出一套高效类库。在.NET Data Provider中包含了下表四个对象对象名称功能说明Connection 提供和数据源的连接功能Command 提供存取数据库命令,并执行传送数据或修改数据的命令,例如执行SQL命令,预存程序。DataAdapter 担任 DataSet 对象和数据源间的桥梁,DataAdapter 使用四个Command 对象来执行查询, 新增,修改,删除的 SQL ,把数据加载Da
27、taSet,或者把 DataSet内的数据更新返回数据源DataSet 通过 Command 对象执行SQL查询命令取得数据流,以便进行高速, 只读的数据浏览功能在上表中,通过Connection 对象可与指定的数据库进行联机。Command 对象用来执行相关的 SQL命令 (Select, Insert, Update, Delete) 。 以读取或修改数据库中的数据。通过 DataAdapter对象内的提供的四个Command 对象进行离线式的数据存取,这四个Command 对象分别是SelectCommand, InsertCommand, UpdateCommand 和 DeleteC
28、ommand 。 其中 SelectCommand用来将数据库中的数据读出并放到DataSet 对象中,以便进行离线式的数据存取,至于其他三个命令对象则是用来将DataSet 对象中的数据修改,并返回数据库中。通过DataAdapter对象的 Fill 方法可以将数据读到DataSet 中,通过Update 方法则可以将DataSet 对象的数据更新到指定的数据库中。至于查询语句,还可以通过Command 对象设置SELECT 查询语句和 Connection 对象设置数据库联机,执行数据查询后取得DataReader 对象,以只读方式进行往下的逐条数据浏览2. DataSet DataSet
29、(数据集)是ADO.NET离线数据存取结构中的核心对象,其功能主要是在内存中暂存并处理各种从数据源中所取回的数据。DataSet其实就是一个存放在内存中的数据暂存区,这些数据必须通过DataAdapter 对象与数据库做数据交换。在DataSet 内部允许同时存放一个或多个不同的数据表(Data Table)对象.NET Framework 内置提供下列两种.NET Data Provider:(1)SQL .NET Data Provider 支持 Microsoft SQL Server 7.0 及 2000 以上的版本,由于它使用自己的通讯协议并且已优化,所以可以直接存取SQL Serv
30、er数据库,而不必使用OLE DB或 ODBC (开放数据库互联)接口,因此执行效率较高。程序中使用SQL.NET Data Provider,则该ADO.NET对象名称前面都要加上Sql,如 SqlConnection,SqlCommand (2)OLE DB.NET Data Provider 支持通过OLE DB 接口来存取像Dbase,FoxPro,Excel,Access ,Oracle,以及SQL Server。 。 。等各种类型数据源。程序中若使用OLE DB.NET Data Provider,则 ADO.NET对象名称前面都要加上OleDb,如 OleDbConnection
31、,OleDbCommand。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 31 页 - - - - - - - - - 第十一章ADO.NET 数据库联机与存取下面只列出ADO.NET常用的命名空间相关说明1System.Data 是 ADO.NET命名空间的核心;大部分是由ADO.NET架构的类组合而成。这些类是Managed 应用程序存取数据的主要方法。它定义了Tables , Rows,Columns,Constraints 和 DataSet 类。由此可知,Da
32、taSet 类位于 System.Data 命名空间,在编写程序时若用到DataSet 类,必须在程序的最开头使用using 语句来引用此命名空间,其写法如下Using System.Data / 引用 ADO.NET基本对象2System.Data.OleDb 这 个 命 名 空 间 允 许 你 联 机 到OLE DB 类 型 的 数 据 源 , 接 受SQL 查 询 和 使 用OleDbDataAdapter 对象的 Fill 方法,该方法用来将数据填入到DataSet 中。3System.Data.SqlClient 这个命名空间允许你联机到SQL Server 7.0 (含)以上版本的
33、数据库,使用该类型可以直接与 SQL Server 联机。若在程序中使用该类型的数据库,必须在程序的开头使用using语句引用此命名空间,其写法如下Using System.Data.SqlClient / 引用 SQL Server数据源的对象在 SQL.NET Data Provider下,所用的 ADO.NET对象名称前面必须加上Sql,如 SqlConnection 下表是 ADO.NET在所属命名空间中各对象命名的对照表System.Data.OleDb System.Data.SqlClient OleDbConnection SqlConnection OleDbCommand
34、SqlCommand OleDbDataReader SqlDataReader OleDbDataAdapter SqlDataAdapter OleObParameter SqlParameter 11.2 如何运用Connection 对象打开,关闭数据库的联机ADO.NET 提供的 Connection 对象,主要用来与数据库建立联机。Connection 对象提供下列两种常用方法; ( 1) Open 方法:用来建立并打开一个数据库的联机( 2) Close方法:将数据库的联机关闭接着介绍ADO.NET架构下,如何引用ADO.NET命名空间,打开和关闭两种不同数据源联机的程序代码引用
35、 System.Data.OleDb 命名空间(适用Access ,Excel等数据库)(1) 引用命名空间Using System.Data Using System.Data.OleDb; (2) 声明 OleDbConnection 连接对象OleDbConnection myConnection ;(3) 声明一个名为conStr 的字符串变量, 用来存放数据库的联机字符串,并指定数据库所在名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 31 页 - - - -
36、- - - - - 的真实路径String conStr conStr=” Provider=Microsoft.Jet.OLEDB.4.0;DataSource=” +数据库真实路径;(4) 建立 OleDbConnection 对象并指定其数据库的联机字符串myConnection=new OleDbConnection (conStr)(5) 使用 Open 方法打开与数据库的联机myConnection.Open(); (6) 完成数据库存取后在使用Close方法关闭与数据库的联机myConnection.Close(); 引用 System.Data.SqlClient(适用于SQL
37、 Server7.0以上版本的数据库)操作方式和上述类似,先声明SqlConnection 对象,再建立SqlConnection 对象,并指定联机的数据库, 最后使用Open 方法打开与数据库的联机,使用 Close方法关闭与数据库联机。但 SqlConnection 及 OleDbConnection 对象的数据库联机字符串写法不一样Using System.Data Using System.Data.SqlClient StringConnectionString = server =(local);uid=sa;pwd=;database=pubs; / 创建一个 SqlConnec
38、tion对象 SqlConnection MyConnection = new SqlConnection(ConnectionString); / 打开 Connection 对象,以实现对Command 对象的进一步操作 MyConnection.Open(); /打开与数据库的联机 MyConnection.Close(); /关闭与数据库的联机以下是 SqlConnection 对象联机字符串的参数设置(1)Server :可指定数据库的服务器名称,IP地址, localhost(代表本机)(2)Database :SQL Server 数据的名称(3)Uid:数据库;连接账号,sa表
39、示 SQL 数据库管理者账号(4)Pwd :数据库连接密码11.3 如何运用DataReader 对象读取数据库上一节已经介绍如何打开与关闭数据库的联机,本节将陆续介绍如何对已联机的数据库,通过 ADO.NET架构内的Command 及 DataReader 对象读取数据库内的数据。(1)Command 对象Command 对象可以让你执行SQL数据库命令,以传送和修改数据,执行存储过程,并且传送或获取参数信息。所以,Command 对象通过SQL命令可以从数据源获取数据,也可以将修改过的数据传回数据源。此对象提供下列两种方法来存取数据库的内容(1)ExecuteReader方法执行 Comm
40、and 对象的 Select 命令,建立一个DataReader 对象进行数据的浏览(2)ExecuteNonQuery 方法名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 31 页 - - - - - - - - - 使用 Command 对象的 ExecuteNonQuery 方法,新增,删除,修改数据库中的数据,也就是说执行SQL语法中的Insert,Delete,Update 命令(2)DataReader 对象使用 DataReader对象可以从数据库中顺向(F
41、orward-only )逐条读取数据流中的数据记录,由于并不是一次将所有数据传向客户端的内存中,因此可以提高应用程序的效率。 DataReader 对象读取数据方式是先通过Connection 对象和数据库联机,再通过 Command 对象的 ExecuteReader方法执行 SQL Select命令获取查询的数据,通过 Command 对象提通过 DataReader对象供的 ExecuteReader方法,的方法,进行数据浏执行 SQL的 Select 查询命令,览,由开头向下逐条建立一个 DataReader对象读取数据库中的数据4如何使用DataReader 读取查询结果若想通过D
42、ataReader 对象读取查询结果, 可以使用重复结果检查记录指针是否已经知道EOF 文件结束符号,若记录指针尚未知道EOF 表示数据没读完,便可使用DataReader的方法和属性,顺向逐一取得每个字段的名称和该方法字段内的数据,若记录指针指到EOF表示数据已经读取完毕,便可结束读取动作。(1)如何通过 DataReader 对象取得数据记录的字段名称利用 For 计次循环配合DataReader 对象的 FieldCount 属性及 GetName 方法取得每列的字段名称,并将字段名称显示在richTextBox1 丰富文本框上:/ 列段的数目For(int i=0; imyDataRe
43、ader.FieldCount;i+) richTextBox1.Text+=myDataReader.GetName(i); (2)如何通过DataReader 对象显示字段数据。有下列两种方式。第一种方式在需要显示所有字段数据时使用,第二种方式是仅显示部分字段内容时使用;(1) 利用 DataReader 对象方法读取数据,通过While。 。 。语句判断记录指针是否指到EOF ?11.4 如何使用DataSet对象来读取数据1 DataSet 对象DataSet 对象可以是ADO.NET的主角,它像是一个内存中数据库,采用离线存取方式;例如:数据可以从应用程序与SQL Server数据库
44、分别安装在不同的主机上,当数据库应用程序要从 SQL Server数据库取数据时, 数据库会将所要的数据全部传送到执行数据库应用程序的计算机( DataSet)中,此时就可与数据库中断联机。当DataSet 中的数据更新完毕后,再重新和数据库进行联机,将所有数据一次更新到数据库中,因此DataSet 执行效率高,适用于多客户端数据存取,但此种方式需耗费较多内存空间。在DataSet 中可以包含一个以上的DataTable对象, DataTable 对象相当于内存中的一个数据表。数据库Connection Command 显示查询结果DataReader 使用Connection对象建立与数据库
45、的联机名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 31 页 - - - - - - - - - 2 DataAdapter 对象DataAdapter 对象是数据库和DataSet之间沟通的桥梁。DataAdapter 对象使用Command对象执行SQL命令,将从数据库获取的数据送到DataSet,此时便可使用DataTable 对象来存取数据表,将DataSet 里面的数据经过处理后再送回数据库。3 如何使用DataAdapter 对象使用下列步骤可以产生名称为
46、“成绩数据表”与“股票行情表”的DataTable 对象(1)建立名称为myDataSet 的 DataSet 对象以及声明myAdapter 适应 DataAdapter 对象:DataSet myDataSet=new DataSet();OleDbAdapter myAdapter ;(2)建立 myAdapter 对象并指定所要执行的SQL命令及要联机的数据库selectCmd=“ Select * from SCORE ” / 查询 SCORE 数据表myAdapter=new OleDbDataAdapter (selectCmd,myConnection ) ;(3)使用 Dat
47、aAdapter 对象的 Fill 方法,将查询结果放到DataSet 对象中。此时 DataSet对象中即会产生一个DataTable对象,该 DataTable 对象会以数据表的方式存放查询结果,所以只要通过DataTable对象即可取得SQL命令查询的数据myAdapter.Fill (myDataSet, “成绩表”) / 成绩表为表的名称注意使用DataAdapter 对象的Update()与 Fill()方法时, Connection 对象会自动与数据库打开联机及关闭联机,因此不必再使用Connection 对象的 Open 及Close 方法来打开与关闭数据库的联机。其程序写法如
48、下(完整程序代码)String connStr=“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=+数据库真实路径” ; OleDbConnection conn;Conn=new OleDbConnection (connStr)DataSet myDataSet=new DataSet() ;OleDbDataAdapter myAdapter ;/ 建立数据库表的DataTable对象selectCmd=“Select * from SCORE “;myAdapter=new OleDbDataAdapter (selectCmd,myConne
49、ction ) ;myAdapter.Fill (myDataSet, “成绩表“) ; / 建立股票行情表的DataTable对象selectCmd=“Select * from Stock “;/ 查询 STOCK 数据表myAdapter=new OleDbDataAdapter (selectCmd,myConnection )myAdapter.Fill(myDataSet, “股票行情表“); 上述程序在DataSet 对象中产生了“成绩表“及”股票行情表“两个DataTable对象也可以通过DataSet 对象提供的Tables集合对象(由DataTable 对象构成),来指定取
50、用哪一个DataTable对象DataTable myDataTable1, myDataTable2;myDataTable1=myDataSet.Tables“成绩表“ myDataTable2=myDataSet.Tables“股票行情表“ 上述程序也可以改用表格编号来取得DataTable对象,Tables集合对象的小标起始为0;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 31 页 - - - - - - - - - DataTable myDataTabl