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,则连接将异步打开.

(2)打开记录集对象

实际上记录集返回的是一个从数据库取回的查询结果集.因此他有两种打开方法:一种使用记录集的Open方法,另一种是用Connection对象的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参数。

介绍完了如何打开数据库下面说说怎么使用吧.

(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的语法为:

Command.CommandText=stringvariable

其中: stringvariable为字符串变量,包含SQL语句,表名或存储过程.

(4) 断开连接

在应用程序结束之前,应该释放分配给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 ADODB.Command '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.Recordset

Set rstZhuCe.ActiveConnection = ZhuCe

'打来记录集

rstZhuCe.Open "select * from 注册", ZhuCe, adOpenStatic, adLockOptimistic

'设置命令对象实例

Set cmmZhuCe = New ADODB.Command

Set cmmZhuCe.ActiveConnection = ZhuCe

添加新的用户信息(原码)

If TextYongHuMing.Text = "" Or TextMiMa.Text = "" Or _

TextTiShiWenTi.Text = "" Or TextTiShiDaAn.Text = "" Then

MsgBox "笔添信息没有添完,请输入完全", vbOKOnly + vbExclamation, "提示"

Else

If TextJiaoYan.Text = TextMiMa.Text Then

rstZhuCe.MoveLast '记录集中的移动方法,指针移动到记录集的末尾

rstZhuCe.AddNew '添加新的记录

rstZhuCe!用户名 = TextYongHuMing.Text

rstZhuCe!密码 = TextMiMa.Text

rstZhuCe!姓名 = TextXingMing.Text

rstZhuCe!昵称 = TextNiCheng.Text

rstZhuCe!联系地址 = TextLianXiDiZhi.Text

rstZhuCe!邮政编码 = TextYouBian.Text

rstZhuCe!OICQ = TextOICQ.Text

rstZhuCe!电子邮件 = TextMail.Text

rstZhuCe!呼机 = TextHuJi.Text

rstZhuCe!手机 = TextShouJi.Text

rstZhuCe!密码提问 = TextTiShiWenTi.Text

rstZhuCe!提问答案 = TextTiShiDaAn.Text

rstZhuCe!电话号码 = TextDianHua.Text

rstZhuCe.Update '将上面所有的信息存储到数据库中

MsgBox "注册成功", vbOKOnly + vbInformation, "注册成功"

Else

MsgBox "校验密码与密码不一致,请重新输入", vbOKOnly + vbExclamation, _

"密码错误"

TextMiMa.Text = ""

TextJiaoYan.Text = ""

End If

End If

下面为修改用户密码(在此中我并没用到上面提到的两种方法,但是这种方法也很简单,实际上应该是属于第一种方法.

代码如下:

Dim a As String

Dim b As String

If TextYongHuMing.Text = "" Or TextMiMa.Text = "" Or TextJiaoYanMiMa.Text = "" Or TextXinMiMa.Text = "" Then

MsgBox "修改信息填写不完全,请重新填写!", vbOKOnly + vbInformation, "修改错误"

TextYongHuMing.Text = ""

TextMiMa.Text = ""

TextJiaoYanMiMa.Text = ""

TextXinMiMa.Text = ""

Else

If TextXinMiMa.Text <> TextJiaoYanMiMa.Text Then

MsgBox "校验密码与新密码不一致,请重新填写!", vbOKOnly + vbExclamation, "密码错误"

TextJiaoYanMiMa.Text = ""

TextXinMiMa.Text = ""

End If

a = "select 用户名,密码 from 注册 where 用户名 ='" & _

TextYongHuMing.Text & _

"' AND 密码 = '" & _

TextMiMa.Text & "';"

rstZhuCe.Open a, ZhuCe, adOpenKeyset, adLockOptimistic

rstZhuCe!密码 = TextXinMiMa.Text

MsgBox "密码修改成功,您的新密码是:" & rstZhuCe!密码 & "!", vbOKOnly + vbInformation, "修改成功"

End If

也许你这样看起来的确实有点麻烦,不过你可以去下载全部程序,那样看起来比较简单!

下面是用户的删除.

代码如下:

Dim a As String

Dim ok As Integer

Dim i As Integer

rstZhuCe.MoveFirst

For i = 0 To rstZhuCe.RecordCount - 1

If rstZhuCe!用户名 = ComboYongHuMing.Text And rstZhuCe!密码 = TextMiMa.Text Then

ok = MsgBox("你确定真的要将此用户删除吗?", vbOKCancel + vbQuestion, "提示")

If ok = 1 Then

rstZhuCe.Delete adAffectCurrent '删除所找到的用户

MsgBox "此用户已经成功删除!", vbOKOnly + vbInformation, "删除成功"

End If

End If

rstZhuCe.MoveNext

Next I

http://www.programbbs.com/doc/466.htm

vb mysql ado_VB中的ADO数据对象编程详解相关推荐

  1. wow mysql dbc_DBC中悲观锁介绍附案例详解

    DBC中悲观锁介绍附案例详解 了解下DBC中悲观锁: 代码如下: BDUtils 工具类: package JDBC; import java.sql.*; public class BDUtils ...

  2. JAVA中创建的redis对象_详解Java在redis中进行对象的缓存

    java在redis中进行对象的缓存一般有两种方法,这里介绍序列化的方法,个人感觉比较方便,不需要转来转去. 一.首先,在存储的对象上实现序列化的接口 package com.cy.example.e ...

  3. Qt Quick 中 QML 与 C++ 混合编程详解

    Qt Quick 技术的引入,使得你能够快速构建 UI ,具有动画.各种绚丽效果的 UI 都不在话下.但它不是万能的,也有很多局限性,原来 Qt 的一些技术,比如低阶的网络编程如 QTcpSocket ...

  4. python web开发-flask中response,cookies,session对象使用详解

    Response响应对象: 当一个web请求被服务器处理完后,会返回用户请求的响应,这时候就要用到响应对象,根据响应给用户的形式不同,响应对象有以下几种处理方式 如果返回的是一个合法的响应对象,它会从 ...

  5. mysql数据库中index什么意思_MySQL Index详解

    FROM:http://blog.csdn.net/tianmo2010/article/details/7930482 ①MySQL Index 一.SHOW INDEX会返回以下字段 1.Tabl ...

  6. mysql离散查询_mySQL数据库数据查询操作详解

    查询数据: 简单查询: 1.查询所有数据: select * from 表名 #select * from info 查询所有列 2.查询指定列: select code,name from info ...

  7. PHP面向对象编程详解:类和对象

    PHP面向对象编程详解:类和对象 从OOP的视角看,不应区分语言.无论是C++.无论是Java.无论是.net还有更多面向对象的语言,只要你了解了OO的真谛,便可以跨越语言,让你的思想轻松的跳跃.便没 ...

  8. android json mysql_Android通过json向MySQL中读写数据的方法详解【读取篇】

    本文实例讲述了Android通过json向MySQL中读取数据的方法.分享给大家供大家参考,具体如下: 首先 要定义几个解析json的方法parseJsonMulti,代码如下: private vo ...

  9. 简析Visual C++中的活动数据对象

    简析Visual C++中的活动数据对象 程序运行效果截图: 摘 要: 本文简要介绍了微软的活动数据对象(ADO)模型,结合实例阐述了在Visual C++环境下使用ADO操纵数据库的基本步骤,分析A ...

最新文章

  1. 2014-3-6 星期四 [第一天执行分析]
  2. .net Forms身份验证不能用在应用的分布式部署中吗?
  3. 基础笔记6(exception)
  4. php代码返回404,php--------返回404状态
  5. 机器学习笔记: Discriminative vs Generative Models
  6. Redis源码剖析(十)简单动态字符串sds
  7. XHTML行内描述性元素(持续更新中)
  8. 阿捷外传之Git代码统计:DotNetCore + PowerBI 实现Git仓库日志分析
  9. 云计算机创意名,有创意的道路名字推荐,分享一些好听有内涵的路名
  10. 在 WinCe 平台读写 ini 文件
  11. java 多个方法_java中的多个main()方法
  12. 计算机基础理论知识梳理篇(二):目态(用户态)、管态(内核态)
  13. 团队第一阶段冲刺——第九天
  14. Google常用搜索技巧
  15. windows下python访问ipv6报错
  16. 为什么要使用Mybatis框架?JDBC的缺点有哪些?
  17. 订阅github release(官方+IFTTT)
  18. 教你在Linux备份文件名加上当前时间
  19. 直播app源码,跳转站外链接或平台内部跳转页面
  20. 某程序员揭秘“开水团”大厂真实福利

热门文章

  1. TypeScript 工具类型 - Utility Types
  2. 使用Schematics启用SAP Spartacus的SSR模式
  3. Angular里的property binding的一个例子
  4. Windows10记事本和Visual Studio Code文件encoding的设置
  5. SAP C4C的一个错误消息 - Security token does not match
  6. 使用SAP portal service创建Fiori Launchpad
  7. SAP成都研究院的小伙伴们庆祝公司再次获得2019年最佳雇主的场景
  8. WebClient UI create a hidden form and submit
  9. how is json model initialized with json data
  10. jQuery里的promise