《使用VB访问数据库》PPT课件.ppt

上传人:za****8 文档编号:13191668 上传时间:2020-06-07 格式:PPT 页数:55 大小:482.06KB
返回 下载 相关 举报
《使用VB访问数据库》PPT课件.ppt_第1页
第1页 / 共55页
《使用VB访问数据库》PPT课件.ppt_第2页
第2页 / 共55页
《使用VB访问数据库》PPT课件.ppt_第3页
第3页 / 共55页
点击查看更多>>
资源描述
使用VB访问SQLSever数据库,生长,属性(名词),体积变大重量变重颜色变红,将具有相同数据特征和行为特征的所有的对象称为一个对象类(苹果类),警铃响了,摘,方法(主动动词),事件(被动动词),某一个苹果,对象,类是型的概念,对象是值的概念,某一个苹果树,苹果,某一个对象的属性可以是数值型、字符型、也可以是另一个对象,在下面的界面中有几个对象?,数据库访问技术,JET与DAOODBC与RDOOLEDB与ADO,JET与DAO,JET(JointEngineTechnology)数据连接引擎技术:1991年末或92年初,MS发布了ACCESS作为其Windows桌面数据库,ACCESS使用了JET数据库引擎。MicrosoftJet数据库引擎(MicrosoftJetDatabaseEngine)一个数据库管理系统,它在用户及系统数据库中检索和存储数据。MicrosoftJet数据库引擎可以被视为数据管理器组件,通过它可构建其他数据访问系统(例如,MicrosoftAccess和MicrosoftVisualBasic)。MicrosoftJet数据库使用MicrosoftJet数据库引擎创建的数据库。MicrosoftJet数据库的文件扩展名是.mdb。JET仅为ACCESS数据库服务。,JET与DAO,DAO(DataAccessObject)数据访问对象在开发JET引擎时,在其上增加了一个对象层,叫做数据访问对象(DAO)。DAO可以打开DataBase的连接、访问或创建表,对表执行SQL语句,ACCESS数据库(*.mdb),通过JET,应用程序使用DAO访问数据库,数据访问对象(DataAccessObjects):是一种面向对象的界面接口。通过DAO/Jet功能可以访问ISAM(顺序索引查找方法)数据库。使用DAO的程序编码非常简单,DAO提供丰富的游标(Cursor)类型的结果集和非游标(CursorLess)类型的结果集,同DDL(数据描述语言)的功能很类似。DAO模型是设计关系数据库系统结构的对象类的集合。它们提供了完成管理这样一个系统所需的全部操作的属性和方法,包括创建数据库,定义表、字段和索引,建立表间的关系,定位和查询数据库等工具。,ODBC与RDO,ODBC(OpenDatabaseConnectivity)开放数据库互连MS意识到许多人都拥有后端的数据库,如Oracle、DB2等,因此发布JET的同时也推出了一个数据访问层。ODBC:是MS建议并开发的数据库API标准,为异种数据库提供了统一的访问接口,屏蔽了不同DBMS的差异,使数据库应用系统不仅仅局限于某个DBMS。ODBC的设计思想是允许从桌面到中等范围以及大型机上数据库的透明访问。,ODBC与RDO,RDO(RemotDataObject)远程数据对象产生背景在应用程序在直接访问ODBC时,由于ODBC不是基于对象的,主要是通过调用一些API(ApplicationProgrammingInterface应用编程接口)访问后端数据库的,虽然ODBC的执行效率比DAO要快得多,但编程工作却非常困难,而且错误处理时也不友好。例如:完成如下的数据库操作,打开一个DataBase并修改一个Table使用DAO需要写5行代码使用ODBCAPI函数大概需要30行代码因此提出了RDO,RDO(RemotDataObject)远程数据对象是建立在ODBC之上的对象模型,提供如同DAO一样的易用性,同时又拥有几乎和ODBCAPI一样的速度。使用DAO/ODBCDirect功能可以实现远程RDO功能,关系数据库(SQLSever200、Oracle、Access等),通过ODBC,应用程序使用RDO访问数据库,JET通知ODBC访问服务器数据库,数据库(DataBase),ODBC允许JET或RDO访问服务器数据库,JET不能直接访问服务器,ACCESS,JET可以直接访问ACCESS数据库,缺点,DAO与RDO只能处理后台为关系数据库的DBMS,不能解决通用数据存储及通用数据访问。例如:一个Email系统需要存储多媒体文件以及其他数据,比方说将一个Excel表格存储于该系统之中,DAO与RDO都不能访问。,OLEDB与ADO,OLEDB(ObjectLinkingandEmbeddingforDataBase)数据库对象链接和嵌入MS采用通用数据访问的方法,“你自己保存数据,我们给你提供一种方法来访问这些数据。”实际上就是一种进行关系型数据和非关系型数据一样的技术。OLEDB定义:MS提供一种对各类应用程序均适用的,采用ODBC接口,通过结构化查询语言SQL对数据库进行访问操作的总体解决方案。设计目的:为了给多种多样的应用程序提供优化功能,OLEDB与ADO,ADO(ActiveXDataObject)ActiveX数据对象OLEDB和ODBC一样是一种底层的API,其上层对象模型是ADO。ADO几乎兼容所用的数据库系统。定义一种数据访问接口,可与符合OLEDB的数据源通信,以连接、检索、操作和更新数据。优点:与DAO和RDO相比,模型非常小不是层次式结构,每个主要对象都可以独立创建。,什么是层次式结构?,Excel中把一个数放进一个单元格,不能仅创建单元格,需要创建一个工作表,工作表需要一个工作簿,工作簿又在Excel程序中,因此存储一个数据,必须先创建一个Excel对象,再访问。,应用系统,ADO,OLEDB,游标引擎,查询引擎,Shape引擎,OLEDB,电子表格,ODBCSQL,ISAM,目录服务,文件系统,数据使用者,由OLEDB提供的服务,数据提供者,JET通知ODBC访问服务器数据库,数据库(DataBase),ODBC允许JET或RDO访问服务器数据库,OLEDB可以使用ODBC或自身提供的方法访问数据库,ACCESS,JET可以直接访问ACCESS数据库,ADO对象的组成,七个对象:Connection,Command,Parameter,Recordset,Field,Property,Error.,四个集合:Fields,Properties,Parameters,Errors.,Connection对象,Connection对象(连接对象):是ADO的首要对象,它建立与数据源的连接、管理程序对数据的一切操作。对数据源的任何操作都需要建立一个Connection对象,因此Connection对象是ADO的基础。主要功能:Connection对象提供与包含路径,口令和连接选项的数据源的链接;声明:通常声明为全局变量DimcnAsNewADODB.Connection,Connection属性,1、ConnectionString属性包含用于建立连接数据源的信息。ConnectionString用多项“设置项=值”的方式来设定与数据源的连接,每个项之间用分号隔开。对于连接字符串的写法,精确固定的语法是没有的。因为不同类型数据库,有各自的设置项。例如:指定1个OLEDB连接,连接字符串可写为:cn.ConnectionString=Provider=SQLOLEDB.1;Password=sa;PersistSecurityInfo=True;UserID=sa;InitialCatalog=library;DataSource=SERVER01SHU03,2、ConnectionTimeout属性设置连接时的最长等待时间,缺省为15秒,超时还未连接成功的话,中止连接,并返回出错信息。,Connection属性,Connection方法,1、Open方法:建立与数据源的物理连接。格式:connection.OpenConnectionString,UserID,Password,Options注意:该方法是使Connection获得初始化的方法,只有使用了该方法,Connection对象才真正在内存中存在。后面的参数都是可选参数,最简单如:cn.Open但如果这样则需要预先设置好ConnectionString等参数。,两种方式打开连接,第一种,先为ConnectionString赋值cn.ConnectionString=Provider=SQLOLEDB.1;Password=sa;PersistSecurityInfo=True;UserID=sa;InitialCatalog=library;DataSource=SERVER01SHU03cn.Open第二种,直接Opencn.OpenProvider=SQLOLEDB.1;Password=sa;PersistSecurityInfo=True;UserID=sa;InitialCatalog=library;DataSource=SERVER01SHU03,Connection方法,2、Close方法:关闭1个数据连接对象,使该连接对象只留在本机内存中,可对其属性更改后再重新建立连接。注意:如果不是关闭对象,而是将对象从内存中清除,应使用Setconnection对象变量=Nothing.Setcn=Nothing,Connection方法,3、Execute方法:执行1个SQL查询,既可是选择查询,也可是动作查询。如:Setrst=cn.Execute(“select*FromstudentwhereSnamelike张%“)但要注意:使用Connection对象的Execute方法返回的游标类型是最基本的只能读和只能向前移动的游标adOpenForwardOnly,因此,如果该方法执行一个选择查询返回一个记录集时特别要明白。,Recordset对象,Recordset对象(记录集对象)用来管理某个查询返回的记录集以及记录集中的游标。声明:对每一个需要操作的查询结构可以声明一个Recordset对象DimcnAsNewADODB.Recordset,Recordset属性,1、CursorType属性(游标类型)AdOpenForwardOnly:仅向前游标,默认值。除了只能在记录中向前滚动外,与静态游标相同。当只需要在记录集中单向移动时,使用它可提高性能。顾名思义,这种游标只能向前移动。AdOpenKeyset:键集游标。从你自己的记录集不能访问其他用户删除的记录,无法查看其他用户添加的记录,但仍然可以看见其他用户更改的数据。KeySet游标允许你看见自它创建起其他用户所做的修改,然而你却不能看到其他用户增加或删除的记录。,AdOpenDynamic:动态游标。Dynamic游标可以看到他们保存记录集合的所有变化。使用Dynamic游标的用户可以看到其他用户所做的编辑、增加、删除。如果数据提供者允许这种类型的游标,那么它是通过每隔一段时间从数据源重取数据来支持这种可视性的。毫无疑问这会需要很多的资源。此类型的游标功能强大同时也是耗费系统资源最多的游标。AdOpenStatic:静态游标。可以用来查找数据或生成报告的记录集合的静态副本。另外,对其他用户所作的添加、更改或删除不可见。Static类游标只是数据的一幅快照。这就是说,它无法看到自它创建以后其他用户对RecordSet所做的修改。采用这类游标你可以向前和向后航行。由于其功能简单,资源的需求比Dynamic要小!,需要注意的是:一旦打开RecordSet,你就无法改变CursorType属性。但是,如果你首先关闭RecordSet,改变CursorType属性,然后重新打开RecordSet,那么你仍可以有效地改变游标的类型!,Recordset属性,2、LockType属性在任何同时可被多用户修改的数据库应用程序中,你必须处理可能发生的多个用户同时对同一条记录进行操作时的情况。当这种情况出现时,数据的完整性就会受到威胁,这是因为一个用户可能会在不自觉地在保存自己所做的修改时覆盖他人的修改。到时候你会觉得自己好象是没有做事。为了处理这种情况,ADO允许你在对RecordSet对象进行更新时决定并发事件控制的类型,当一个用户编辑时,如何由他对记录进行锁定。这就是由LockType属性所决定的。,LockType属性有四个值:adLockReadonly:默认值,只读。无法更改数据。这是RecodSet的默认值,如果你把锁定的方式设为该值,那么你将不能更新Recordset。adLockPessimistic:保守式记录锁定(逐条)。提供者执行必要的操作确保成功编辑记录,通常采用编辑时立即锁定数据源的记录的方式。如果设置为此类锁定,记录被锁定,且只有在编辑开始到将记录更新的提交给数据提供者这段时间内进行编辑的用户才可以访问!,adLockOptimistic:开放式记录锁定(逐条)。提供者使用开放式锁定,只在调用Update方法时锁定记录。只有在将数据提交给数据提供者的那一瞬间才把记录锁定。adlockBatchOptimistic:开放式批更新。用于与立即更新模式相反的批更新模式。设定为这种类型的锁定制式将被称为批量更新模式的RecordSet。可以加快更新RecordSet修改数据的速度,但因为同时更新多个记录,它也会恶化与并发访问相关的问题!,Recordset属性,3、RecordCount属性使用RecordCount属性可确定Recordset对象中记录的数目。ADO无法确定记录数时,或者如果提供者或游标类型不支持RecordCount,则该属性返回1读已关闭的Recordset上的RecordCount属性将产生错误。Recordset对象的游标类型会影响是否能够确定记录的数目。对仅向前游标,RecordCount属性将返回-1;对静态或键集游标返回实际计数;对动态游标取决于数据源返回-1或实际计数。,Recordset属性,BOF与EOF属性通常我们在程序中编写代码来检验BOF与EOF属性,从而得知目前指标所指向的RecordSet的位置,使用BOF与EOF属性,可以得知一个Recordset对象是否包含有记录或者得知移动记录行是否已经超出该Recordset对象的范围。若当前记录的位置是在一个Recordset对象第一行记录之前时,BOF属性返回true,反之则返回false。若当前记录的位置是在一个Recordset对象最后一行记录之后时,EOF属性返回true,反之则返回false。BOF与EOF都为True表示在RecordSet里没有任何记录。,学生登记表,BOF(BeginningofFile),Errors,Errors,EOF(EndofFile),rst.Bof=false,rst.Bof=true,rst.Eof=true,rst.Eof=false,系统出错,系统出错,RecordSet方法,1、AddNew方法创建可更新Recordset对象的新记录。格式:rst.AddNewFieldList,Values在程序中使用ADO的AddNew方法和直接使用“Insertinto.”语句有和不同?那种方式更好?答:ADO的AddNew方法只是将“Insertinto”语句封装了起来,所以,当对大量数据进行操作的时候,直接使用SQL语句将会大大加快存取数据的速度,因为他减少了ADO的“翻译”时间。,2、Delete方法删除当前记录或记录组。格式:rst.DeleteAffectRecords3、Update方法保存对Recordset对象的当前记录所做的所有更改格式:rst.UpdateFields,Values4、Find方法搜索Recordset中满足指定标准的记录。如果满足标准,则记录集位置设置在找到的记录上,否则位置将设置在记录集的末尾。格式:rst.Find(criteria,SkipRows,searchDirection,start),5、MoveFirst、MoveLast、MoveNext和MovePrevious方法在指定Recordset对象中移动到第一个、最后一个、下一个或前一个记录并使该记录成为当前记录。格式:rst.MoveFirst|MoveLast|MoveNext|MovePrevious,需要注意的是:(1)使用MoveNext方法将当前游标向下移动一个记录(向记录集的底部)。如果最后一个记录是当前游标所指记录并且调用MoveNext方法,则ADO将当前游标设置到Recordset(EOF为True)的尾记录之后。当EOF属性已经为True时试图向下移动将产生错误。(2)使用MovePrevious方法将当前游标位置向上移动一个记录(向记录集的顶部)。Recordset对象必须支持向后游标移动;否则方法调用将产生错误。如果首记录是当前游标所指记录并且调用MovePrevious方法,则ADO将当前游标设置在Recordset(BOF为True)的首记录之前。而BOF属性为True时向后移动将产生错误。,学生登记表,BOF(BeginningofFile),Errors,Errors,EOF(EndofFile),rst.Bof=false,rst.Bof=true,系统出错,rst.MovePrevious,rst.Bof=false,RecordSet方法,6、Move方法移动Recordset对象中当前记录的位置格式:rst.MoveNumRecords,StartNumRecords带符号长整型表达式,指定当前记录位置移动的记录数。Start可选,字符串或变体型,用于计算书签。也可为下列值之一:AdBookmarkCurrent默认。从当前记录开始。AdBookmarkFirst从首记录开始。AdBookmarkLast从尾记录开始。,需要注意的是:(1)如果NumRecords参数大于零,则当前游标位置将向下移动(向记录集的末尾)。如果NumRecords小于零,则当前游标位置向上移动(向记录集的开始)。(2)从空的Recordset对象调用Move方法将产生错误。(3)如果Move调用将当前记录位置移动到首记录之前,则ADO将当前记录放置在记录集(BOF为True)的首记录之前。在BOF属性已经为True时试图向后移动将产生错误;如果Move调用将当前记录位置移动,RecordSet方法,7、Open方法:格式:rst.OpenSource,ActiveConnection,CursorType,LockType,OptionsSource参数可以是一段SQL命令、一个指定的数据表名称或是一个StoredProcedure。ActiveConnection参数Recordset对象可以通过ActiveConnection属性来连接Connection对象。,CursorType参数表示将以什么样的游标类型启动数据,包括:adOpenForwardOnly、(默认值)adOpenKeyset、adOpenDynamic、adOpenStatic。LockType参数表示要采用的Lock类型,如果忽略这个参数,那么系统会以Recordset对象的LockType属性为预设值。包含:adLockReadOnly、(默认值)adLockPrssimistic、adLockOptimistic、adLockBatchOptimistic,DimssqlAsStringssql=select*fromstudentorderbySnoSetrst=Nothingrst.Openssql,cn,adOpenStatic,adLockOptimistic,RecordSet方法,8、Close方法:关闭1个数据连接对象,使该连接对象只留在本机内存中,可对其属性更改后再重新建立连接。注意:如果不是关闭对象,而是将对象从内存中清除,应使用Setconnection对象变量=Nothing.Setrst=Nothing,Fields集合(列集合):代表一个记录集中的一个列。通过该对象可以取得一个记录集内不同列的值。RecordSet对象数据的读取方法Text1.Text=rst.Fields(sno)Text2.Text=rst.Fields(1)Text3.Text=rst(Sage)Text4.Text=rst(4),Fields集合,数据库操作的基本步骤,操作数据库的方法如下:(1)打开连接ADO打开连接的主要方法是使用Connection.Open方法。(2)创建命令查询命令要求数据源返回含有所要求记录行的Recordset对象。命令通常使用SQL编写。,(3)执行命令返回Recordset的方法有三种:Connection.Execute、Command.Execute以及Recordset.Open。注意,必须在执行命令之前打开与数据库的连接,不同执行命令的方法在执行命令时连接数据库的方式有所不同。lConnection.Execute方法使用由Connection对象本身表现的连接。lCommand.Execute方法利用其ActiveConnection属性中所设置的Connection对象来表现连接。,Recordset.Open方法可通过其ActiveConnection属性来连接Connection对象。这里的ActiveConnection参数可以是一个指定的Connection对象名称或者是一串包含数据库信息的字符串参数。另一方面,Open方法允许指定CursorType和LockType属性;Execute方法既可执行不返回数据的命令也可返回快速只读、仅向前Recordset对象。,(4)操作数据大量Recordset对象方法和属性可用于对Recordset数据行进行检查、定位以及操作。Recordset可看作行数组,在任意给定时间可进行测试和操作的行为“当前行”,在Recordset中的位置为“当前行位置”。每次移动到另一行时,该行将成为新的当前行。,有多种方法可在Recordset中显示移动或“定位”(Move方法)。一些方法(Find方法)在其操作的附加效果中也能够做到。此外,设置某个属性(Bookmark属性)同样可以更改行的位置。Recordset有一个Fields集合,它是在行中代表每个字段或列的Field集,可从Field对象的Value属性中为字段赋值或检索数据。作为选项,可访问大量字段数据(GetRows和Update方法)。,参考书目,网络数据库,总主编:李琪,重庆大学出版社,第5章开放数据库互连VisualBasic程序设计教程,刘瑞新,电子工业出版社,第15章数据库访问技术,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!