600 likes | 798 Views
VB 中的 ADO 对象编程. 补充内容. ADO(ActiveX Data Objects) ActiveX 数据对象. 是微软最新的数据访问技术,与 OLE DB 一起工作。 OLE DB 是一个低层的基于 COM 的数据访问接口,它向应用程序提供了一个统一的数据访问方法,用它可以访问各种数据源,包括关系型数据库、电子邮件系统、自定义的商业对象。 其模型如下:. VB 应用程序. ADO. OLE DB. RDBMS. 目录管理. Email. 先在 VB 工程中把 ADO 对象库加载上.
E N D
VB中的ADO对象编程 补充内容
ADO(ActiveX Data Objects) ActiveX数据对象 • 是微软最新的数据访问技术,与OLE DB一起工作。 OLE DB是一个低层的基于COM 的数据访问接口,它向应用程序提供了一个统一的数据访问方法,用它可以访问各种数据源,包括关系型数据库、电子邮件系统、自定义的商业对象。 • 其模型如下:
VB应用程序 ADO OLE DB RDBMS 目录管理 Email
先在VB工程中把ADO对象库加载上 工程 引用 选中microsoft activex data object 2.7 library
一、通过DSN建立连接 • DSN:应用程序用以请求一个连到ODBC(open database connectivity,开放数据库互连)数据源的连接的名字。 • 也就是说他代表ODBC连接的名字,隐藏了诸如数据库名字、所在目录、数据库驱动程序、用户ID、密码等,使具体的数据库对应用程序变得透明。
1、DSN分类: • 系统DSN:可以被登陆到系统中的所有用户使用。 • 用户DSN:为特定用户建立的,只能被建立他的用户使用。 • 文件DSN:用于文档的DSN。
2、如何建立Access的系统DSN:(Winxp) • (1)开始 控制面板 性能维护 管理工具 数据源ODBC; • (2)单击系统DSN选项卡 添加创建新数据源
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
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
二、直接使用数据库文件名 • 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=”
ADO中比较重要的是:Command,Connection,Recordset对象 • (1) Connection对象Connection对象用于建立与数据库的连接,通过连接可从应用程序访问数据源.它保存诸如指针类型,连接字符串,查询超时,连接超时和缺省数据库这样的连接信息。
2) Command对象 在建立Connection后,可以发出命令操作数据源。一般情况下,Command对象可以在数据库中添加,删除或更新数据,或者在表中进行数据查询。Command对象在定义查询参数或执行一个有输出参数的存储过程时非常有用。
(3) Recordset对象Recordset对象只代表一个记录集,这个记录集是一个连接的数据库中的表,或者是Command对象的执行结果返回的记录集.在ADO对象模型中,是在行中检查和修改数据的最主要的方法,所有对数据的操作几乎都是在Recordset对象中完成的。Record对象用于指定行,移动行,添加,更改,删除记录.
在实际编程过程中使用ADO的一个典型的存取数据的步骤为:1、 连接数据源2、 打开记录集对象3、 使用记录集4、 断开连接
1、 如何连接数据源 利用Connection对象可以创建一个数据源的连接.应用的方法是Connection对象的Open方法. 语法:Connection对象.Open ConnectionString, UserID, PassWord, OpenOptions 其中:Connection对象为你定义的Connection对象的实例;ConnectionString为可选项,包含了连接的数据库的信息;UserID 可选项,包含建立连接的用户名;PassWord为可选项,包含建立连接的用户密码;OpenOptions为可选项,假如设置为dConnectAsync,则连接将异步打开. • 例:cn.open Cnstring
2.打开记录集对象 实际上记录集返回的是一个从数据库取回的查询结果集.因此有三种打开方法:2.打开记录集对象 实际上记录集返回的是一个从数据库取回的查询结果集.因此有三种打开方法: • 一种使用记录集的Open方法。 • 另一种是用Connection对象的Execute方法. • 一种是用Command对象的Execute方法.
(a)记录集的Open方法 语法:Recordset.Open Source, ActiveConnection, CursorType, LockType, Options 其中:Recordset为所定义的记录集对象的实例.Source可选项,指明了所打开的记录源信息.可以是合法的命令,对象变量名,SQL语句,表名,存储过程调用,或保存记录集的文件名.ActiveConnection可选项,合法的已打开的Connection对象的变量名,或者是包含ConnectionString参数的字符串.CursorType可选项,确定打开记录集对象使用的指针类型.LockType可选项 确定打开记录集对象使用的锁定类型.
(b)Connection对象的Execute方法 语法:Set recordset=Connection.Execute(CommandText,RecordsAffected,Options) 参数说明: CommandText 一个字符串,返回要执行的SQL命令,表名,存储过程或指定文本.RecordsAffected 可选项,Long类型的值,返回操作影响的记录数.Options 可选项,Long类型值,指明如何处理CommandText参数.
(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语句,表名或存储过程.
3.使用记录集(a)添加新的记录: 在ADO中添加新的记录用的方法为:AddNew 它的语法为:Recordset.AddNew FieldList, ValuesRecordset为记录集对象实例FieldList为一个字段名,或者是一个字段数组.Values为给要加信息的字段赋的值,如果FiledList为一个字段名,那么Values应为一个单个的数值,假如FiledList为一个字段数组,那么Values必须也为一个个数,类型与FieldList相同的数组. 当用AddNew方法为记录集添加新的记录后,应使用UpDate将所添加的的数据存储在数据库中. (记录的修改)
(b)删除记录 在ADO中删除记录集中的数据的方法为:Delete方法,这与DAO对象的方法相同,但是在ADO中它的能力增强了,可以删掉一组记录了. 它的语法如下:Recordset.Delete AffectRecords 其中的,AffectRecords参数是确定Delete方法作用的方式的,它的取值如下:adAffectCurrent 只删除当前的记录adAffectGroup 删除符合Filter属性设置的那些记录.为了一次能删除一组数据,应设置Filter属性.
(c)查询记录 在ADO中查询的方法很灵活,有几种查询的方法. 使用连接对象的Execute方法执行SQL命令,返回查询记录集. 使用Command对象的Execute方法执行CommandText属性中设置的SQL命令,返回查询记录集.(c)查询记录 在ADO中查询的方法很灵活,有几种查询的方法. 使用连接对象的Execute方法执行SQL命令,返回查询记录集. 使用Command对象的Execute方法执行CommandText属性中设置的SQL命令,返回查询记录集. 使用记录集的Open方法,返回查询记录集。
4. 断开连接 在应用程序结束之前,应该释放分配给ADO对象的资源,操作系统回收这些资源并可以再分配给其他应用程序. 使用的方法为:Close方法. 语法如下:Object.Close ‘ Object为ADO对象 如果不做的话,通常VisualBasic会自动释放和回收资源。 rs.CloseSet rs=NothingSet cmd=Nothingcn.CloseSet cn=Nothing
二、 数据库访问对象(ADO) • ADO(ActiveX Data Objects)ActiveX数据对象是微软最新的数据访问技术,与OLE DB一起工作。 • 在Visual Basic中使用ADO • 在一个打开的Visual Basic 6.0的工程中,选择菜单〔工程〕 / 〔引用〕命令,出现“引用”对话框。在“可用的引用”列表框中选择Microsoft ActiveX Data Objects 2.8 选项,单击〔确定〕按钮,就可以在程序中加入对ADO的引用了。
使用ADO可以实现以下目的: • 连接一个本地数据库或远程数据库 • 打开一个指定的数据库表,或定义一个基于结构化查询语言(SQL)的查询或存储过程或该数据库中的表的视图的记录集合 • 将数据字段的值传递给数据绑定的控件,可以在这些控件中显示或更改这些数值 • 添加新的记录,或根据对绑定的控件中的数据的更改来更新一个数据库
ADO的内置对象 1、连接对象( Connection ) 用来与数据库建立连接。在建立连接前,最主要的是需要设置连接字符串,用来指定连接数据库所用的驱动程序、数据源名称、用户名和密码等。 常用的属性与方法: • ConnectionString属性:连接字符串,在打开连接前需要设置 • ConnectionTimeout和Mode属性:超时时间和连接模式,一般在打开连接前也需要设置 • CursorLocation属性:设置或者返回游标位置 • DefaultDatabase属性:为连接指定一个默认的据库 • Provider属性:为连接指定一个驱动程序,可以包括在ConnectionString 中 • Open,Close 方法:建立或中断一个连接 • Execute方法:在连接上执行命令,比如执行一个SQL语句 • Errors对象:数据源返回的错误信息 (eg)
“连接”是交换数据所必需的环境,通过“连接”可使应用程序访问数据源。 Connection对象用于指定专门的提供者和任意参数。下表 列出Connection对象的常用属性和方法。
如何连接 • 利用Connection对象可以创建一个数据源的连接.应用的方法是Connection对象的Open方法. 语法:Connection对象.Open ConnectionString, UserID, PassWord, OpenOptions 其中:Connection对象为你定义的Connection对象的实例;ConnectionString为可选项,包含了连接的数据库的信息;UserID 可选项,包含建立连接的用户名;PassWord为可选项,包含建立连接的用户密码;OpenOptions为可选项,假如设置为adConnectAsync,则连接将异步打开.
直接使用数据库文件名建立连接 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=”
2、命令对象(Command) 定义了数据库的一系列操作。使用命令对象来查询数据库,查询结果以数据集对象(Recordset)形式返回。命令对象在操纵数据库前需要与一个已经打开的连接对象(Connection)建立关联。 常用的属性与方法: ActiveConnection属性:将一个命令行对象与一个打开的连接关联 CommandText属性:定义命令行的内容,比如SQL语句等 CommandType属性:指定命令的类型 CommandTimeout属性:指定服务器等待一条命令执行的时间 Execute方法:执行命令并返回一个数据集对象(Recordset)
3、数据集对象(Recordset) 定义了从数据库返回的一系列记录的集合。通过数据集可以对记录及组成记录的列进行各种操作。 常用的属性与方法: RecordCount属性:返回记录集中记录的条数 BOF,EOF属性:返回记录集中游标的当前位置是否是记录集的头或尾 MoveNext,MovePre:将记录集中的游标向后、前移动一个位置 MoveFirst,MoveLast:将记录集中的游标移动到最前或最后
打开记录集对象 实际上记录集返回的是一个从数据库取回的查询结果集.因此他有三种打开方法:打开记录集对象 实际上记录集返回的是一个从数据库取回的查询结果集.因此他有三种打开方法: • 一种使用记录集的Open方法, • 另一种是用Connection对象的Execute方法. • 第三种是使用Command对象的Execute方法执行CommandText属性中设置的SQL命令,返回查询记录集.
1.记录集的Open方法 语法:Recordset.Open Source, ActiveConnection, CursorType, LockType, Options 其中:Recordset为所定义的记录集对象的实例.Source可选项,指明了所打开的记录源信息.可以是合法的命令,对象变量名,SQL语句,表名,存储过程调用,或保存记录集的文件名.ActiveConnection可选项,合法的已打开的Connection对象的变量名,或者是包含ConnectionString参数的字符串.CursorType可选项,确定打开记录集对象使用的指针类型.LockType可选项 确定打开记录集对象使用的锁定类型.
使用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是键集游标
CursorType(游标类型)有四种:程序中常用第二种AdOpenKeyset,CursorType(游标类型)有四种:程序中常用第二种AdOpenKeyset, • AdOpenForwardOnly = 0 ''只能用MoveNext读取,并且打开的同时建立的数据库的备份,不能即时体现数据库记录状态,比如记录的编辑和增删.AdOpenKeyset = 1 ''可上下滚动的游标,给打开的记录创建了一个关键字列表,类似记录集的描述,访问的时候才去取得数据值,就是说可以即时看到修改信息,但是不能即时得到数据是否删除的信息,因为这个关键字列表是事先初始化好的.AdOpenDynamic = 2 ''完全可滚动,可得到数据的最新状态,执行效率也会有所降低.AdOpenStatic = 3 '' 完全可滚动,但是和adOpenKeyset类似,它先将数据库备份文件之后进行操作.可以断开数据库连接后继续使用.
ADO锁的类型有四种 : • AdLockReadOnly = 1''只读锁,不能操作记录AdLockPessimistic= 2''悲观锁,操作者打开之后立即上锁,直到修改完成或者放弃修改为止,此时其他人无法编辑.AdLockOptimistic= 3''乐观锁,当记录将要被更新的时候才开始上锁,但是不能保证在提交修改之前是否有人改动过.AdLockBatchOptimistic= 4''批量乐观锁,SQL server中要使用它,必须打开一个可上下滚动的游标,如adOpenKeyset,adOpenStatic.
2.Connection对象的Execute方法 语法: • Set recordset= Connection.Execute(CommandText,RecordsAffected,Options) 参数说明: CommandText 一个字符串,返回要执行的SQL命令,表名,存储过程或指定文本.RecordsAffected 可选项,Long类型的值,返回操作影响的记录数.Options 可选项,Long类型值,指明如何处理CommandText参数.
使用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)
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语句,表名或存储过程.