ADOnET数据库编程(vb版).ppt
1第第12章章 数据库应用的结构与开发环境数据库应用的结构与开发环境 n数据库应用开发概述数据库应用开发概述 n微软数据访问技术的发展历程微软数据访问技术的发展历程 n用用ADO.NET访问数据库访问数据库21 数据库应用开发概述数据库应用开发概述 客户端中间层/中间件数据库32 微软数据访问技术的发展历程微软数据访问技术的发展历程nODBCnODBC的基本概念的基本概念 nODBC的构成的构成 nOLE DBnADOnADO.NET42.1 ODBC概述概述nODBC(Open DataBase Connectivity)的全称是开放数据库互连。通过使用ODBC技术可以访问不同类型的关系数据库。nODBC提出的背景 ODBC技术主要目的是提供一个对数据源的统一访问接口,而不是针对每一种数据库专门编写相应的访问模块。使用ODBC开发DBAP时,应用程序调用的是标准的ODBC函数和SQL语句,数据库的底层操作由各个数据库的驱动程序完成。这样就使DBAP具有很好的适应性和可移植性,并且具备同时访问多种DBMS的能力。5ODBC体系结构体系结构ODBC函数完成哪些工作?函数完成哪些工作?n请求对数据源的连接,获取连接句柄;请求对数据源的连接,获取连接句柄;n指定事务控制方式;指定事务控制方式;n定义接收结果的数据区;定义接收结果的数据区;n向数据源发送向数据源发送SQL语句;语句;n接收接收SQL的查询结果;的查询结果;n处理出错信息,并将出错信息返回给应用程序;处理出错信息,并将出错信息返回给应用程序;n终止对数据源的连接。终止对数据源的连接。驱动程序管理器的工作驱动程序管理器的工作n安装指定的驱动程序;安装指定的驱动程序;n定定义义数数据据源源,并并把把数数据据源源映映射射到到具具体体的的ODBC驱动程序上驱动程序上;n为为每每个个驱驱动动程程序序提提供供ODBC函函数数的的入入口口点;点;n为为ODBC调用提供参数验证等。调用提供参数验证等。ODBC驱动程序的具体任务驱动程序的具体任务n建立与数据源的连接;建立与数据源的连接;n向数据源提交向数据源提交SQL请求;请求;n处理查询结果;处理查询结果;n将将数数据据源源错错误误转转换换为为标标准准错错误误代代码码,并并返返回回给给应用程序;应用程序;n提交事务的开始请求、完成请求和撤消请求等。提交事务的开始请求、完成请求和撤消请求等。9举例举例n配置配置ODBC数据源数据源102.2 ADO.NETnADO.NET是在.net中结合数据库的规范。nADO.NET是微软为解决Web和分布式应用程序的问题而设计的,是ADO的后续技术。nADO.NET是在.net framework平台上以托管代码建立的,具有托管代码的类型安全、内存管理等特点,更健壮。n可以使用 ADO.NET 的两个组件来访问和处理数据:n.NET Framework 数据提供程序(.net data provider)nDataSet.NET Framework 数据提供程序数据提供程序n.NET Framework 数据提供程序是专门为数据处数据提供程序是专门为数据处理以及快速地只进、只读访问数据而设计的组件理以及快速地只进、只读访问数据而设计的组件n四个核心对象:四个核心对象:nConnection 对象提供与数据源的连接。对象提供与数据源的连接。nCommand 对象使您能够访问用于返回数据、修改数对象使您能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库据、运行存储过程以及发送或检索参数信息的数据库命令。命令。nDataReader 从数据源中提供高性能的数据流。从数据源中提供高性能的数据流。nDataAdapter 提供连接提供连接 DataSet 对象和数据源的桥梁对象和数据源的桥梁n另外还有:另外还有:DataSet,DataView对象。对象。1112命名空间命名空间nSystem.Data:nSystem.Data.SqlClient:专为sql server 而设的命名空间,可在sql server 数据库进行处理操作。13nnXxxConnectionXxxConnectionnnSqlConnectionSqlConnectionnnOleDbConnectionOleDbConnectionnnXxxCommandXxxCommandnnSqlCommandSqlCommandnnOleDbCommandOleDbCommand数据供应商命名空间SQL Server.NET Provider System.Data.SqlClientOLE DB.NET ProviderSystem.Data.OleDbnnXxxDataReaderXxxDataReadernnSqlDataReaderSqlDataReader,OleDbDataReaderOleDbDataReadernnXxxDataAdapterXxxDataAdapternnSqlDataAdapterSqlDataAdapternnOldDbDataAdapterOldDbDataAdapter.NET Framework 数据提供程序的核心类数据提供程序的核心类DataSetnADO.NET DataSet 专门为独立于任何数据源的专门为独立于任何数据源的数据访问而设计。因此,它可以用于多种不同的数据访问而设计。因此,它可以用于多种不同的数据源,用于数据源,用于 XML 数据,或用于管理应用程序数据,或用于管理应用程序本地的数据。本地的数据。nDataSet 包含一个或多个包含一个或多个 DataTable 对象的集合,对象的集合,这些对象由数据行和数据列以及有关这些对象由数据行和数据列以及有关 DataTable 对象中数据的主键、外键、约束和关系信息组成。对象中数据的主键、外键、约束和关系信息组成。14数据库数据库常用ADO.NET对象 ConnectionCommandDataReaderDataAdapter管理到特定数据源的连接管理到特定数据源的连接 从数据源中执行命令从数据源中执行命令 将数据保存在与数据库分开的缓存中将数据保存在与数据库分开的缓存中提供了对只读数据的高效访问提供了对只读数据的高效访问在数据库和数据集之间交换数据在数据库和数据集之间交换数据Command16ADO.NET组件结构模型1说明说明.NET Framework 数据提供程序与数据提供程序与 DataSet 之间的关系之间的关系ADO.NET组件结构模型2n.NET数据访问对象模型基于两个基础对象:数据访问对象模型基于两个基础对象:nDataReader:对数据进行向前和只读访问;:对数据进行向前和只读访问;nDataSet:从同一个数据源中保存多个表以及它们:从同一个数据源中保存多个表以及它们之间的关系。之间的关系。ADO.NET组件结构模型2非连接环境非连接环境连接环境连接环境3 用用ADO.NET访问数据库访问数据库 案例使用语言nVisual Studio 2005 简介简介n数据库编程的一般步骤数据库编程的一般步骤n连接环境下的数据访问(连接环境下的数据访问(DataRead)n非连接环境下的数据访问(非连接环境下的数据访问(DataSet)3.1 Visual Studio 2005 简介简介n演示演示3.2 数据库编程的一般步骤数据库编程的一般步骤n连接环境连接环境n非连接环境非连接环境22(1)连接环境下的步骤 DataReader对象n使用Connection对象创建数据连接n使用Command对象对数据源执行SQL命令并返回结果n使用DataReader对象读取数据源n和控件结合使用,达到可视化效果n关闭DataReader对象n断开和数据库服务器的连接(2)非连接的环境下的步骤 DataSet对象n使用Connection对象创建数据连接n使用DataAdapter对象对数据源执行SQL命令并返回结果(本质是通过command对象执行SQL命令并返回结果)。n使用DataSet对象读取数据源。n和控件结合使用,达到可视化效果n断开和数据库服务器的连接24连接到数据库连接到数据库 请求特定的数据请求特定的数据 返回数据返回数据 更新传回到数据库更新传回到数据库显示和修显示和修改数据改数据数据库数据库 关闭连接关闭连接 在许多应用程序中,用户访问数据后连接即在许多应用程序中,用户访问数据后连接即关闭,在用户再次访问数据库时连接再重新打开关闭,在用户再次访问数据库时连接再重新打开253.3 连接环境下的数据访问 DataReader对象n在连接环境中,用户可以持续地连接到数据源n优点:n更安全,更易维护 n更容易控制并发访问n与非连接环境相比,数据刷新更及时 n缺点:n必须有固定的数据库连接 n扩展性不强 263.3 连接环境下的数据访问 DataReader对象SQL Server 2005 在连接的环境中,资源存储在连接的环境中,资源存储在连接的环境中,资源存储在连接的环境中,资源存储在服务器上,直到断开连接在服务器上,直到断开连接在服务器上,直到断开连接在服务器上,直到断开连接SqlConnectionSqlCommandSqlDataReader273.3.1 Connection对象n使用数据之前,必须首先使用Connection对象建立数据库服务器与应用程序之间的连接通讯。n建立连接时需要指定:n服务器类型n数据源(服务器名字、数据库名字)n安全信息(登录的帐户名、密码)n使用Connection类的 ConnectionString 属性指定这些信息。实例实例1:连接:连接SQL Server数据库数据库 SQL 授权用户授权用户 导入命名空间Imports System.Data 创建连接对象Dim sqlconn As New SqlConnection()设置ConnectionString属性sqlconn.ConnectionString=Data Source=(local);Initial Catalog=订货管理;User ID=sa;Password=123;“打开连接sqlconn.open()关闭连接Sqlconn.close()DataSource:服务器名称服务器名称Initial Catalog:数据库名称数据库名称User ID:SQL Server帐户名称帐户名称Password:SQL Server帐户口令帐户口令SQL授权用户授权用户实例1:连接SQL Server数据库 Windows授权用户 导入命名空间Imports System.Data 创建连接对象Dim sqlconn As New SqlConnection()设置ConnectionString属性sqlconn.ConnectionString=Data Source=(local);Initial Catalog=订货管理;Integrated Security=True;“打开连接sqlconn.open()关闭连接Sqlconn.close()DataSource:服务器名称服务器名称Initial Catalog:数据库名称数据库名称Integrated Security:是否为:是否为windows授权用户授权用户Windows授权用户授权用户3.3.1 Connection对象属性描述ConnectionString获取或设置用来打开数据库的连接字符串Connection 类的基本属性类的基本属性3.3.1 Connection对象方法描述Open()使用ConnectionString 属性中的信息,建立一个和数据库服务器的连接Close()断开和数据库服务器的连接注意:断开和服务器的连接很重要,否则会一直占用资源。Connection类的基本方法类的基本方法 导入命名空间导入命名空间Imports System.DataImports Dim sqlconn As New SqlConnection()sql模式模式 sqlconn.ConnectionString=Data Source=(local);Initial Catalog=订货管理订货管理;User ID=sa;Password=Db2005;windows 集成模式集成模式 sqlconn.ConnectionString=Data Source=(local);Initial Catalog=订货管理订货管理;Integrated Security=True;捕获异常捕获异常 Try sqlconn.Open()打开连接打开连接 MessageBox.Show(连接成功连接成功)Catch ex As SqlException 处理异常处理异常 MessageBox.Show(ex.Message)Finally sqlconn.Close()End Try带有异常处理的完整实例带有异常处理的完整实例3.3.2 Command对象n在已经打开的在已经打开的Connection对象上执行对象上执行SQL语句、语句、存储过程。存储过程。实例实例2Form2 导入命名空间导入命名空间Imports System.Data 创建连接对象创建连接对象Dim sqlconn As New SqlConnection()设置设置ConnectionString属性属性sqlconn.ConnectionString=Data Source=(local);Initial Catalog=订货管理订货管理;Integrated Security=True;“定义定义sql语句语句Dim sqlStr As String=insert into 订购单订购单 values(E1,S4,OR63,2007/6/2)“创建创建sqlcomm对象对象Dim sqlcomm As new SQLCommand()sqlcomm.Connection=sqlconnsqlcomm.CommandText=sqlStrsqlconn.open()打开连接打开连接sqlcomm.ExecuteNonQuery()执行执行SQL语句语句MessageBox.Show(插入成功插入成功)Sqlconn.close()关闭连接关闭连接3.3.2 Command对象属性描述Connection获取或设置获取或设置Command对象所要使用的数据对象所要使用的数据连接连接CommandText获取或设置欲对数据源执行的获取或设置欲对数据源执行的SQL命令命令 CommandType获取或设置如何解释获取或设置如何解释CommandText属性代属性代表的意义。表的意义。StoredProcedure,TableDirect,Text,默认为默认为Text。Command 类的基本属性类的基本属性3.3.2 Command对象方法描述ExecuteNonQuery()执行执行CommandText属性指定的内容,并返属性指定的内容,并返回被影响的行数。回被影响的行数。ExecuteReader()执行执行CommandText属性指定的内容,并创属性指定的内容,并创建建SqlDataReader对象。对象。Command 类的基本方法类的基本方法实例实例3 与控件结合与控件结合Form3 导入命名空间Imports System.Data 创建连接对象Dim sqlconn As New SqlConnection()设置ConnectionString属性sqlconn.ConnectionString=Data Source=(local);Initial Catalog=订货管理;Integrated Security=True;“定义sql语句Dim sqlStr As String 创建sqlcomm对象Dim sqlcomm As new SQLCommand()Dim eId,sId,orId,orDate As String eId=T1.Text sId=T2.Text orId=T3.Text orDate=T4.Text sqlStr=insert into 订购单订购单 values(+eId+,+sId+,+orId+,+orDate+)sqlcomm.Connection=sqlconnsqlcomm.CommandText=sqlStrMessageBox.Show(sqlStr)sqlconn.open()打开连接sqlcomm.ExecuteNonQuery()执行SQL语句MessageBox.Show(插入成功)Sqlconn.close()关闭连接说明:注意说明:注意sql语句符号问题语句符号问题思考思考n如何进行修改和删除操作?如何进行修改和删除操作?思考思考n进行查询操作时,进行查询操作时,Command执行完执行完ExecuteReader()方法后,查询结果如何存放?方法后,查询结果如何存放?3.3.3 DataRead对象nDataReader对象是用来读取数据源最简单的方式对象是用来读取数据源最简单的方式n只能读取数据,不能写入数据n将数据源将数据源从头到尾依次读出,无法只读取某条数据。,无法只读取某条数据。nDataReader则在比较传统的则在比较传统的连接模式下工作。下工作。n在数据访问在数据访问速度方面方面优于DataSet对象对象3.3.3 DataRead对象n使用使用DataReader对象读取数据库的步骤(连接环境)对象读取数据库的步骤(连接环境)n使用使用Connection对象创建数据连接对象创建数据连接n使用使用Command对象对数据源执行对象对数据源执行SQL命令并返回结果命令并返回结果n使用使用DataReader对象读取数据源对象读取数据源n和控件结合使用,达到可视化效果和控件结合使用,达到可视化效果n关闭关闭DataReader对象对象n断开和数据库服务器的连接断开和数据库服务器的连接 导入命名空间Imports System.Data 创建连接对象Dim sqlconn As New SqlConnection()设置ConnectionString属性sqlconn.ConnectionString=Data Source=(local);Initial Catalog=订货管理;Integrated Security=True;“定义sql语句 Dim sqlStr As String=select*from 订购单订购单 Dim sqlcomm As New SqlCommand()Dim sqldr As SqlDataReader sqlcomm.Connection=sqlconn sqlcomm.CommandText=sqlStrsqlconn.Open()打开连接sqldr=sqlcomm.ExecuteReader()MessageBox.Show(查询成功)sqldr.Close()关闭关闭sqlDataReader对象对象sqlconn.Close()关闭连接实例实例4Form4查询结果如何显示在窗口中呢查询结果如何显示在窗口中呢?实例实例5:与控件结合:与控件结合Form5Imports System.Data 创建连接对象创建连接对象 Dim sqlconn As New SqlConnection()设置设置ConnectionString属性属性()sqlconn.ConnectionString=Data Source=(local);Initial Catalog=订货管订货管理理;Integrated Security=True;Dim sqlcomm As New SqlCommand()Dim sqldr As SqlDataReader Dim eId,sId,orId,orDate As String orId=TextBox1.Text sqlcomm.Connection=sqlconn sqlcomm.CommandText=select*from 订购单订购单 where 订购单号订购单号=+orId+sqlconn.Open()打开连接打开连接 sqldr=sqlcomm.ExecuteReader()While(sqldr.Read()eId=sqldr.GetValue(0)sId=sqldr.GetValue(1)orDate=sqldr.GetValue(3)向向listview中插入一条记录中插入一条记录 Dim item1 As New ListViewItem(eId)item1.SubItems.Add(sId)item1.SubItems.Add(orId)item1.SubItems.Add(orDate)ListView1.Items.Add(item1)End While sqldr.Close()sqlconn.Close()关闭连接关闭连接DataReader对象的基本属性对象的基本属性属性描述FieldCount获取字段数目,若获取字段数目,若DataReader对象没有任何行,对象没有任何行,则返回则返回0。IsClosed获取获取DataReader对象的状态,对象的状态,True表示关闭,表示关闭,False表示打开。表示打开。Item(name/ordinal)获取或设置字段的内容,获取或设置字段的内容,name为字段名称,为字段名称,Ordinal为字段序号,两者都可使用为字段序号,两者都可使用.RecordsAffected获取执行获取执行Insert、Delete或或Update等等SQL命令后命令后有多少行受到影响,若没有行被影响,便返回有多少行受到影响,若没有行被影响,便返回0。DataReader的常用方法的常用方法方法描述Close()关闭关闭DataReader对象并释放对行集的引用。对象并释放对行集的引用。Read()读取下一条数据并返回布尔值。返回读取下一条数据并返回布尔值。返回true表示还有下一条表示还有下一条数据,返回数据,返回false表示没有下一条数据。表示没有下一条数据。GetFieldType(ordinal)获取第获取第ordinal+1列的数据类型。列的数据类型。GetName(ordinal)获取第获取第ordinal+1列的字段名称。列的字段名称。GetOrdinal(name)获取字段名称为获取字段名称为name的字段序号。的字段序号。GetValue(ordinal)获取第获取第ordinal+1列的内容。列的内容。GetValues(values)获取所有字段的内容,并将字段内容存放在获取所有字段的内容,并将字段内容存放在values数组中。数组中。IsDBNull(ordinal)判断第判断第ordinal+1列是否为列是否为Null,返回,返回False表示不是表示不是Null,True表示是表示是Null。实例6:存储过程执行Form6调用存储过程的步骤:调用存储过程的步骤:1.1.创建一个创建一个SqlCommandSqlCommand对象对象2.2.设置设置CommandTypeCommandType属性属性3.3.添加与存储过程本身匹配的添加与存储过程本身匹配的参数参数4.4.如果返回一个记录集时,调如果返回一个记录集时,调用用CommandCommand对象中的对象中的ExecuteReaderExecuteReader方法方法5.5.处理相应结果处理相应结果已知存储过程已知存储过程p1:create proc p1 orId char(5)as select*from 订购单 where 订购单号=orIdImports System.Data 创建连接对象创建连接对象 Dim sqlconn As New SqlConnection()设置设置ConnectionString属性属性()sqlconn.ConnectionString=Data Source=(local);Initial Catalog=订货管订货管理理;Integrated Security=True;Dim sqlcomm As New SqlCommand()Dim sqldr As SqlDataReader Dim eId,sId,orId,orDate As String Dim parm As New SqlParameter(orId,SqlDbType.Char,5)orId=TextBox1.Text sqlcomm.Connection=sqlconn sqlcomm.CommandType=CommandType.StoredProcedure sqlcomm.CommandText=p1 parm.Value=orId sqlcomm.Parameters.Add(parm)sqlconn.Open()打开连接打开连接 sqldr=sqlcomm.ExecuteReader()While(sqldr.Read()eId=sqldr.GetValue(0)sId=sqldr.GetValue(1)orDate=sqldr.GetValue(3)向向listview中插入一条记录中插入一条记录 Dim item1 As New ListViewItem(eId)item1.SubItems.Add(sId)item1.SubItems.Add(orId)item1.SubItems.Add(orDate)ListView1.Items.Add(item1)End While sqldr.Close()sqlconn.Close()关闭连接关闭连接55internet3.4 非连接环境下的数据访问非连接环境下的数据访问 DataSet对象对象n在非连接环境中,用户可以在离线的计算机上使用数据,以后再将更新提交到数据源n优点n任何时候都可用,并可随时连接到数据源进行处理 n共享连接资源 n提高了应用程序性能和扩展性 n缺点n数据不能保证是最新的 n可能发生更新冲突并且必须设法解决冲突 563.4 非连接环境下的数据访问非连接环境下的数据访问 DataSet对象对象在非连接的环境中,数据从服务器下载在非连接的环境中,数据从服务器下载在非连接的环境中,数据从服务器下载在非连接的环境中,数据从服务器下载到客户端的内存中进行处理到客户端的内存中进行处理到客户端的内存中进行处理到客户端的内存中进行处理1.1.1.1.建立和数据库服务器的连接建立和数据库服务器的连接建立和数据库服务器的连接建立和数据库服务器的连接2.2.2.2.填充填充填充填充 DataSetDataSetDataSetDataSet3.3.3.3.断开连接断开连接断开连接断开连接4.4.4.4.处理处理处理处理 DataSetDataSetDataSetDataSet 中的数据中的数据中的数据中的数据5.5.5.5.重新建立连接重新建立连接重新建立连接重新建立连接6.6.6.6.将更新发送回数据库服务器将更新发送回数据库服务器将更新发送回数据库服务器将更新发送回数据库服务器7.7.7.7.断开连接断开连接断开连接断开连接SqlConnectionSqlDataAdapterDataSetSQL Server 2005Command3.4.1 Connection对象对象n见见3.3.1节节583.4.2 DataAdapter 对象对象nDataAdapter是数据源和DataSet 对象之间的桥梁n一方面,负责将数据源的数据装填进DataSetn另一方面,DataSet 中数据更新也通过DataAdapter返回给数据源。Data sourceDataAdapterDataTableDataSetFillUpdate3.4.2 DataAdapter 对象对象n使用样例:使用样例:Dim sqlconn As New SqlConnection()设置ConnectionString属性()sqlconn.ConnectionString=Data Source=(local);Initial Catalog=订货管理;Integrated Security=True;Dim sqlcomm As New SqlCommand()Dim sqlda As New SqlDataAdapter sqlcomm.Connection=sqlconn sqlcomm.CommandText=select*from 订购单 sqlda.SelectCommand=sqlcommDataAdapter的基本属性的基本属性属性描述SelectCommand获取或设置用来从数据源选取数据行的SQL命令UpdateCommand获取或设置用来从数据源更新数据行的SQL命令InsertCommand获取或设置用来从数据源插入数据行的SQL命令DeleteCommand 获取或设置用来从数据源删除数据行的SQL命令DataAdapter的基本方法的基本方法方法描述Fill(dataSet,srcTable)将SelectCommand属性指定的SQL命令执行结果所选取的数据行置入DataSet对象,其返回值为置入DataSet对象的数据行数。Update(dataSet,srcTable)调用InsertCommand属性、UpdateCommand属性或DeleteCommand属性指定的SQL命令将DataSet对象更新到数据源623.4.2 DataAdapter 对象对象nDataAdapter 的属的属性性nSelectCommandnInsertCommandnUpdateCommandnDeleteCommandnDataAdapter 的方的方法法nFill方法方法nUpdate方法方法nn当调用当调用当调用当调用FillFillFillFill方法填充方法填充方法填充方法填充DataSetDataSetDataSetDataSet时,真正是通时,真正是通时,真正是通时,真正是通过执行过执行过执行过执行SelectCommandSelectCommandSelectCommandSelectCommand中的命令,到数据源中的命令,到数据源中的命令,到数据源中的命令,到数据源取数据。取数据。取数据。取数据。nn当调用当调用当调用当调用UpdateUpdateUpdateUpdate方法更方法更方法更方法更新数据时,真正是执新数据时,真正是执新数据时,真正是执新数据时,真正是执行了行了行了行了InsertCommandInsertCommandInsertCommandInsertCommand,UpdateCommandUpdateCommandUpdateCommandUpdateCommand,DeleteCommandDeleteCommandDeleteCommandDeleteCommand中的命中的命中的命中的命令。令。令。令。633.4.2 DataAdapter 对象对象DataSet客户端客户端DataAdapterDatabaseDatabase服务器端服务器端数据数据FillUpdateDeleteCommandUpdateCommandInsertCommand数据数据DataTableSelectCommand3.4.3 DataSet对象对象nDataSet对象是将数据库中的数据检索到内存对象是将数据库中的数据检索到内存中的缓存。中的缓存。653.4.3 DataSet对象对象nDataSet是ADO.NET的断开式结构的核心组件。nDataSet是内存中数据的一种存储机制,可以看作一个内存中的数据库,它包含表、列、约束、行和关系。nDataSet和任何数据库都是不相连的,独立于后台数据库,可以使用任何一种数据提供者为DataSet提供数据,或者从DataSet中更新数据到数据库。nDataSet 是与数据源无关的。66客户机客户机数据源数据源DatabaseConnectionStored ProcedureDataSetDataTableDataTable3.4.3 DataSet对象对象67nDataSet 类包含了下列集合:nTables(DataTable对象的集合)nRelations(DataRelation对象的集合)3.4.3 DataSet对象对象DataRowDataColumnDataTable1DataRelationConstraintsDataTable2683.4.3 DataSet对象对象DataRow对象对象DataColumn对象对象DataTable对象对象DataColumn对象对象3.4.3 DataSet 对象对象n使用样例:使用样例:Dim sqlconn As New SqlConnection()设置ConnectionString属性()sqlconn.ConnectionString=Data Source=(local);Initial Catalog=订货管理;Integrated Security=True;Dim sqlcomm As New SqlCommand()Dim sqlda As New SqlDataAdapter Dim sqlDs As New DataSet()sqlcomm.Connection=sqlconn sqlcomm.CommandText=select*from 订购单 sqlda.SelectCommand=sqlcomm sqlda.Fill(sqlDs,“Order”)填充到dataset中的表名为order sqlconn.close()3.4.3 DataSet 对象对象n使用DataAdapter 的Fill方法填充一个DataSetn如果 DataSet 中存放了多种表,那么每张表使用一个单独的DataAdatper负责填充。实例实例7Form7 创建连接对象创建连接对象 Dim sqlconn As New SqlConnection()设置设置ConnectionString属性属性()sqlconn.ConnectionString=Data Source=(local);Initial Catalog=订货订货管理管理;Integrated Security=True;Dim sqlda1 As New SqlDataAdapter Dim sqlda2 As New SqlDataAdapter Dim sqlcomm1 As New SqlCommand()Dim sqlcomm2 As New SqlCommand()Dim sqlDs As New DataSet()sqlcomm1.Connection=sqlconn sqlcomm1.CommandText=select*from 订购单订购单 sqlda1.SelectCommand=sqlcomm1 sqlcomm2.Connection=sqlconn sqlcomm2.CommandText=select*from 仓库仓库 sqlda2.SelectCommand=sqlcomm2 sqlda1.Fill(sqlDs,order)填充到填充到dataset中的表名为中的表名为order sqlda2.Fill(sqlDs,warehouse)填充到填充到dataset中的表名为中的表名为warehouse MessageBox.Show(访问成功访问成功)sqlconn.Close()实例实例8:与控件结合与控件结合Form8n将数据绑定到控件将数据绑定到控件DataGridView 创建连接对象创建连接对象 Dim sqlconn As New SqlConnection()设置设置ConnectionString属性属性(