VB中的ADO数据对象编程详解
VBA-使用ADO操作外部数据
VBA-使⽤ADO操作外部数据使⽤ADO连接外部excel数据源补充⼩知识:在不打开⽂件的情况下,抓取数据1)打开数据-现有连接-浏览更多,然后导⼊你要导的数据,就能在不打开该⽂件的条件下,进⾏透视,操作等。
然后就是通过VBA来实现这个⼩功能Sub test1()MsgBox "叫""张三""的那个⼈"'想要输出:叫“张三”的那个⼈,那么需要多加⼀层“”,将⾥⾯的双引号转义End Sub1)⾸先要打开通道 在VBA界⾯中⼯具引⽤,勾选 Microsoft ActiveX Data Objects x.x Library ,借此就可以使⽤ADO通道2)然后⽤代码来实现这个通道Sub test()Dim conn As New ADODB.Connection '定义⼀个通道conn.Open "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=D:\data\Edata.xlsx;extended properties=""excel 12.0;HDR=YES"""'通过什么⽅法,连接什么⽂件,是否有表头'conn.Execute("select * from [data$]") '*代表所有的列表明后⾯需要加 $,在这⾥是已经抓取到数据了Range("a1").CopyFromRecordset conn.Execute("select * from [data$]") '前⾯Range("a1").CopyFromRecordset的作⽤是将抓取到的数据放到以“a1”为头的单元格⾥ 'SQL语句都在这个双引号⾥⾯进⾏操作conn.CloseEnd Sub3)SQL语句操作表Sub test()Dim conn As New ADODB.ConnectionDim sql As Stringconn.Open "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=D:\data\Edata.xlsx;extended properties=""excel 12.0;HDR=YES"""Range("a2:z100").ClearContents'Range("a1").CopyFromRecordset conn.Execute("select * from [data$] union all select * from [data2$]") '连接两个数据这⾥是上下的合并'Range("a1").CopyFromRecordset conn.Execute("select 姓名,年龄 from [data$] union all select 姓名,年龄 from [data2$]") '如果两个表不⼀样可以⽤共名的'Range("a1").CopyFromRecordset conn.Execute("select 姓名,年龄 from [data$] where 性别='男'") '条件查找在这SQL语句中可以使⽤单引号 '可以使⽤下⾯的⽅法简写sql = "insert into [data$] (姓名,性别,年龄) values ('⽥七','男',33)"'往数据⾥插⼊⼀⾏数据conn.Execute (sql) '执⾏代码conn.CloseEnd Sub常⽤SQL语句:什么数据库都可以⽤此操作查询数据select * from [data$]查询某⼏个字段select姓名,年龄from [data$]带条件的查询select * from [data$] where性别 = "男“合并两个表的数据select * from [data$] union all select * from [data2$]插⼊新纪录insert into [data$] (姓名,性别,年龄) values ('AA','男',33)修改⼀条数据update [data$] set性别=‘男’,年龄=16where姓名=‘张三‘删除⼀条数据delete from [data$] where姓名='张三'使⽤LEFT JOIN …ON… (类似于VLOOKUP)select [data3$].姓名,性别,年龄,⽉薪from [data$] left join [data3$] on [data$].姓名=[data3$].姓名先UNION ALL 再LEFT JOINselect * from (select * from [data$] union all select * from [data2$])a left join [data3$] on a.姓名=[data3$].姓名'将查询结果赋值到数组arr = Application.WorksheetFunction.Transpose(conn.Execute("select * from [data$]").GetRows)left join on⽅法讲解Sub test()Dim conn As New ADODB.ConnectionDim sql As Stringconn.Open "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=D:\data\Edata.xlsx;extended properties=""excel 12.0;HDR=YES"""'sql = "select * from [data$] left join [data3$] on [data$].姓名=[data3$].姓名" '在这⾥会出个错误,就是有两个姓名列,错在*上'(select * from [data$]) (left join [data3$] on [data$].姓名=[data3$].姓名) 为⽅便理解上⾯为啥错误,上⾯语句应该这样断'left是以左边的数据为主,也可以使⽤right以右边的数据为主sql = "select [data$].姓名,性别,年龄,⽉薪 from [data$] left join [data3$] on [data$].姓名=[data3$].姓名"Range("a2:z100").ClearContentsRange("a2").CopyFromRecordset conn.Execute(sql)conn.CloseEnd Sub先合并两个表,然后再left joinSub test()Dim conn As New ADODB.ConnectionDim sql As Stringconn.Open "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=D:\data\Edata.xlsx;extended properties=""excel 12.0;HDR=YES"""'sql = "(select * from [data$] union all select * from [data2$])a" 意思是两个表连接成的新表名字叫做 asql = "select a.姓名,性别,年龄,⽉薪 from (select * from [data$] union all select * from [data2$])a left join [data3$] on a.姓名=[data3$].姓名" Range("a2:z100").ClearContentsRange("a2").CopyFromRecordset conn.Execute(sql)conn.CloseEnd Sub使⽤ADO连接ACCESS数据库Sub test()Dim conn As New ADODB.ConnectionDim sql As Stringconn.Open "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=D:\data\Adata.accdb" '在这⾥就不需要表头了sql = "select * from [客户信息表] where 城市='天津'" ‘查找语句是⼀样的Range("a2:z100").ClearContentsRange("a2").CopyFromRecordset conn.Execute(sql)conn.CloseEnd SubADO⼯具打开的另⼀种⽅式Sub Macro2()Dim cnn As ObjectSet cnn = CreateObject("adodb.connection")cnn.Open "provider=microsoft.jet.oledb.4.0;extended properties='excel 8.0;imex=1;hdr=no';Data Source=" & ThisWorkbook.Path & "\Book2.xls" [a1].CopyFromRecordset cnn.Execute("[Sheet1$]")cnn.CloseSet cnn = NothingEnd Sub。
ADO对象模型编程
ADO对象模型ADO,即ActiveX数据对象,实际是一种提供访问各种数据类型的连接机制。
ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口,可以使用任何一种ODBC数据源,即不只适合于SQL Server,Oracle,Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件和无格式的数据文件。
1.1 什么是ADOADO是为Microsoft最新最强大的数据访问范例OLE DB而设计的,是基于OLE DB之上的技术,因此ADO通过其内部的属性和方法提供统一的数据访问接口方法,是一个便于使用的应用程序层接口。
ADO 是独立于开发工具和开发语言的简单而且容易使用的数据接口。
ADO对象可以在所有支持COM和OLE的平台上使用,如VB,VC++,VBScript和Java等等。
OLE DB是一种底层数据访问界面接口,它是一套部件对象模型(COM)接口,用于第三方驱动程序商家开发输出数据源到ADO技术的应用程序或用于C++的开发者开发定制的数据库组件。
OLE DB接口支持大量可应用于数据源的DBMS功能,提供了对任何数据库的高效的访问,包括关系数据库和非关系数据库、电子邮件和文件系统,以及文本文件和图形等,使数据源能够共享其数据。
ADO使用了与DAO相似的约定和特性,但ADO当前并不支持DAO的所有功能。
ADO具有非常简单的对象模型,如图1.1所示,包括以下7个对象:图1.1 ADO数据模型Connection,Command,Parameter,Recordset,Field,Property,Error此外,还包含以下4个集合:Fields,Properties,Parameters,ErrorsADO的核心是Connection,Recordset和Command对象。
1.1.1 Connection对象ADO Connection 对象用于创建一个到达某个数据源的开放连接。
VB中用ADO对象动态创建数据库和表(二)
VB中用ADO对象动态创建数据库和表(二)前面讲到的方法有一定的局限性,它不能让用户产生自己所需的数据库文件,即使能产生数据表也只能在原有表的基础上生成。
我们现在的目的就是让用户利用ADO对象在程序运行过程中创建数据库和表,就好象他利用Access来建立数据库和表一样。
为此,我们应该引用对象库"Microsoft ActiveX Data Objects 2.5 Library"和"Microsof t ADO Ext 2.1. For DDL Security"我们不妨用一个实例来说明具体的操作过程和方法。
我们的实例要达到目的是:在程序运行过程中建立一个数据库,数据库的名称由用户输入。
然后在数据库中建立一个名为"MyTable"的数据表,数据表中有三个字段,它们分别是:"编号"(整数型)、"姓名"(字符型,宽度为8)、"住址" (字符型,宽度为50),接着在数据表中添加一条记录,最后在DataGrid控件中把记录的内容显示出来,并且让用户在Data Grid控件中任意修改、添加记录。
首先在vb中新建一个窗体,然后在"工程"菜单中引用对象库"Mic rosoft ActiveX Data Objects 2.5 Library"和"Microsoft ADO Ext 2.1. For DDL Security"。
接着定义三个窗体级的对象变量和一个窗体级的字符串变量,它们的具体定义是:Dim cat As New ADOX.Catalog '不用cat用另外一个名字也可以Dim conn As New ADODB.ConnectionDim rs As New ADODB.RecordsetDim pstr As String '定义该变量是为了后面的书写方便为了更灵活地创建数据库,我们可以在窗体中加入一个通用对话框、一个DataGrid控件,三个命令按钮,它们的标题分别是:创建数据库和表、查看、更新。
VB中ADO对象访问数据库编程方法解析
1引言目前在Visual Basic中开发数据库程序主要有D A O、R D O、A D O、O D B C四种数据库开发技术。
其中最流行的是A D O。
它是基于全新的O L E D B 技术。
O D B C本身是以SQL Server、Oracle等关系数据库作为访问对象;O L E D B则不仅限于此,而将是可以对电子邮件、文本文件、复合文件、数据表等各种各样的数据通过统一的接口进行存取的技术。
O L E D B不能从V B直接进行访问,但可以通过称为A D O的C O M 接口对它进行访问。
A D O也是开发基于W e b数据库应用软件的最佳手段。
A D O编程主要有两种方式,一种是A D O控件编程,即在程序的窗体当中必须添加A D O控件,然后通过调用A D O控件的属性和方法来进行编程。
但在开发大型数据库的时候,很少直接使用A D O控件来进行编程,而是在程序中调用A D O的对象即Connection、RecordSet等进行编程。
2基本原理A D O编程接口包括6个重要的对象,具体如下。
Connection(连接:这个接口表示正在使用的数据源和A D O接口之间的连接。
任何与数据源有交互连接的A D O都可能导致一个或多个从数据源返回的错误,因此C o n-nection接口包含了产生所有错误的接口。
E r r o r(错误集:这个接口表示一个由数据源返回的错误。
相对于Connection的错误集,Error更具体。
可以利用一个Error 来判读出错的准确原因。
C o m m a n d(命令:这个接口表示一个能被数据提供者处理的命令。
C o m m a n d接口可以返回一个R e c o r d S e t记录集或执行一个动作(如查询、修改、删除或插入。
任何时候查询或存储过程能接收的数据都能通过Parameter接口传给它。
Parameter(参数:这个接口表示传给C o m m a n d的参数。
VB中使用ADO对象模型编程访问数据库
C mma d对 象 包 含 关 于 某 个 命 令 , 如 o n 例 查询字 符 串 、 数定 义 等信 息. 参 在建立 C n et n o n ci o 后 , 以发 出命 令 操 作 数 据 源. 般情 况下 C m— 可 一 o ma d对 象 可 以在 数 据 库 中添 加 、 除 或 更 新 数 n 删 据 , 者在 表 中 进 行 数 据 查 询 . o 或 C mma d对 象 在 n 定义查 询参 数 或执 行 一个 有输 出参 数 的存储过 程 时非 常有 用. P rmee 对 象 包 含 参 数 化 的 C mma d aa tr o n 对象 的某 单 个 参 数 的 信 息 . C mma d对 象 有 该 o n 个 包 含 其 所 有 P rmee aa tr对 象 的 P rmees aa tr 集合 . Reo d e 对 象 用 来 存 储 数 据 操 作返 回 的 cr st 记 录集. c r s t 象 只代 表 一 个 记 录 集 , 个 Reo d e 对 这 记 录 集 是 一 个 连 接 的 数 据 库 中 的 表 , 者 是 或 C mma d对 象 的 执 行 结 果 返 回 的 记 录 集 .在 o n AD O对 象模 型 中 , 是在 行 中检查 和修 改 数据 的最 主 要 的 方 法 , 有 对 数 据 的 操 作 几 乎 都 是 在 所 R c r st 象 中完 成. eo d对 象 用 于 指 定行 、 eo d e 对 R cr 移 动行 、 添加 、 改 、 除记 录. 更 删 Fed对 象 包 含 记 录 集 中 数 据 的 某 单 个 列 i l 的 信 息.掌 握 其 中 的 C mma d C n et n o n 、 o n ci 、 o R c r st 象 就可 以实 现基 本 的数据 库操 作. eo d e 对
VB中的ADO对象编程
2.打开记录集对象 实际上记录集返回的是一个从数据 库取回的查询结果集.因此有三种打开方 法: 一种使用记录集的Open方法。 另一种是用Connection对象的Execute方 法. 一种是用Command对象的Execute方法.
(a)记录集的Open方法 语法: Recordset.Open Source, ActiveConnection, CursorType, LockType, Options 其中: Recordset为所定义的记录集对象的实例. Source可选项,指明了所打开的记录源信息.可以是 合法的命令,对象变量名,SQL语句,表名,存储过程调用, 或保存记录集的文件名. ActiveConnection可选项,合法的已打开的 Connection对象的变量名,或者是包含 ConnectionString参数的字符串. CursorType可选项,确定打开记录集对象使用的指 针类型. LockType可选项 确定打开记录集对象使用的锁定 类型.
(3) Recordset对象 Recordset对象只代表一个记录集,这个记 录集是一个连接的数据库中的表,或者是 Command对象的执行结果返回的记录集.在ADO 对象模型中,是在行中检查和修改数据的最主 要的方法,所有对数据的操作几乎都是在 Recordset对象中完成的。Record对象用于指 定行,移动行,添加,更改,删除记录.
–
ADO的内置对象 1、连接对象( Connection )
用来与数据库建立连接。在建立连接前,最主要的是需要设置 连接字符串,用来指定连接数据库所用的驱动程序、数据源名 称、用户名和密码等。 常用的属性与方法: – ConnectionString属性:连接字符串,在打开连接前需要设置 – ConnectionTimeout和Mode属性:超时时间和连接模式,一 般在打开连接前也需要设置 – CursorLocation属性:设置或者返回游标位置 – DefaultDatabase属性:为连接指定一个默认的据库 – Provider属性:为连接指定一个驱动程序,可以包括在 ConnectionString 中 – Open,Close 方法:建立或中断一个连接 – Execute方法:在连接上执行命令,比如执行一个SQL语句 – Errors对象:数据源返回的错误信息 (eg)
vb ado
在VB中常用的数据库访问接口有三种,即DAO、RDO、ADO 三种对象模式。
三种模式的具体解释见上篇文章:DAO/RDO/ADO,ODBC,OLEDB之间的关系本篇文章我们重点介绍一下ADO的应用。
一:ADO的简介ADO(ActiveX Data Object)是由微软公司开发的最新的数据库访问接口技术,因为ADO技术对OLEDB(Object Link and Embedding DataBase)进行了封装并实现了OLEDB所有的功能,所以ADO通过OLEDB可以访问任何类型的数据源,并且减少了编程量。
ADO访问数据库的体系可以概括为:二:基本流程:ADO访问数据库的目标是访问、编辑和更新数据源,因此使用ADO进行数据访问时,一般需要经过一下步骤:(1)创建一个数据源的连接,连接数据库。
Set objCn = NewConnectionstrcn ="provider=microsoft.jet.oledb.4.0;persist security info=false;" &_"data source=" &App.Path & "\实例1.mdb" objCn.ConnectionString = strcnobjCn.Open(2)设置一个命令来访问数据源的数据。
(3)执行命令。
Set objCmd = New CommandSet objCmd.ActiveConnection = objCnWith objCmd.CommandText = "select * from 系统用户where 用户名 like ?" & "and 身份 like ?".CommandType = adCmdTextEnd WithDim Parm As New ParameterSet Parm =objCmd.CreateParameter("用户名", adVarChar, adParamInput, 10)objCmd.Parameters.Append ParmSet Parm =objCmd.CreateParameter("身份", adVarChar, adParamInput, 10)objCmd.Parameters.Append Parm(4)如果命令的执行导致返回数据库中表的某些行,则将他们保存在缓存中,产生相应的数据集对象,以便对其进行操作。
VB中ADO对象访问数据库编程方法
行编 程 , 而是 在程 序 中调用 AD0 的对 象即
Co n c in.Re o d e 等进行编 程。 n e to c rS t
这样 , VB和后 台 S L S r e 数据库的 Q ev r 连 接就 创建 好 了 。 3 6 打开 R c rst 象 . e ode 对 R c rst e o d e 对象 包含某个 S L查询返 回 Q 的 数据 库 记 录 集 ,以 及记 录 集 中的 游 标 。 Re o d e 对象是一 个跟数据库 中的表相对 c r st 应的结构 , 可以理解成具 有字段 ( i l ) 也 F e d 和 字 段值( l e 的 对象 , Va u ) 在这些 记录 中可以 向前一条或后一 条移 动 。通过 Re o d e 对 c r st 象 可 以 对 几 乎 所 有 数 据 进 行 操 作 。 所 有 Re o d e c r s t对象均使 用记录和字 段来进行二 维的构造 。 通 过这 步 设置 , 以执 行一 条 SQL 查 可 询 语 句 或 者 调 用 数 据库 的 存 储 过 程 ,返 回 数 据库记录 。主要是利用 R c r s t e o d e 对象的 o n方 法 。语 法如下 : pe
Prva e myc m a w i t or s Ne ADODB. n- Co
n ciபைடு நூலகம் e ton
3 5 打 开连接对 象 ( c n ) . my o n 设 置 好连 接 属性 后 ,就 可 以打 开 连 接 对 象 了 。语 句 如 下 :
myc nn. o Ope n
m yrs. e n So c Ac ie e Op ure, tv Con c in, ne to Curor s Type, c Lo kTyp , e Opton i s
VB中用ADO操作数据库
VB中用ADO操作数据库ADO(ActiveX Data Objects)是一种在Visual Basic中用于数据库访问的技术。
它是一组面向对象的组件,可以让开发者直接从应用程序中连接到数据库,并执行各种数据库操作,如查询、插入、更新和删除。
ADO提供了一个统一的编程模型,可以与多种数据库进行交互,无论是局域网中的Access数据库还是企业级的SQL Server数据库。
在VB中使用ADO操作数据库,通常需要以下步骤:1. 引用ADO库:在VB的项目中,需要引用Microsoft ActiveXData Objects库。
可以在“项目”->“引用”中找到并选中“Microsoft ActiveX Data Objects Library”。
2. 创建连接:在VB代码中,首先需要创建一个Connection对象,用于连接到数据库。
可以使用ADODB.Connection类来创建连接对象,例如:Dim conn As ADODB.ConnectionSet conn = New ADODB.Connection3. 连接数据库:使用Connection对象的Open方法,传入数据库连接字符串及相关参数,来连接到数据库。
连接字符串可以指定数据库类型、主机名、用户名、密码等信息。
例如:conn.ConnectionString = "Provider=SQLOLEDB;DataSource=ServerName;Initial Catalog=DatabaseName;UserID=UserName;Password=Password"conn.Open4. 执行SQL语句:使用Connection对象的Execute方法,传入SQL 语句来执行数据库操作。
例如:conn.Execute "INSERT INTO TableName (Column1, Column2) VALUES ('Value1', 'Value2')"5. 获取查询结果:对于查询操作,可以使用Recordset对象来获取查询结果。
掌握VB中的ADO数据对象编程(登录注册等)
掌握VB中的ADO数据对象编程(登录注册等)
下面我给出一个我自己写的实例,是一个用户登录,注册,密码修改,用户删除的应用小程序.你也可以到本版的下载仓库中下载.
具体实现方法:
在本程序中包括了四个窗体.
·一个用于用户登录,名字为:FormDengLu;
·一个用于用户注册,名字为:FormZhuCe;
·另一个为用于用户修改密码,名字为:FormXiuGai;
·最后一个用于用户删除,名字为:FormShanChu.
下面进行ADO对象的定义与设置,不过在这之前你必须在工程中引用ADO对象.
定义ADO对象:
在Form_Load过程中应进行如下的ADO设置:
添加新的用户信息(原码)
下面为修改用户密码(在此中我并没用到上面提到的两种方法,但是这种方法也很简单,实际上应该是属于第一种方法.
代码如下:
也许你这样看起来的确实有点麻烦,不过你可以去下载全部程序,那样看起来比较简单!
下面是用户的删除.
代码如下:。
vba ado语法说明
vba ado语法说明VBA ADO语法说明VBA中的ADO(ActiveX Data Objects)是一种用于处理数据库的对象模型。
ADO提供了一组在VBA中操作数据库的方法和属性,使得读取和写入数据库变得简单而高效。
在使用VBA ADO之前,需要将ADO库引用添加到VBA项目中。
在VBA编辑器中,依次点击“工具”、“引用”,然后勾选“Microsoft ActiveXData Objects x.x Library”并点击“确定”按钮。
使用VBA ADO进行数据库操作需要经过一系列步骤。
首先,需要创建一个Connection对象,用于建立与数据库的连接。
可以使用Connection对象的Open方法来打开连接,并提供连接字符串作为参数。
连接字符串包含了与数据库连接所需的信息,如数据库的位置、用户名和密码等。
连接对象打开后,就可以执行SQL语句或调用存储过程来操作数据库了。
可以使用Command对象来执行SQL语句。
Command对象代表了要在数据库上执行的操作,可以通过给Command对象的CommandText属性赋值来设置要执行的SQL语句。
然后,可以使用Command对象的Execute方法来执行SQL语句。
执行SQL语句后,可以使用Recordset对象来获取查询结果或者操作数据。
Recordset对象是一个记录集,可以包含一组符合特定条件的数据记录。
可以使用Recordset对象的Open方法来打开记录集,并提供SQL语句或存储过程作为参数。
然后,可以使用Recordset对象的MoveFirst、MoveNext等方法来遍历记录集,获取数据。
完成数据库操作后,需要关闭连接和释放对象资源。
可以使用Connection对象的Close方法来关闭连接,使用Set关键字将对象设置为Nothing来释放对象资源。
在使用VBA ADO进行数据库操作时,需要注意一些常见问题。
首先,应该确保数据库驱动程序已正确安装在计算机上。
VB中用ADO对象动态创建数据库和表
VB中用ADO对象动态创建数据库和表如果仅仅是在已有的数据表的基础上产生新的数据表,我们只要引用对象库"Microsoft ActiveX Data Objects 2.5 Library"再利用Sel ect…Into语句就可以了。
例如:有一个名为Wage.mdb的数据库,数据库中有一个名为"工资表"数据表,该数据表的字段有:编号、姓名、基本工资、津贴、应发工资、扣款、实发工资等,这个表中已经有很多的记录。
现在我们把其中的实发工资大于2000的记录筛选出来组成一个新表,新表的名称由用户从文本框中输入,新表中我们只要三个字段,它们是:编号、姓名、实发工资。
我们用下列程序就可以实现:(事先在窗体中添加一个文本框Text1和一个命令按钮Command 1)Dim conn As New ADODB.ConnectionDim rs As New ADODB.RecordsetDim command As New mandPrivate Sub Command1_Click()Dim bm As StringDim sql As StringIf Text1.Text <>"" Thenbm = Trim(Text1.Text)sql= "Select 编号,姓名,实发工资 Into " + bm + " From 工资表Where 实发工资>2000"Set command.ActiveConnection = connmandText = sqlcommand.ExecuteElseMsgBox "你必须输入一个名字"End IfPrivate Sub Form_Load()Dim str As Stringstr = App.PathIf Right(str, 1) <>"\" Thenstr = str + "\"End Ifpstr = "Provider=Microsoft.Jet.OLEDB.3.51;"pstr = pstr & "Persist Security Info=False;"pstr = pstr & "Data Source=" & str & "wage.mdb"conn.Open pstrrs.CursorLocation = adUseClientrs.Open "工资表", conn, adOpenKeyset, adLockPessimisticSet DataGrid1.DataSource = rsEnd Sub当然,我们还可以把程序设计得更好,比如:让用户先在窗口中任意选择所需的字段和一些条件,然后再组合生成一个新表。
数据库开发入门:VB+ADO
第七章数据库访问控件ADO7.1 ADO控件Visual Basic中可用的数据访问接口有三种:ActiveX数据对象(ActiveX Data Objects,ADO)、远程数据对象(RDO)和数据访问对象(DAO)。
这三种接口的每一种都分别代表了数据访问技术的不同发展阶段。
最新的是ADO,它是比RDO和DAO更加简单,然而更加灵活的对象模型。
目前,通常使用ADO作为数据访问接口。
图7-1 ADO数据存取控件ActiveX 数据对象拥有与其对应的可视化控件ADO Data控件(ADODC)。
可视化的ADODC具有“向前”和“向后”等按钮,因此易于使用。
ADO数据控件并非VB的标准控件,使用之前先要将ADODC加入工具箱图7-2 添加新部件右键单击工具箱空白处,选择“部件(O)…”命令。
系统弹出“部件”窗口,从“控件”选项卡中找到“Microsoft ADO Data Control 6.0 (OLEDB)”,选中并单击“确定”按钮。
于是,工具箱中将出现ADO控件图标。
图7-3 添加ADO控件7.2 使用ADO控件创建一个简单的前端数据库应用程序实例CH7-1 浏览联系人使用ADODC创建浏览联系人的界面,后台数据库使用ACCESS 2003“联系人示例数据库”Contact.mdb。
第1步:窗体上放置一个ADO Data 控件,命名为ADODC1。
第2步:在设计界面选定ADODC1,然后按F4键显示“属性”窗口。
第3步:在“属性”窗口中,单击“ConnectionString”显示属性设置对话框。
选中“使用连接字符串”,单击按钮,选择“Microsoft Jet 4.0 OLE DB Provider”,单击,在“连接”选项卡中选择数据库文件名。
如果数据库文件与当前的应用程序在同一个路径下,则可以省略路径名。
单击,如果数据库文件路径和格式正确,系统提示“测试连接成功。
”第4步:在“属性”窗口中,将“CommandType”(命令类型)属性设置为“2 -AdCmdTable”第5步:在“属性”窗口中,打开“RecordSource”(记录源)属性设置对话框,“表或存储过程名称”选择“联系人”表第6步:在窗体上放置三个“文本框”控件,用来显示数据库信息。
VB中ADO对象访问数据库编程方法解析
1引言目前在Visual Basic中开发数据库程序主要有D A O、R D 0、A D O、O DBC四种数据库开发技术。
其中最流行的是AD0。
它是基于全新的O L E D B 技术。
O D B C本身是以SQL Server、Oracle等关系数据库作为访问对象;0 L ED B则不仅限于此,而将是可以对电子邮件、文本文件、复合文件、数据表等各种各样的数据通过统一的接口进行存取的技术。
O LE D B不能从V B直接进行访问,但可以通过称为A D O的C O M接口对它进行访问。
A D O也是开发基于W e b数据库应用软件的最佳手段。
A D O编程主要有两种方式,一种是A D O控件编程,即在程序的窗体当中必须添加A D O控件,然后通过调用A D O控件的属性和方法来进行编程。
但在开发大型数据库的时候,很少直接使用A D O控件来进行编程,而是在程序中调用A D O的对象即Connection、RecordSet等进行编程。
2基本原理A D O编程接口包括6个重要的对象,具体如下。
Connection连接:这个接口表示正在使用的数据源和A D O接口之间的连接。
任何与数据源有交互连接的ADO都可能导致一个或多个从数据源返回的错误,因此C o n-nection接口包含了产生所有错误的接口。
E r r o r(错误集:这个接口表示一个由数据源返回的错误。
相对于Conn ection 的错误集,Error更具体。
可以利用一个Error来判读出错的准确原因。
C o m m a n d(命令:这个接口表示一个能被数据提供者处理的命令。
C o m m an d接口可以返回一个R e c o r d S e ti记录集或执行一个动作(如查询、修改、删除或插入。
任何时候查询或存储过程能接收的数据都能通过Parameter接口传给它Parameter参数:这个接口表示传给C o m m a n d的参数。
VBA环境下的ADO编程方法
ActiveX数据对象ADO是一种数据访问接口,可以与符合OLE DB标准的数据源通信,以检索、操作和更新数据。
ADO的最大优点是易于使用,速度快,内存占用低,占用磁盘空间少等。
一般而言,利用ADO进行数据访问和操作的主要步骤是:(1)连接数据源;(2)设置查询命令;(3)执行查询命令。
在典型情况下,需要在编程过程中按照步骤进行编程。
但是,由于 ADO 有很强的灵活性,所以很多情况下只需执行部分模块就能完成需要的功能。
ADO对象库中主要有9个对象,即:Connection、Command、Recordset、Record、Field、Error、Property、Parameter和Stream。
这9个对象中又有三个即Connection、Command、Recordset是最为常用的,很多情况下只需要这三个对象即可完成数据的读取和操作。
12.4.2 Connection对象ADO Connection 对象代表了打开的、与数据源的连接,好像在应用程序和数据库中建立了一条数据传输连线,该对象代表了与数据源进行的惟一会话。
如果是C/S数据库系统,该对象可等价于到服务器的实际网络连接。
通过此连接,用户可以对被连接到的数据源进行访问和操作。
如果需要多次访问某个数据库,用户应当使用 Connection 对象来建立一个连接。
如下例所示的就是在ASP语言中创建Connection对象并建立连接:<%Set Conn=Server.Createobject("ADODB.Connection")Conn.Provider="Microsoft.Jet.OLEDB.4.0"Conn.Open "C:/Webdata/Northwind.Mdb"Response.Write(Conn.Provider)Conn.Close%>在上面的例子中使用了Connection对象的Provider属性和Open方法,关于Connection 对象的更多属性和方法,请参阅帮助中心的ADO程序员参考。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VB中的ADO数据对象编程详解ADO是ActiveX Data Objects 的缩写,是一项新的数据库的存取技术。
那天听到一位同学说他的女朋友是学新闻的可也学会了数据库,可学计算机的自己却还是不会,总觉得有点汗颜。
在各网站的论坛上,也常看到网友对数据库的一些操作很难把握。
我想简单的介绍一下VB中关于ADO对象的一些常识,供同学们参考。
其实本人也是刚刚懂了一点,拼凑出这篇文章,希望高手们看了不要见笑,但同时也希望对初学者有所帮助。
ADO是ActiveX Data Objects的缩写,是一项新的数据库的存取技术。
相对于VB5.0中的DAO他具有更为简化的对象模型,无论是存取本地的还是远程的数据,都提供了一致的接口。
就我本人而言,ADO的确比DAO要好用得多。
今天只就ADO的对象模型谈一谈。
ADO定义了一个可编程的对象集合,ADO对象模型如图所示:对于ADO其中对象来说,我觉得比较重要的是:Command,Connection,Recordset对象。
虽然严格的说这是不准确的,但根据我的实际经验确实如此。
下面就分别来谈一下。
(1)Connection对象Connection对象用于建立与数据库的连接.通过连接可从应用程序访问数据源.它保存诸如指针类型,连接字符串,查询超时,连接超时和缺省数据库这样的连接信息.(2)Command对象在建立Connection后,可以发出命令操作数据源。
一般情况下,Command对象可以在数据库中添加,删除或更新数据,或者在表中进行数据查询。
Command对象在定义查询参数或执行一个有输出参数的存储过程时非常有用。
(3)Recordset对象Recordset对象只代表一个记录集,这个记录集是一个连接的数据库中的表,或者是Command对象的执行结果返回的记录集。
在ADO对象模型中,是在行中检查和修改数据的最主要的方法,所有对数据的操作几乎都是在Recordset对象中完成的。
Record对象用于指定行,移动行,添加,更改,删除记录。
下面就具体地说说如何用ADO存取数据:在实际编程过程中使用ADO的一个典型的存取数据的步骤为:(1) 连接数据源(2) 打开记录集对象(3) 使用记录集(4) 断开连接那么具体怎么是用呢?分别来看。
(我在最后将给出一个完整的使用ADO的实例给大家参考。
)(1)如何连接数据源利用Connection对象可以创建一个数据源的连接。
应用的方法是Connection对象的Open 方法。
语法:(Connection对象).Open ConnectionString,UserID,PassWord,OpenOptions其中:·Connection对象:你定义的Connection对象的实例;·ConnectionString:可选项,包含了连接的数据库的信息;·UserID:可选项,包含建立连接的用户名;·PassWord:可选项,包含建立连接的用户密码;·OpenOptions:可选项,假如设置为adConnectAsync,则连接将异步打开。
例1:Dim Conn As New ADODB.ConnectionDim ConnStr As StringConnStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Scource=D:\AccessData.mdb;Persist Security Info=False"Conn.Open ConnStr(2)打开记录集对象实际上记录集返回的是一个从数据库取回的查询结果集.因此他有两种打开方法:一种使用记录集的Open方法,另一种是用Connection对象的Execute方法。
(a)记录集的Open方法语法:Recordset.Open Source,ActiveConnection,CursorType,LockType,Options其中:·Recordset:为所定义的记录集对象的实例。
·Source:可选项,指明了所打开的记录源信息。
可以是合法的命令,对象变量名,SQL语句,表名,存储过程调用,或保存记录集的文件名。
·ActiveConnection:可选项,合法的已打开的Connection对象的变量名,或者是包含ConnectionString参数的字符串。
·CursorType:可选项,确定打开记录集对象使用的指针类型。
·LockType:可选项确定打开记录集对象使用的锁定类型。
例2:(接例1)Dim SqlStr As StringDim Res As New ADODB.RecordsetSqlStr="Select * from UserInfo"Res.Open SqlStr,Conn,3,3(b)Connection对象的Execute方法语法:Set Recordset=Connection.Execute(CommandText,RecordsAffected,Options)参数说明:·CommandText:一个字符串,返回要执行的SQL命令,表名,存储过程或指定文本。
·RecordsAffected:可选项,Long类型的值,返回操作影响的记录数。
·Options:可选项,Long类型值,指明如何处理CommandText参数。
介绍完了如何打开数据库下面说说怎么使用吧。
例3:(接例1)(3)使用记录集(a)添加新的记录:在ADO中添加新的记录用的方法为:AddNew它的语法为:Recordset.AddNew FieldList,Values·Recordset:为记录集对象实例·FieldList:为一个字段名,或者是一个字段数组。
·Values:为给要加信息的字段赋的值,如果FiledList为一个字段名,那么Values应为一个单个的数值,假如FiledList为一个字段数组,那么Values必须也为一个个数,类型与FieldList 相同的数组。
在用完AddNew方法为记录集添加新的记录后,应使用UpDate将所添加的的数据存储在数据库中。
不过你最好在用UpDate方法之前使用CancelUpdate方法来取消该项操作。
(b)修改记录集其实修改和对记录集中的数据重新赋值没有什么太大的区别,只要用SQL语句将要修改的字段的一个数据找出来重新赋值就可以了,这里不再细说了。
(c)删除记录在ADO中删除记录集中的数据的方法为:Delete方法,这与DAO对象的方法相同,但是在ADO中它的能力增强了,可以删掉一组记录了。
它的语法如下:Recordset.Delete AffectRecords其中的,AffectRecords参数是确定Delete方法作用的方式的,它的取值如下:·adAffectCurrent 只删除当前的记录·adAffectGroup 删除符合Filter属性设置的那些记录。
为了一次能删除一组数据,应设置Filter 属性。
(d)查询记录在ADO中查询的方法很灵活,有几种查询的方法。
·使用连接对象的Execute方法执行SQL命令,返回查询记录集。
·使用Command对象的Execute方法执行CommandText属性中设置的SQL命令,返回查询记录集。
第一个方法的具体语法在前面数据连接时已经介绍过了,下面就第二方法具体说一下。
Command对象的Execute方法的语法如下:Command.Execute RecordsAffected,Parameters,Options '不返回记录集或者Set Rscordset=cmmnad.Execute(RecordsAffected,Parameters,Options) '返回记录集CommandText的语法为:mandText=stringvariable其中:stringvariable为字符串变量,包含SQL语句,表名或存储过程。
(3)断开连接在应用程序结束之前,应该释放分配给ADO对象的资源,操作系统回收这些资源并可以再分配给其他应用程序。
使用的方法为:Close方法。
语法如下:Object.Close ' Object为ADO对象好了,说了那么多的理论,下面我们就应用一下吧!ADO是ActiveX Data Objects 的缩写,是一项新的数据库的存取技术下面我给出一个我自己写的实例,是一个用户登录,注册,密码修改,用户删除的应用小程序。
你也可以到本版的下载仓库中下载。
具体实现方法:在本程序中包括了四个窗体:·一个用于用户登录,名字为:FormDengLu;·一个用于用户注册,名字为:FormZhuCe;·另一个为用于用户修改密码,名字为:FormXiuGai;·最后一个用于用户删除,名字为:FormShanChu。
下面进行ADO对象的定义与设置,不过在这之前你必须在工程中引用ADO对象。
定义ADO对象:Dim ZhuCe As ADODB.Connection ' ZhuCe为连接对象Dim rstZhuCe As ADODB.Recordset 'rstZhuCe为记录集对象Dim cmmZhuCe As mand 'cmmZhuCe为命令对象在Form_Load过程中应进行如下的ADO设置:Set ZhuCe = New ADODB.Connection '设置连接对象实例ZhuCe.CursorLocation = adUseClient'打开数据源连接ZhuCe.Open "provider=Microsoft.Jet.OLEDB.4.0;Data Source=App.Path\注册.mdb"'设置记录集对象实例Set rstZhuCe = New ADODB.RecordsetSet rstZhuCe.ActiveConnection = ZhuCe'打来记录集rstZhuCe.Open "select * from 注册",ZhuCe,adOpenStatic,adLockOptimistic'设置命令对象实例Set cmmZhuCe = New mandSet cmmZhuCe.ActiveConnection = ZhuCe添加新的用户信息(原码)If TextYongHuMing.Text = "" Or TextMiMa.Text = "" Or _TextTiShiWenTi.Text = "" Or TextTiShiDaAn.Text = "" ThenMsgBox "笔添信息没有添完,请输入完全",vbOKOnly + vbExclamation,"提示"ElseIf TextJiaoYan.Text = TextMiMa.Text ThenrstZhuCe.MoveLast '记录集中的移动方法,指针移动到记录集的末尾rstZhuCe.AddNew '添加新的记录rstZhuCe!用户名= TextYongHuMing.TextrstZhuCe!密码= TextMiMa.TextrstZhuCe!姓名= TextXingMing.TextrstZhuCe!昵称= TextNiCheng.TextrstZhuCe!联系地址= TextLianXiDiZhi.TextrstZhuCe!邮政编码= TextYouBian.TextrstZhuCe!OICQ = TextOICQ.TextrstZhuCe!电子邮件= TextMail.TextrstZhuCe!呼机= TextHuJi.TextrstZhuCe!手机= TextShouJi.TextrstZhuCe!密码提问= TextTiShiWenTi.TextrstZhuCe!提问答案= TextTiShiDaAn.TextrstZhuCe!电话号码= TextDianHua.TextrstZhuCe.Update '将上面所有的信息存储到数据库中MsgBox "注册成功",vbOKOnly + vbInformation,"注册成功"ElseMsgBox "校验密码与密码不一致,请重新输入",vbOKOnly + vbExclamation,_"密码错误"TextMiMa.Text = ""TextJiaoYan.Text = ""End IfEnd If下面为修改用户密码(在此中我并没用到上面提到的两种方法,但是这种方法也很简单,实际上应该是属于第一种方法。