ADOnET数据库编程(vb版).ppt_第1页
ADOnET数据库编程(vb版).ppt_第2页
ADOnET数据库编程(vb版).ppt_第3页
ADOnET数据库编程(vb版).ppt_第4页
ADOnET数据库编程(vb版).ppt_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、准的ODBC函数和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

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

5、tem.Data.SqlClient:专为sql server 而设的命名空间,可在sql server 数据库进行处理操作。 System.Data.OleDb System.Data.ODBC System.Data.OracleClient,13,XxxConnection SqlConnection OleDbConnection XxxCommand SqlCommand OleDbCommand,XxxDataReader SqlDataReader, OleDbDataReader XxxDataAdapter SqlDataAdapter OldDbDataAdapter,.N

6、ET Framework 数据提供程序的核心类,DataSet,ADO.NET DataSet 专门为独立于任何数据源的数据访问而设计。因此,它可以用于多种不同的数据源,用于 XML 数据,或用于管理应用程序本地的数据。 DataSet 包含一个或多个 DataTable 对象的集合,这些对象由数据行和数据列以及有关 DataTable 对象中数据的主键、外键、约束和关系信息组成。,14,数据库,常用ADO.NET对象,Connection,Command,DataReader,DataAdapter,管理到特定数据源的连接,从数据源中执行命令,将数据保存在与数据库分开的缓存中,提供了对只读数

7、据的高效访问,在数据库和数据集之间交换数据,Command,16,ADO.NET组件结构模型1,说明 .NET Framework 数据提供程序与 DataSet 之间的关系,ADO.NET组件结构模型2,.NET数据访问对象模型基于两个基础对象: DataReader:对数据进行向前和只读访问; DataSet:从同一个数据源中保存多个表以及它们之间的关系。,ADO.NET组件结构模型2,非连接环境,连接环境,3 用ADO.NET访问数据库 案例使用语言,Visual Studio 2005 简介 数据库编程的一般步骤 连接环境下的数据访问(DataRead) 非连接环境下的数据访问(Dat

8、aSet),3.1 Visual Studio 2005 简介,演示,3.2 数据库编程的一般步骤,连接环境 非连接环境,22,(1)连接环境下的步骤 DataReader对象,使用Connection对象创建数据连接 使用Command对象对数据源执行SQL命令并返回结果 使用DataReader对象读取数据源 和控件结合使用,达到可视化效果 关闭DataReader对象 断开和数据库服务器的连接,(2)非连接的环境下的步骤 DataSet对象,使用Connection对象创建数据连接 使用DataAdapter对象对数据源执行SQL命令并返回结果(本质是通过command对象执行SQL命令

9、并返回结果)。 使用DataSet对象读取数据源。 和控件结合使用,达到可视化效果 断开和数据库服务器的连接,24,显示和修改数据,数据库,在许多应用程序中,用户访问数据后连接即关闭,在用户再次访问数据库时连接再重新打开,25,3.3 连接环境下的数据访问 DataReader对象,在连接环境中,用户可以持续地连接到数据源 优点: 更安全,更易维护 更容易控制并发访问 与非连接环境相比,数据刷新更及时 缺点: 必须有固定的数据库连接 扩展性不强,26,3.3 连接环境下的数据访问 DataReader对象,SQL Server 2005,在连接的环境中,资源存储在服务器上,直到断开连接,Sql

10、Connection,SqlCommand,SqlDataReader,27,3.3.1 Connection对象,使用数据之前,必须首先使用Connection对象建立数据库服务器与应用程序之间的连接通讯。 建立连接时需要指定: 服务器类型 数据源(服务器名字、数据库名字) 安全信息(登录的帐户名、密码) 使用Connection类的 ConnectionString 属性指定这些信息。,实例1:连接SQL Server数据库 SQL 授权用户,导入命名空间 Imports System.Data Imports System.Data.SqlClient 创建连接对象 Dim sqlcon

11、n 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数据

12、库 Windows授权用户,导入命名空间 Imports System.Data Imports System.Data.SqlClient 创建连接对象 Dim sqlconn As New SqlConnection() 设置ConnectionString属性 sqlconn.ConnectionString = = Data Source = (local); Initial Catalog=订货管理; Integrated Security=True; “ 打开连接 sqlconn.open() 关闭连接 Sqlconn.close(),DataSource: 服务器名称 Initi

13、al Catalog: 数据库名称 Integrated Security:是否为windows授权用户,Windows授权用户,3.3.1 Connection对象,Connection 类的基本属性,3.3.1 Connection对象,Connection类的基本方法,导入命名空间 Imports System.Data Imports System.Data.SqlClient Dim sqlconn As New SqlConnection() sql模式 sqlconn.ConnectionString = Data Source =(local);Initial Catalog=

14、订货管理; 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.

15、3.2 Command对象,在已经打开的Connection对象上执行SQL语句、存储过程。,实例2Form2,导入命名空间 Imports System.Data Imports System.Data.SqlClient 创建连接对象 Dim sqlconn As New SqlConnection() 设置ConnectionString属性 sqlconn.ConnectionString = Data Source = (local); Initial Catalog=订货管理; Integrated Security=True; “ 定义sql语句 Dim sqlStr As St

16、ring= insert into 订购单 values(E1,S4,OR63,2007/6/2) “ 创建sqlcomm对象 Dim sqlcomm As new SQLCommand() sqlcomm.Connection=sqlconn sqlcomm.CommandText=sqlStr sqlconn.open() 打开连接 sqlcomm.ExecuteNonQuery() 执行SQL语句 MessageBox.Show(插入成功) Sqlconn.close() 关闭连接,3.3.2 Command对象,Command 类的基本属性,3.3.2 Command对象,Comman

17、d 类的基本方法,实例3 与控件结合Form3,导入命名空间 Imports System.Data Imports System.Data.SqlClient 创建连接对象 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

18、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=sqlconn sqlcomm.CommandText=sqlStr MessageBox.Show(sqlStr) sqlconn.open() 打开连接 sqlcomm.Exe

19、cuteNonQuery() 执行SQL语句 MessageBox.Show(插入成功) Sqlconn.close() 关闭连接,说明:注意sql语句符号问题,思考,如何进行修改和删除操作?,思考,进行查询操作时,Command执行完ExecuteReader()方法后,查询结果如何存放?,3.3.3 DataRead对象,DataReader对象是用来读取数据源最简单的方式 只能读取数据,不能写入数据 将数据源从头到尾依次读出,无法只读取某条数据。 DataReader则在比较传统的连接模式下工作。 在数据访问速度方面优于DataSet对象,3.3.3 DataRead对象,使用DataR

20、eader对象读取数据库的步骤(连接环境) 使用Connection对象创建数据连接 使用Command对象对数据源执行SQL命令并返回结果 使用DataReader对象读取数据源 和控件结合使用,达到可视化效果 关闭DataReader对象 断开和数据库服务器的连接,导入命名空间 Imports System.Data Imports System.Data.SqlClient 创建连接对象 Dim sqlconn As New SqlConnection() 设置ConnectionString属性 sqlconn.ConnectionString = Data Source = (loc

21、al); 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 = sqlStr sqlconn.Open() 打开连接 sqldr = sqlcomm.ExecuteReader() MessageBox.Show(查询成功) sqldr

22、.Close() 关闭sqlDataReader对象 sqlconn.Close() 关闭连接,实例4Form4,查询结果如何显示在窗口中呢?,实例5:与控件结合Form5,Imports System.Data Imports System.Data.SqlClient 创建连接对象 Dim sqlconn As New SqlConnection() 设置ConnectionString属性() sqlconn.ConnectionString = Data Source = (local); Initial Catalog=订货管理; Integrated Security=True;

23、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(

24、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对象的基本属性,DataReader的常用方法,实例6:存储过程执行Fo

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

26、g属性() 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 = sqlc

27、onn 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

28、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() 关闭连接,55,internet,3.4 非连接环境下的数据访问 DataSet对象,在非连接环境中,用户可以在离线的计算机上使用数据,以后再将更新提交到数据源 优点 任何时候都可用,并可随时连接到数据源进行处理 共享连接资源 提高了应用程序性能和扩展性 缺点 数

29、据不能保证是最新的 可能发生更新冲突并且必须设法解决冲突,56,3.4 非连接环境下的数据访问 DataSet对象,在非连接的环境中,数据从服务器下载到客户端的内存中进行处理 建立和数据库服务器的连接 填充 DataSet 断开连接 处理 DataSet 中的数据 重新建立连接 将更新发送回数据库服务器 断开连接,SqlConnection,SqlDataAdapter,DataSet,SQL Server 2005,Command,3.4.1 Connection对象,见3.3.1节,58,3.4.2 DataAdapter 对象,DataAdapter是数据源和DataSet 对象之间的桥

30、梁 一方面,负责将数据源的数据装填进DataSet 另一方面,DataSet 中数据更新也通过DataAdapter返回给数据源。,Data 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=Tru

31、e; Dim sqlcomm As New SqlCommand() Dim sqlda As New SqlDataAdapter sqlcomm.Connection = sqlconn sqlcomm.CommandText = select * from 订购单 sqlda.SelectCommand = sqlcomm,DataAdapter的基本属性,DataAdapter的基本方法,62,3.4.2 DataAdapter 对象,DataAdapter 的属性 SelectCommand InsertCommand UpdateCommand DeleteCommand Data

32、Adapter 的方法 Fill方法 Update方法,当调用Fill方法填充DataSet时,真正是通过执行SelectCommand中的命令,到数据源取数据。 当调用Update方法更新数据时,真正是执行了InsertCommand, UpdateCommand, DeleteCommand中的命令。,63,3.4.2 DataAdapter 对象,数据,DataTable,SelectCommand,3.4.3 DataSet对象,DataSet对象是将数据库中的数据检索到内存中的缓存。,65,3.4.3 DataSet对象,DataSet是ADO.NET的断开式结构的核心组件。 Dat

33、aSet是内存中数据的一种存储机制,可以看作一个内存中的数据库,它包含表、列、约束、行和关系。 DataSet和任何数据库都是不相连的,独立于后台数据库,可以使用任何一种数据提供者为DataSet提供数据,或者从DataSet中更新数据到数据库。 DataSet 是与数据源无关的。,66,客户机,数据源,Database,DataSet,DataTable,DataTable,3.4.3 DataSet对象,67,DataSet 类包含了下列集合: Tables ( DataTable对象的集合) Relations ( DataRelation对象的集合),3.4.3 DataSet对象,D

34、ataRow,DataColumn,DataTable1,DataRelation,Constraints,DataTable2,68,3.4.3 DataSet对象,DataColumn对象,DataTable 对象,DataColumn对象,3.4.3 DataSet 对象,使用样例: Dim sqlconn As New SqlConnection() 设置ConnectionString属性() sqlconn.ConnectionString = Data Source = (local); Initial Catalog=订货管理; Integrated Security=True

35、; 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 对象,使用DataAdapter 的Fill方法填充一个Da

36、taSet 如果 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.Com

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论