使用VB访问数据库.ppt_第1页
使用VB访问数据库.ppt_第2页
使用VB访问数据库.ppt_第3页
使用VB访问数据库.ppt_第4页
使用VB访问数据库.ppt_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

1、使用VB访问SQL Sever数据库,生长,属性 (名词),体积变大 重量变重 颜色变红,将具有相同数据特征和行为特 征的所有的对象称为一个对象类 (苹果类),警铃响了,摘,方法(主动动词),事件(被动动词),某一个苹果,对象,类是型的概念,对象是值的概念,某一个苹果树,苹果,某一个对象的属性可以是数值型、字符型、也可以是另一个对象,在下面的界面中有几个对象?,数据库访问技术,JET与DAO ODBC与RDO OLE DB与ADO,JET与DAO,JET(Joint Engine Technology)数据连接引擎技术: 1991年末或92年初,MS发布了ACCESS作为其Windows桌面数

2、据库,ACCESS使用了JET数据库引擎。 Microsoft Jet 数据库引擎(Microsoft Jet Database Engine ) 一个数据库管理系统,它在用户及系统数据库中检索和存储数据。Microsoft Jet 数据库引擎可以被视为数据管理器组件,通过它可构建其他数据访问系统(例如,Microsoft Access 和 Microsoft Visual Basic)。 Microsoft Jet 数据库 使用 Microsoft Jet 数据库引擎创建的数据库。Microsoft Jet 数据库的文件扩展名是 .mdb。 JET仅为ACCESS数据库服务。,JET与DAO

3、,DAO(Data Access Object)数据访问对象 在开发JET引擎时,在其上增加了一个对象层,叫做数据访问对象(DAO)。 DAO可以打开DataBase的连接、访问或创建表,对表执行SQL语句,ACCESS 数据库 (*.mdb),通过JET,应用程序 使用DAO访问数据库,数据访问对象(Data Access Objects):是一种面向对象的界面接口。 通过DAO/Jet功能可以访问ISAM(顺序索引查找方法)数据库。 使用DAO的程序编码非常简单,DAO提供丰富的游标(Cursor)类型的结果集和非游标(CursorLess)类型的结果集,同DDL(数据描述语言)的功能很类

4、似。 DAO模型是设计关系数据库系统结构的对象类的集合。 它们提供了完成管理这样一个系统所需的全部操作的属性和方法,包括创建数据库,定义表、字段和索引,建立表间的关系,定位和查询数据库等工具。,ODBC与RDO,ODBC(Open Database Connectivity)开放数据库互连 MS意识到许多人都拥有后端的数据库,如Oracle、DB2等,因此发布JET的同时也推出了一个数据访问层。 ODBC: 是MS建议并开发的数据库API标准,为异种数据库提供了统一的访问接口,屏蔽了不同DBMS的差异,使数据库应用系统不仅仅局限于某个DBMS。 ODBC的设计思想 是允许从桌面到中等范围以及大

5、型机上数据库的透明访问。,ODBC与RDO,RDO(Remot Data Object)远程数据对象 产生背景 在应用程序在直接访问ODBC时,由于ODBC不是基于对象的,主要是通过调用一些API( Application Programming Interface 应用编程接口)访问后端数据库的,虽然ODBC的执行效率比DAO要快得多,但编程工作却非常困难,而且错误处理时也不友好。 例如:完成如下的数据库操作,打开一个DataBase并修改一个Table 使用DAO需要写5行代码 使用ODBC API函数大概需要30行代码 因此提出了RDO,RDO(Remot Data Object)远程数

6、据对象 是建立在ODBC 之上的对象模型,提供如同DAO一样的易用性,同时又拥有几乎和ODBC API一样的速度。 使用DAO/ODBC Direct功能可以实现远程RDO功能,关系数据库 (SQL Sever200、 Oracle、 Access等),通过ODBC,应用程序 使用RDO访问数据库,JET通知ODBC 访问服务器数据库,数据库 (DataBase),ODBC允许JET或 RDO访问服务器数 据库,JET不能直接访问服务器,ACCESS,JET可以直接访问 ACCESS数据库,缺点,DAO与RDO只能处理后台为关系数据库的DBMS,不能解决通用数据存储及通用数据访问。 例如:一个

7、Email系统需要存储多媒体文件以及其他数据,比方说将一个Excel表格存储于该系统之中, DAO与RDO都不能访问。,OLE DB与ADO,OLE DB(Object Linking and Embedding for DataBase)数据库对象链接和嵌入 MS采用通用数据访问的方法,“你自己保存数据,我们给你提供一种方法来访问这些数据。” 实际上就是一种进行关系型数据和非关系型数据一样的技术。 OLE DB定义: MS提供一种对各类应用程序均适用的,采用ODBC接口,通过结构化查询语言SQL对数据库进行访问操作的总体解决方案。 设计目的: 为了给多种多样的应用程序提供优化功能,OLE D

8、B与ADO,ADO(ActiveX Data Object) ActiveX 数据对象 OLE DB和ODBC一样是一种底层的API,其上层对象模型是ADO。ADO几乎兼容所用的数据库系统。 定义 一种数据访问接口,可与符合 OLE DB 的数据源通信,以连接、检索、操作和更新数据。 优点: 与DAO和RDO相比,模型非常小 不是层次式结构,每个主要对象都可以独立创建。,什么是层次式结构?,Excel中把一个数放进一个单元格,不能仅创建单元格,需要创建一个工作表,工作表需要一个工作簿,工作簿又在Excel程序中,因此存储一个数据,必须先创建一个Excel对象,再访问。,应用系统,ADO,OLE

9、 DB,游标 引擎,查询 引擎,Shape 引擎,OLE DB,电子 表格,ODBC SQL,ISAM,目录 服务,文件 系统,数据使用者,由OLE DB提供的服务,数据提供者,JET通知ODBC 访问服务器数据库,数据库 (DataBase),ODBC允许JET或 RDO访问服务器数 据库,OLE DB可以使用 ODBC或自身提供 的方法访问数据库,ACCESS,JET可以直接访问 ACCESS数据库,ADO 对象的组成,七个对象: Connection, Command, Parameter, Recordset, Field, Property, Error.,四个集合: Fields,

10、 Properties, Parameters, Errors.,Connection对象,Connection对象(连接对象): 是ADO的首要对象,它建立与数据源的连接、管理程序对数据的一切操作。 对数据源的任何操作都需要建立一个Connection对象,因此Connection对象是ADO 的基础。 主要功能: Connection对象提供与包含路径,口令和连接选项的数据源的链接; 声明:通常声明为全局变量 Dim cn As New ADODB.Connection,Connection属性,1、ConnectionString 属性 包含用于建立连接数据源的信息。 Connectio

11、nString用多项“设置项=值”的方式来设定与数据源的连接,每个项之间用分号隔开。 对于连接字符串的写法,精确固定的语法是没有的。因为不同类型数据库,有各自的设置项。 例如:指定1个OLE DB连接,连接字符串可写为: cn.ConnectionString = Provider=SQLOLEDB.1; Password=sa; Persist Security Info=True; User ID=sa; Initial Catalog=library; Data Source=SERVER01SHU03,2、ConnectionTimeout 属性 设置连接时的最长等待时间,缺省为15秒

12、,超时还未连接成功的话,中止连接,并返回出错信息。,Connection属性,Connection方法,1 、 Open方法: 建立与数据源的物理连接。 格式:connection.Open ConnectionString, UserID, Password, Options 注意:该方法是使Connection获得初始化的方法,只有使用了该方法,Connection对象才真正在内存中存在。 后面的参数都是可选参数,最简单如:cn.Open但如果这样则需要预先设置好ConnectionString等参数。,两种方式打开连接,第一种,先为ConnectionString赋值 cn.Connec

13、tionString = Provider=SQLOLEDB.1; Password=sa; Persist Security Info=True; User ID=sa; Initial Catalog=library; Data Source=SERVER01SHU03 cn.Open 第二种,直接Open cn.Open Provider=SQLOLEDB.1; Password=sa; Persist Security Info=True; User ID=sa; Initial Catalog=library; Data Source=SERVER01SHU03,Connection

14、方法,2 、 Close方法: 关闭1个数据连接对象,使该连接对象只留在本机内存中,可对其属性更改后再重新建立连接。 注意:如果不是关闭对象,而是将对象从内存中清除,应使用 Set connection对象变量=Nothing. Set cn = Nothing,Connection方法,3 、 Execute方法: 执行1个SQL查询,既可是选择查询,也可是动作查询。 如:Set rst = cn.Execute(“ select * From student where Sname like 张% “) 但要注意:使用Connection对象的Execute方法返回的游标类型是最基本的只能

15、读和只能向前移动的游标adOpenForwardOnly,因此,如果该方法执行一个选择查询返回一个记录集时特别要明白。,Recordset对象,Recordset对象(记录集对象) 用来管理某个查询返回的记录集以及记录集中的游标。 声明:对每一个需要操作的查询结构可以声明一个Recordset对象 Dim cn As New ADODB. Recordset,Recordset属性,1、CursorType 属性 (游标类型) AdOpenForwardOnly: 仅向前游标,默认值。 除了只能在记录中向前滚动外,与静态游标相同。 当只需要在记录集中单向移动时,使用它可提高性能。 顾名思义,这

16、种游标只能向前移动。 AdOpenKeyset: 键集游标。 从你自己的记录集不能访问其他用户删除的记录,无法查看其他用户添加的记录,但仍然可以看见其他用户更改的数据。 KeySet游标允许你看见自它创建起其他用户所做的修改,然而你却不能看到其他用户增加或删除的记录。,AdOpenDynamic :动态游标。 Dynamic游标可以看到他们保存记录集合的所有变化。 使用Dynamic游标的用户可以看到其他用户所做的编辑、增加、删除。 如果数据提供者允许这种类型的游标,那么它是通过每隔一段时间从数据源重取数据来支持这种可视性的。毫无疑问这会需要很多的资源。 此类型的游标功能强大同时也是耗费系统资

17、源最多的游标。 AdOpenStatic:静态游标。 可以用来查找数据或生成报告的记录集合的静态副本。另外,对其他用户所作的添加、更改或删除不可见。 Static类游标只是数据的一幅快照。这就是说,它无法看到自它创建以后其他用户对RecordSet所做的修改。 采用这类游标你可以向前和向后航行。 由于其功能简单,资源的需求比Dynamic要小!,需要注意的是: 一旦打开RecordSet,你就无法改变CursorType属性。 但是,如果你首先关闭RecordSet,改变CursorType属性,然后重新打开RecordSet,那么你仍可以有效地改变游标的类型!,Recordset属性,2、L

18、ockType 属性 在任何同时可被多用户修改的数据库应用程序中,你必须处理可能发生的多个用户同时对同一条记录进行操作时的情况。 当这种情况出现时,数据的完整性就会受到威胁,这是因为一个用户可能会在不自觉地在保存自己所做的修改时覆盖他人的修改。到时候你会觉得自己好象是没有做事。 为了处理这种情况,ADO允许你在对RecordSet对象进行更新时决定并发事件控制的类型,当一个用户编辑时,如何由他对记录进行锁定。这就是由LockType属性所决定的。,LockType属性有四个值: adLockReadonly:默认值,只读。 无法更改数据。 这是RecodSet的默认值,如果你把锁定的方式设为该

19、值,那么你将不能更新 Recordset。 adLockPessimistic:保守式记录锁定(逐条)。 提供者执行必要的操作确保成功编辑记录,通常采用编辑时立即锁定数据源的记录的方式。 如果设置为此类锁定,记录被锁定,且只有在编辑开始到将记录更新的提交给数据提供者这段时间内进行编辑的用户才可以访问!,adLockOptimistic:开放式记录锁定(逐条)。 提供者使用开放式锁定,只在调用 Update 方法时锁定记录。 只有在将数据提交给数据提供者的那一瞬间才把记录锁定。 adlockBatchOptimistic:开放式批更新。 用于与立即更新模式相反的批更新模式。设定为这种类型的锁定制

20、式将被称为批量更新模式的RecordSet。 可以加快更新RecordSet修改数据的速度,但因为同时更新多个记录,它也会恶化与并发访问相关的问题!,Recordset属性,3、RecordCount属性 使用 RecordCount 属性可确定Recordset 对象中记录的数目。 ADO 无法确定记录数时,或者如果提供者或游标类型不支持 RecordCount,则该属性返回 1 读已关闭的 Recordset 上的 RecordCount 属性将产生错误。 Recordset 对象的游标类型会影响是否能够确定记录的数目。 对仅向前游标,RecordCount 属性将返回 -1; 对静态或键

21、集游标返回实际计数; 对动态游标取决于数据源返回 -1 或实际计数。,Recordset属性,BOF与EOF属性 通常我们在程序中编写代码来检验BOF与EOF属性,从而得知目前指标所指向的RecordSet的位置, 使用BOF与EOF属性,可以得知一个Recordset对象是否包含有记录或者得知移动记录行是否已经超出该Recordset对象的范围。 若当前记录的位置是在一个Recordset对象第一行记录之前时,BOF属性返回true,反之则返回false。 若当前记录的位置是在一个Recordset对象最后一行记录之后时,EOF属性返回true,反之则返回false。 BOF与EOF都为Tr

22、ue表示在RecordSet里没有任何记录。,学生登记表,BOF(Beginning of File),Errors,Errors,EOF(End of File),rst.Bof=false,rst.Bof=true,rst.Eof=true,rst.Eof=false,系统出错,系统出错,RecordSet方法,1、AddNew 方法 创建可更新 Recordset 对象的新记录。 格式: rst.AddNew FieldList, Values 在程序中使用ADO的AddNew方法和直接使用“Insert into.”语句有和不同?那种方式更好? 答:ADO的AddNew方法只是将“In

23、sert into ”语句封装了起来,所以,当对大量数据进行操作的时候,直接使用SQL语句将会大大加快存取数据的速度,因为他减少了ADO的“翻译”时间。,2、Delete 方法 删除当前记录或记录组。 格式: rst.Delete AffectRecords 3、Update 方法 保存对 Recordset 对象的当前记录所做的所有更改 格式: rst.Update Fields, Values 4、Find 方法 搜索 Recordset 中满足指定标准的记录。如果满足标准,则记录集位置设置在找到的记录上,否则位置将设置在记录集的末尾。 格式: rst.Find (criteria, Sk

24、ipRows, searchDirection, start),5、MoveFirst、MoveLast、MoveNext 和 MovePrevious 方法 在指定 Recordset 对象中移动到第一个、最后一个、下一个或前一个记录并使该记录成为当前记录。 格式: rst.MoveFirst | MoveLast | MoveNext | MovePrevious ,需要注意的是: (1)使用 MoveNext 方法将当前游标向下移动一个记录(向记录集的底部)。 如果最后一个记录是当前游标所指记录并且调用 MoveNext 方法,则 ADO 将当前游标设置到 Recordset (EOF

25、为 True)的尾记录之后。 当 EOF 属性已经为 True 时试图向下移动将产生错误。 (2)使用 MovePrevious 方法将当前游标位置向上移动一个记录(向记录集的顶部)。 Recordset 对象必须支持向后游标移动;否则方法调用将产生错误。 如果首记录是当前游标所指记录并且调用 MovePrevious 方法,则 ADO 将当前游标设置在 Recordset (BOF 为 True)的首记录之前。 而 BOF 属性为 True 时向后移动将产生错误。,学生登记表,BOF(Beginning of File),Errors,Errors,EOF(End of File),rst.

26、Bof=false,rst.Bof=true,系统出错,rst. MovePrevious,rst.Bof=false,RecordSet方法,6、Move 方法 移动 Recordset 对象中当前记录的位置 格式: rst.Move NumRecords, Start NumRecords 带符号长整型表达式,指定当前记录位置移动的记录数。 Start 可选,字符串或变体型,用于计算书签。也可为下列值之一: AdBookmarkCurrent 默认。从当前记录开始。 AdBookmarkFirst 从首记录开始。 AdBookmarkLast 从尾记录开始。,需要注意的是: (1)如果 N

27、umRecords 参数大于零,则当前游标位置将向下移动(向记录集的末尾)。 如果 NumRecords 小于零,则当前游标位置向上移动(向记录集的开始)。 (2)从空的 Recordset 对象调用 Move 方法将产生错误。 (3)如果 Move 调用将当前记录位置移动到首记录之前,则 ADO 将当前记录放置在记录集(BOF 为 True)的首记录之前。在 BOF 属性已经为 True 时试图向后移动将产生错误;如果 Move 调用将当前记录位置移动,RecordSet方法,7、Open 方法: 格式: rst.Open Source, ActiveConnection, CursorTy

28、pe, LockType, Options Source参数 可以是一段SQL命令、一个指定的数据表名称或是一个Stored Procedure。 ActiveConnection参数 Recordset对象可以通过ActiveConnection属性来连接Connection对象。,CursorType参数 表示将以什么样的游标类型启动数据,包括: adOpenForwardOnly、(默认值) adOpenKeyset、 adOpenDynamic、 adOpenStatic。 LockType参数 表示要采用的Lock类型,如果忽略这个参数,那么系统会以Recordset对象的LockT

29、ype属性为预设值。包含: adLockReadOnly、(默认值) adLockPrssimistic、 adLockOptimistic、 adLockBatchOptimistic,Dim ssql As String ssql = select * from student order by Sno Set rst = Nothing rst.Open ssql, cn, adOpenStatic, adLockOptimistic,RecordSet方法,8、Close方法: 关闭1个数据连接对象,使该连接对象只留在本机内存中,可对其属性更改后再重新建立连接。 注意: 如果不是关闭对象,而是将对象从内存中清除,应使用 Set connection对象变量=Nothing. Set rst = Nothing,Fields集合(列集合): 代表一个记录集中的一个列。通过该对象可以取得一个记录集内不同列的值 。 RecordSet 对象数据的读取方法 Text1.Text = rst.Fields(sno) Text2.Text = rst.Fields(1) Text3.Text = rst (Sage) Text4.Text = rst (4),F

温馨提示

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

评论

0/150

提交评论