1 / 60

VB 中的 ADO 对象编程

VB 中的 ADO 对象编程. 补充内容. ADO(ActiveX Data Objects) ActiveX 数据对象. 是微软最新的数据访问技术,与 OLE DB 一起工作。 OLE DB 是一个低层的基于 COM 的数据访问接口,它向应用程序提供了一个统一的数据访问方法,用它可以访问各种数据源,包括关系型数据库、电子邮件系统、自定义的商业对象。 其模型如下:. VB 应用程序. ADO. OLE DB. RDBMS. 目录管理. Email. 先在 VB 工程中把 ADO 对象库加载上.

Download Presentation

VB 中的 ADO 对象编程

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. VB中的ADO对象编程 补充内容

  2. ADO(ActiveX Data Objects) ActiveX数据对象 • 是微软最新的数据访问技术,与OLE DB一起工作。 OLE DB是一个低层的基于COM 的数据访问接口,它向应用程序提供了一个统一的数据访问方法,用它可以访问各种数据源,包括关系型数据库、电子邮件系统、自定义的商业对象。 • 其模型如下:

  3. VB应用程序 ADO OLE DB RDBMS 目录管理 Email

  4. 先在VB工程中把ADO对象库加载上 工程 引用 选中microsoft activex data object 2.7 library

  5. 一、通过DSN建立连接 • DSN:应用程序用以请求一个连到ODBC(open database connectivity,开放数据库互连)数据源的连接的名字。 • 也就是说他代表ODBC连接的名字,隐藏了诸如数据库名字、所在目录、数据库驱动程序、用户ID、密码等,使具体的数据库对应用程序变得透明。

  6. 1、DSN分类: • 系统DSN:可以被登陆到系统中的所有用户使用。 • 用户DSN:为特定用户建立的,只能被建立他的用户使用。 • 文件DSN:用于文档的DSN。

  7. 2、如何建立Access的系统DSN:(Winxp) • (1)开始 控制面板 性能维护 管理工具 数据源ODBC; • (2)单击系统DSN选项卡 添加创建新数据源

  8. 3、建立SQL Server系统DSN

  9. Dim cna as new adodb.connection • Dim cnb as new adodb.connection • Private sub command1_click() • Dim cnastring as string • Cnastring=“dsn=sqlpubs;uid=sa;pwd=1234”‘SQL DSN 数据源的连接字符串 • With cna • .connectionstring=cnastring • .connectiontimeout=10 • .open • End with • 或:cna.open “dsn=sqlpubs;uid=sa;pwd=1234” • 或: can.open Cnastring Cna.close ‘关闭连接 End sub

  10. Private sub command2_click() • Dim cnbstring as string • Cnbstring=“dsn=aa;uid=;pwd=”‘Access DSN 数据源的连接字符串 • With cnb • .connectionstring=cnastring • .connectiontimeout=10 • .open • End with • 或:cnb.open“dsn=aa;uid=;pwd=” Cnb.close ‘关闭连接 End sub

  11. 二、直接使用数据库文件名 • 1、SQL Server 的连接字符串 • “driver={SQL Server};server=bjz;database=pubs;uid=sa;pwd=1234” • 2、Access的连接字符串 • (1)“driver=Microsoft access driver(*.mdb);DBQ=“ & app.path & “\student.mdb” • (2)使用OLE DB 提供者建立连接 • "provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ & App.Path & ”\student.mdb" & “user id=;password=”

  12. ADO中比较重要的是:Command,Connection,Recordset对象 • (1) Connection对象Connection对象用于建立与数据库的连接,通过连接可从应用程序访问数据源.它保存诸如指针类型,连接字符串,查询超时,连接超时和缺省数据库这样的连接信息。

  13. 2) Command对象  在建立Connection后,可以发出命令操作数据源。一般情况下,Command对象可以在数据库中添加,删除或更新数据,或者在表中进行数据查询。Command对象在定义查询参数或执行一个有输出参数的存储过程时非常有用。

  14. (3) Recordset对象Recordset对象只代表一个记录集,这个记录集是一个连接的数据库中的表,或者是Command对象的执行结果返回的记录集.在ADO对象模型中,是在行中检查和修改数据的最主要的方法,所有对数据的操作几乎都是在Recordset对象中完成的。Record对象用于指定行,移动行,添加,更改,删除记录.

  15. 在实际编程过程中使用ADO的一个典型的存取数据的步骤为:1、 连接数据源2、 打开记录集对象3、 使用记录集4、 断开连接

  16. 1、 如何连接数据源  利用Connection对象可以创建一个数据源的连接.应用的方法是Connection对象的Open方法.  语法:Connection对象.Open ConnectionString, UserID, PassWord, OpenOptions 其中:Connection对象为你定义的Connection对象的实例;ConnectionString为可选项,包含了连接的数据库的信息;UserID 可选项,包含建立连接的用户名;PassWord为可选项,包含建立连接的用户密码;OpenOptions为可选项,假如设置为dConnectAsync,则连接将异步打开. • 例:cn.open Cnstring

  17. 2.打开记录集对象  实际上记录集返回的是一个从数据库取回的查询结果集.因此有三种打开方法:2.打开记录集对象  实际上记录集返回的是一个从数据库取回的查询结果集.因此有三种打开方法: • 一种使用记录集的Open方法。 • 另一种是用Connection对象的Execute方法. • 一种是用Command对象的Execute方法.

  18. (a)记录集的Open方法  语法:Recordset.Open Source, ActiveConnection, CursorType, LockType, Options  其中:Recordset为所定义的记录集对象的实例.Source可选项,指明了所打开的记录源信息.可以是合法的命令,对象变量名,SQL语句,表名,存储过程调用,或保存记录集的文件名.ActiveConnection可选项,合法的已打开的Connection对象的变量名,或者是包含ConnectionString参数的字符串.CursorType可选项,确定打开记录集对象使用的指针类型.LockType可选项 确定打开记录集对象使用的锁定类型.

  19. (b)Connection对象的Execute方法  语法:Set recordset=Connection.Execute(CommandText,RecordsAffected,Options)  参数说明: CommandText 一个字符串,返回要执行的SQL命令,表名,存储过程或指定文本.RecordsAffected 可选项,Long类型的值,返回操作影响的记录数.Options 可选项,Long类型值,指明如何处理CommandText参数.

  20. (c) Command对象的Execute方法 使用Command对象的Execute方法执行CommandText属性中设置的SQL命令,返回查询记录集.语法如下:Command.Execute RecordsAffected, Parameters, Options '不返回记录集或者 Set Recordset= command.Execute(RecordsAffected,Parameters,Options) ‘返回记录集 CommandText的语法为:Command.CommandText=stringvariable  其中: stringvariable为字符串变量,包含SQL语句,表名或存储过程.

  21. 3.使用记录集(a)添加新的记录:  在ADO中添加新的记录用的方法为:AddNew 它的语法为:Recordset.AddNew FieldList, ValuesRecordset为记录集对象实例FieldList为一个字段名,或者是一个字段数组.Values为给要加信息的字段赋的值,如果FiledList为一个字段名,那么Values应为一个单个的数值,假如FiledList为一个字段数组,那么Values必须也为一个个数,类型与FieldList相同的数组.  当用AddNew方法为记录集添加新的记录后,应使用UpDate将所添加的的数据存储在数据库中. (记录的修改)

  22. (b)删除记录  在ADO中删除记录集中的数据的方法为:Delete方法,这与DAO对象的方法相同,但是在ADO中它的能力增强了,可以删掉一组记录了.  它的语法如下:Recordset.Delete AffectRecords  其中的,AffectRecords参数是确定Delete方法作用的方式的,它的取值如下:adAffectCurrent 只删除当前的记录adAffectGroup 删除符合Filter属性设置的那些记录.为了一次能删除一组数据,应设置Filter属性.

  23. (c)查询记录  在ADO中查询的方法很灵活,有几种查询的方法.  使用连接对象的Execute方法执行SQL命令,返回查询记录集.  使用Command对象的Execute方法执行CommandText属性中设置的SQL命令,返回查询记录集.(c)查询记录  在ADO中查询的方法很灵活,有几种查询的方法.  使用连接对象的Execute方法执行SQL命令,返回查询记录集.  使用Command对象的Execute方法执行CommandText属性中设置的SQL命令,返回查询记录集. 使用记录集的Open方法,返回查询记录集。

  24. 4. 断开连接  在应用程序结束之前,应该释放分配给ADO对象的资源,操作系统回收这些资源并可以再分配给其他应用程序.  使用的方法为:Close方法.  语法如下:Object.Close ‘ Object为ADO对象 如果不做的话,通常VisualBasic会自动释放和回收资源。 rs.CloseSet rs=NothingSet cmd=Nothingcn.CloseSet cn=Nothing

  25. 二、 数据库访问对象(ADO) • ADO(ActiveX Data Objects)ActiveX数据对象是微软最新的数据访问技术,与OLE DB一起工作。 •  在Visual Basic中使用ADO • 在一个打开的Visual Basic 6.0的工程中,选择菜单〔工程〕 / 〔引用〕命令,出现“引用”对话框。在“可用的引用”列表框中选择Microsoft ActiveX Data Objects 2.8 选项,单击〔确定〕按钮,就可以在程序中加入对ADO的引用了。

  26. 使用ADO可以实现以下目的: • 连接一个本地数据库或远程数据库 • 打开一个指定的数据库表,或定义一个基于结构化查询语言(SQL)的查询或存储过程或该数据库中的表的视图的记录集合 • 将数据字段的值传递给数据绑定的控件,可以在这些控件中显示或更改这些数值 • 添加新的记录,或根据对绑定的控件中的数据的更改来更新一个数据库

  27. ADO的内置对象 1、连接对象( Connection ) 用来与数据库建立连接。在建立连接前,最主要的是需要设置连接字符串,用来指定连接数据库所用的驱动程序、数据源名称、用户名和密码等。 常用的属性与方法: • ConnectionString属性:连接字符串,在打开连接前需要设置 • ConnectionTimeout和Mode属性:超时时间和连接模式,一般在打开连接前也需要设置 • CursorLocation属性:设置或者返回游标位置 • DefaultDatabase属性:为连接指定一个默认的据库 • Provider属性:为连接指定一个驱动程序,可以包括在ConnectionString 中 • Open,Close 方法:建立或中断一个连接 • Execute方法:在连接上执行命令,比如执行一个SQL语句 • Errors对象:数据源返回的错误信息  (eg)

  28. “连接”是交换数据所必需的环境,通过“连接”可使应用程序访问数据源。 Connection对象用于指定专门的提供者和任意参数。下表 列出Connection对象的常用属性和方法。

  29. 如何连接 • 利用Connection对象可以创建一个数据源的连接.应用的方法是Connection对象的Open方法.  语法:Connection对象.Open ConnectionString, UserID, PassWord, OpenOptions 其中:Connection对象为你定义的Connection对象的实例;ConnectionString为可选项,包含了连接的数据库的信息;UserID 可选项,包含建立连接的用户名;PassWord为可选项,包含建立连接的用户密码;OpenOptions为可选项,假如设置为adConnectAsync,则连接将异步打开.

  30. 直接使用数据库文件名建立连接 1、SQL Server 的连接字符串 “driver={SQL Server};server=127.0.0.1;database=student;uid=sa;pwd=xxxx” 2、Access的连接字符串 (1)“driver=Microsoft access driver(*.mdb);DBQ=“ & app.path & “\student.mdb” (2)使用OLE DB 提供者建立连接 "provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ & App.Path & ”\student.mdb" & “user id=;password=”

  31. 2、命令对象(Command) 定义了数据库的一系列操作。使用命令对象来查询数据库,查询结果以数据集对象(Recordset)形式返回。命令对象在操纵数据库前需要与一个已经打开的连接对象(Connection)建立关联。 常用的属性与方法: ActiveConnection属性:将一个命令行对象与一个打开的连接关联 CommandText属性:定义命令行的内容,比如SQL语句等 CommandType属性:指定命令的类型 CommandTimeout属性:指定服务器等待一条命令执行的时间 Execute方法:执行命令并返回一个数据集对象(Recordset)

  32. 3、数据集对象(Recordset)   定义了从数据库返回的一系列记录的集合。通过数据集可以对记录及组成记录的列进行各种操作。 常用的属性与方法: RecordCount属性:返回记录集中记录的条数 BOF,EOF属性:返回记录集中游标的当前位置是否是记录集的头或尾 MoveNext,MovePre:将记录集中的游标向后、前移动一个位置 MoveFirst,MoveLast:将记录集中的游标移动到最前或最后

  33. 打开记录集对象  实际上记录集返回的是一个从数据库取回的查询结果集.因此他有三种打开方法:打开记录集对象  实际上记录集返回的是一个从数据库取回的查询结果集.因此他有三种打开方法: • 一种使用记录集的Open方法, • 另一种是用Connection对象的Execute方法. • 第三种是使用Command对象的Execute方法执行CommandText属性中设置的SQL命令,返回查询记录集.

  34. 1.记录集的Open方法  语法:Recordset.Open Source, ActiveConnection, CursorType, LockType, Options  其中:Recordset为所定义的记录集对象的实例.Source可选项,指明了所打开的记录源信息.可以是合法的命令,对象变量名,SQL语句,表名,存储过程调用,或保存记录集的文件名.ActiveConnection可选项,合法的已打开的Connection对象的变量名,或者是包含ConnectionString参数的字符串.CursorType可选项,确定打开记录集对象使用的指针类型.LockType可选项 确定打开记录集对象使用的锁定类型.

  35. 使用recordset 的 open方法返回记录集: dim cn as new adodb.connection dim rs as new adodb.recordset Dim cnstring$,strsql$ Cnstring=“driver={SQL Server};server=127.0.0.1;database=student;uid=sa;pwd=” Strsql =“select * from 基本情况 where 班级=”05网一“or 班级=”05网二“” Cn.open cnstring Rs.open strsql,cn,1,1 记录集锁类型 1:只读 3:开放式可以update 记录集类型, 1是键集游标

  36. CursorType(游标类型)有四种:程序中常用第二种AdOpenKeyset,CursorType(游标类型)有四种:程序中常用第二种AdOpenKeyset, • AdOpenForwardOnly = 0 ''只能用MoveNext读取,并且打开的同时建立的数据库的备份,不能即时体现数据库记录状态,比如记录的编辑和增删.AdOpenKeyset = 1 ''可上下滚动的游标,给打开的记录创建了一个关键字列表,类似记录集的描述,访问的时候才去取得数据值,就是说可以即时看到修改信息,但是不能即时得到数据是否删除的信息,因为这个关键字列表是事先初始化好的.AdOpenDynamic = 2 ''完全可滚动,可得到数据的最新状态,执行效率也会有所降低.AdOpenStatic = 3 '' 完全可滚动,但是和adOpenKeyset类似,它先将数据库备份文件之后进行操作.可以断开数据库连接后继续使用.

  37. ADO锁的类型有四种 : • AdLockReadOnly = 1''只读锁,不能操作记录AdLockPessimistic= 2''悲观锁,操作者打开之后立即上锁,直到修改完成或者放弃修改为止,此时其他人无法编辑.AdLockOptimistic= 3''乐观锁,当记录将要被更新的时候才开始上锁,但是不能保证在提交修改之前是否有人改动过.AdLockBatchOptimistic= 4''批量乐观锁,SQL server中要使用它,必须打开一个可上下滚动的游标,如adOpenKeyset,adOpenStatic.

  38. 2.Connection对象的Execute方法  语法: • Set recordset= Connection.Execute(CommandText,RecordsAffected,Options)  参数说明: CommandText 一个字符串,返回要执行的SQL命令,表名,存储过程或指定文本.RecordsAffected 可选项,Long类型的值,返回操作影响的记录数.Options 可选项,Long类型值,指明如何处理CommandText参数.

  39. 使用connection 的 execute方法返回记录集: dim cn as new adodb.connection dim rs as new adodb.recordset Dim cnstring$,strsql$ Cnstring=“driver={SQL Server};server=127.0.0.1;database=student;uid=sa;pwd=” Strsql =“select * from 基本情况 where 班级=‘05网一’or 班级=‘05网二’” Cn.open cnstring Set Rs=cn.execute (strsql)

  40. 3.使用Command对象的Execute方法执行CommandText属性中设置的SQL命令,返回查询记录集.3.使用Command对象的Execute方法执行CommandText属性中设置的SQL命令,返回查询记录集. Command对象的Execute方法的语法如下:Command.Execute RecordsAffected, Parameters, Options '不返回记录集或者 Set Rscordset= command.Execute(RecordsAffected,Parameters,Options) '返回记录集CommandText的语法为:Command.CommandText=stringvariable  其中: stringvariable为字符串变量,包含SQL语句,表名或存储过程.

More Related