ADOnET数据库编程(vb版).ppt

上传人:牧羊曲112 文档编号:6501309 上传时间:2023-11-07 格式:PPT 页数:76 大小:738KB
返回 下载 相关 举报
ADOnET数据库编程(vb版).ppt_第1页
第1页 / 共76页
ADOnET数据库编程(vb版).ppt_第2页
第2页 / 共76页
ADOnET数据库编程(vb版).ppt_第3页
第3页 / 共76页
ADOnET数据库编程(vb版).ppt_第4页
第4页 / 共76页
ADOnET数据库编程(vb版).ppt_第5页
第5页 / 共76页
点击查看更多>>
资源描述

《ADOnET数据库编程(vb版).ppt》由会员分享,可在线阅读,更多相关《ADOnET数据库编程(vb版).ppt(76页珍藏版)》请在三一办公上搜索。

1、1,第12章 数据库应用的结构与开发环境,数据库应用开发概述 微软数据访问技术的发展历程 用ADO.NET访问数据库,2,1 数据库应用开发概述,3,2 微软数据访问技术的发展历程,ODBCODBC的基本概念 ODBC的构成 OLE DBADOADO.NET,4,2.1 ODBC概述,ODBC(Open DataBase Connectivity)的全称是开放数据库互连。通过使用ODBC技术可以访问不同类型的关系数据库。ODBC提出的背景 ODBC技术主要目的是提供一个对数据源的统一访问接口,而不是针对每一种数据库专门编写相应的访问模块。使用ODBC开发DBAP时,应用程序调用的是标准的ODB

2、C函数和SQL语句,数据库的底层操作由各个数据库的驱动程序完成。这样就使DBAP具有很好的适应性和可移植性,并且具备同时访问多种DBMS的能力。,5,ODBC体系结构,ODBC函数完成哪些工作?,请求对数据源的连接,获取连接句柄;指定事务控制方式;定义接收结果的数据区;向数据源发送SQL语句;接收SQL的查询结果;处理出错信息,并将出错信息返回给应用程序;终止对数据源的连接。,驱动程序管理器的工作,安装指定的驱动程序;定义数据源,并把数据源映射到具体的ODBC驱动程序上;为每个驱动程序提供ODBC函数的入口点;为ODBC调用提供参数验证等。,ODBC驱动程序的具体任务,建立与数据源的连接;向数

3、据源提交SQL请求;处理查询结果;将数据源错误转换为标准错误代码,并返回给应用程序;提交事务的开始请求、完成请求和撤消请求等。,9,举例,配置ODBC数据源,10,2.2 ADO.NET,ADO.NET是在.net中结合数据库的规范。ADO.NET是微软为解决Web和分布式应用程序的问题而设计的,是ADO的后续技术。ADO.NET是在.net framework平台上以托管代码建立的,具有托管代码的类型安全、内存管理等特点,更健壮。可以使用 ADO.NET 的两个组件来访问和处理数据:.NET Framework 数据提供程序(.net data provider)DataSet,.NET F

4、ramework 数据提供程序,.NET Framework 数据提供程序是专门为数据处理以及快速地只进、只读访问数据而设计的组件四个核心对象:Connection 对象提供与数据源的连接。Command 对象使您能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令。DataReader 从数据源中提供高性能的数据流。DataAdapter 提供连接 DataSet 对象和数据源的桥梁另外还有:DataSet,DataView对象。,11,12,命名空间,System.Data:System.Data.SqlClient:专为sql server 而设的命名空间,可在

5、sql server 数据库进行处理操作。,13,XxxConnectionSqlConnectionOleDbConnectionXxxCommandSqlCommandOleDbCommand,XxxDataReaderSqlDataReader,OleDbDataReaderXxxDataAdapterSqlDataAdapterOldDbDataAdapter,.NET Framework 数据提供程序的核心类,DataSet,ADO.NET DataSet 专门为独立于任何数据源的数据访问而设计。因此,它可以用于多种不同的数据源,用于 XML 数据,或用于管理应用程序本地的数据。Da

6、taSet 包含一个或多个 DataTable 对象的集合,这些对象由数据行和数据列以及有关 DataTable 对象中数据的主键、外键、约束和关系信息组成。,14,数据库,常用ADO.NET对象,Connection,Command,DataReader,DataAdapter,管理到特定数据源的连接,从数据源中执行命令,将数据保存在与数据库分开的缓存中,提供了对只读数据的高效访问,在数据库和数据集之间交换数据,Command,16,ADO.NET组件结构模型1,说明.NET Framework 数据提供程序与 DataSet 之间的关系,ADO.NET组件结构模型2,.NET数据访问对象模

7、型基于两个基础对象:DataReader:对数据进行向前和只读访问;DataSet:从同一个数据源中保存多个表以及它们之间的关系。,ADO.NET组件结构模型2,非连接环境,连接环境,3 用ADO.NET访问数据库 案例使用语言,Visual Studio 2005 简介数据库编程的一般步骤连接环境下的数据访问(DataRead)非连接环境下的数据访问(DataSet),3.1 Visual Studio 2005 简介,演示,3.2 数据库编程的一般步骤,连接环境非连接环境,22,(1)连接环境下的步骤 DataReader对象,使用Connection对象创建数据连接使用Command对象

8、对数据源执行SQL命令并返回结果使用DataReader对象读取数据源和控件结合使用,达到可视化效果关闭DataReader对象断开和数据库服务器的连接,(2)非连接的环境下的步骤 DataSet对象,使用Connection对象创建数据连接使用DataAdapter对象对数据源执行SQL命令并返回结果(本质是通过command对象执行SQL命令并返回结果)。使用DataSet对象读取数据源。和控件结合使用,达到可视化效果断开和数据库服务器的连接,24,显示和修改数据,数据库,在许多应用程序中,用户访问数据后连接即关闭,在用户再次访问数据库时连接再重新打开,25,3.3 连接环境下的数据访问

9、DataReader对象,在连接环境中,用户可以持续地连接到数据源优点:更安全,更易维护 更容易控制并发访问与非连接环境相比,数据刷新更及时 缺点:必须有固定的数据库连接 扩展性不强,26,3.3 连接环境下的数据访问 DataReader对象,SQL Server 2005,在连接的环境中,资源存储在服务器上,直到断开连接,SqlConnection,SqlCommand,SqlDataReader,27,3.3.1 Connection对象,使用数据之前,必须首先使用Connection对象建立数据库服务器与应用程序之间的连接通讯。建立连接时需要指定:服务器类型数据源(服务器名字、数据库名

10、字)安全信息(登录的帐户名、密码)使用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

11、(),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=Tr

12、ue;“打开连接sqlconn.open()关闭连接Sqlconn.close(),DataSource:服务器名称Initial Catalog:数据库名称Integrated Security:是否为windows授权用户,Windows授权用户,3.3.1 Connection对象,Connection 类的基本属性,3.3.1 Connection对象,Connection类的基本方法,导入命名空间Imports System.DataImports Dim sqlconn As New SqlConnection()sql模式 sqlconn.ConnectionString=Dat

13、a 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()En

14、d Try,带有异常处理的完整实例,3.3.2 Command对象,在已经打开的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 订购单 va

15、lues(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对象,Command 类的基本属性,3.3.2 Command对象,Command 类的基本方法,实例3 与控件结合Form3,导入命名空间Import

16、s 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=T

17、3.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语句符号问题,思考,如何进行修改和删除操作?,思考,进行查询操作时,Command执行完E

18、xecuteReader()方法后,查询结果如何存放?,3.3.3 DataRead对象,DataReader对象是用来读取数据源最简单的方式只能读取数据,不能写入数据将数据源从头到尾依次读出,无法只读取某条数据。DataReader则在比较传统的连接模式下工作。在数据访问速度方面优于DataSet对象,3.3.3 DataRead对象,使用DataReader对象读取数据库的步骤(连接环境)使用Connection对象创建数据连接使用Command对象对数据源执行SQL命令并返回结果使用DataReader对象读取数据源和控件结合使用,达到可视化效果关闭DataReader对象断开和数据库服

19、务器的连接,导入命名空间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.Conne

20、ction=sqlconn sqlcomm.CommandText=sqlStrsqlconn.Open()打开连接sqldr=sqlcomm.ExecuteReader()MessageBox.Show(查询成功)sqldr.Close()关闭sqlDataReader对象sqlconn.Close()关闭连接,实例4Form4,查询结果如何显示在窗口中呢?,实例5:与控件结合Form5,Imports System.Data 创建连接对象 Dim sqlconn As New SqlConnection()设置ConnectionString属性()sqlconn.ConnectionSt

21、ring=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.Execu

22、teReader(),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对象

23、的基本属性,DataReader的常用方法,实例6:存储过程执行Form6,调用存储过程的步骤:创建一个SqlCommand对象设置CommandType属性添加与存储过程本身匹配的参数4.如果返回一个记录集时,调用Command对象中的ExecuteReader方法5.处理相应结果,已知存储过程p1:create proc p1 orId char(5)as select*from 订购单 where 订购单号=orId,Imports System.Data 创建连接对象 Dim sqlconn As New SqlConnection()设置ConnectionString属性()sql

24、conn.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=Com

25、mandType.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)i

26、tem1.SubItems.Add(orId)item1.SubItems.Add(orDate)ListView1.Items.Add(item1)End While sqldr.Close()sqlconn.Close()关闭连接,55,internet,3.4 非连接环境下的数据访问 DataSet对象,在非连接环境中,用户可以在离线的计算机上使用数据,以后再将更新提交到数据源优点任何时候都可用,并可随时连接到数据源进行处理 共享连接资源 提高了应用程序性能和扩展性 缺点数据不能保证是最新的 可能发生更新冲突并且必须设法解决冲突,56,3.4 非连接环境下的数据访问 DataSet对象,

27、在非连接的环境中,数据从服务器下载到客户端的内存中进行处理建立和数据库服务器的连接填充 DataSet断开连接处理 DataSet 中的数据重新建立连接将更新发送回数据库服务器断开连接,SqlConnection,SqlDataAdapter,DataSet,SQL Server 2005,Command,3.4.1 Connection对象,见3.3.1节,58,3.4.2 DataAdapter 对象,DataAdapter是数据源和DataSet 对象之间的桥梁一方面,负责将数据源的数据装填进DataSet另一方面,DataSet 中数据更新也通过DataAdapter返回给数据源。,D

28、ata source,DataAdapter,DataTable,DataSet,Fill,Update,3.4.2 DataAdapter 对象,使用样例: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.Con

29、nection=sqlconn sqlcomm.CommandText=select*from 订购单 sqlda.SelectCommand=sqlcomm,DataAdapter的基本属性,DataAdapter的基本方法,62,3.4.2 DataAdapter 对象,DataAdapter 的属性SelectCommandInsertCommandUpdateCommandDeleteCommandDataAdapter 的方法Fill方法Update方法,当调用Fill方法填充DataSet时,真正是通过执行SelectCommand中的命令,到数据源取数据。当调用Update方法更

30、新数据时,真正是执行了InsertCommand,UpdateCommand,DeleteCommand中的命令。,63,3.4.2 DataAdapter 对象,数据,DataTable,SelectCommand,3.4.3 DataSet对象,DataSet对象是将数据库中的数据检索到内存中的缓存。,65,3.4.3 DataSet对象,DataSet是ADO.NET的断开式结构的核心组件。DataSet是内存中数据的一种存储机制,可以看作一个内存中的数据库,它包含表、列、约束、行和关系。DataSet和任何数据库都是不相连的,独立于后台数据库,可以使用任何一种数据提供者为DataSet

31、提供数据,或者从DataSet中更新数据到数据库。DataSet 是与数据源无关的。,66,客户机,数据源,Database,DataSet,DataTable,DataTable,3.4.3 DataSet对象,67,DataSet 类包含了下列集合:Tables(DataTable对象的集合)Relations(DataRelation对象的集合),3.4.3 DataSet对象,DataRow,DataColumn,DataTable1,DataRelation,Constraints,DataTable2,68,3.4.3 DataSet对象,DataColumn对象,DataTabl

32、e对象,DataColumn对象,3.4.3 DataSet 对象,使用样例: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=sqlcon

33、n sqlcomm.CommandText=select*from 订购单 sqlda.SelectCommand=sqlcomm sqlda.Fill(sqlDs,“Order”)填充到dataset中的表名为order sqlconn.close(),3.4.3 DataSet 对象,使用DataAdapter 的Fill方法填充一个DataSet如果 DataSet 中存放了多种表,那么每张表使用一个单独的DataAdatper负责填充。,实例7Form7,创建连接对象 Dim sqlconn As New SqlConnection()设置ConnectionString属性()sql

34、conn.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*

35、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:与控件结合Form8,将数据绑定到控件DataGridV

36、iew,创建连接对象 Dim sqlconn As New SqlConnection()设置ConnectionString属性()sqlconn.ConnectionString=Data Source=(local);Initial Catalog=订货管理;Integrated Security=True;Dim sqlda As New SqlDataAdapter Dim sqlcomm As New SqlCommand()Dim sqlDs As New DataSet()Dim orId As String orId=TextBox1.Text sqlcomm.Connect

37、ion=sqlconn sqlcomm.CommandText=select*from 订购单 where 订购单号=+orId+sqlda.SelectCommand=sqlcomm sqlda.Fill(sqlDs,order)填充到dataset中的表名为order DataGridView1.DataSource=sqlDs.Tables(0)DataGridView1.databind()sqlconn.Close(),DataGridView介绍,DataGrid 控件支持数据的显示、排序、编辑等等,是DataSet的一个好“伴侣”数据绑定就是将DataSet和一个可以显示数据的控件关联起来,如DataGrid。绑定后控件和DataSet中的数据将保持同步怎样绑定?DataGrid.DataSource 属性DataGrid.DateMember 属性,75,更新DataSet中数据,在ADO.NET中更新数据的3个步骤:更新DataSet中的数据通过DataAdapter.Update方法将更新反映到数据库服务器中如果要放弃更改,调用DataSet.RejectChanges方法;否则调用DataSet.AcceptChange方法,总结,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号