红皮书再总结——实例二

实例2 使用ADO访问数据源

(一)制作特点:

第一、通过ODBC数据源访问数据库。

第二、使用ADO Recordset 对象保存数据,执行Update方法实时更新。

第三、通过文本框和按钮事件完成数据显示和修改。

(二)设计分析:

ADO更新数据源有两种方法:

方法一、将数据检索保存到RecordSet对象中,用Update方法进行更新,如果使用断开连接的RecordSet对象,则用UpdateBatch方法进行更新。

方法二、用Command对象执行SQL数据更新命令,这时不需使用RecordSet对象或用其他方法将数据检索到本地计算机。

(三)技术要领:

1.RecordSet的记录锁类型

这里写图片描述

2.RecordSet的临时表位置

这里写图片描述
3.浏览RecordSet中的记录
这里写图片描述
这里写图片描述

4.ODBC数据源类型

这里写图片描述

(四)操作过程:

(1)创建ODBC数据源:

开始——程序——管理工具——ODBC数据源(32位)

(2)设计窗体

两个标签框+三个文本框+两个命令按钮

(3)建立ADO引用

工程——引用——Microsoft ActiveX Data Objects 2.5 Library

(4)编写代码

①该例子的代码有一个需要注意的地方,就是当点击“前一纪录”和“后一记录”点到头之后就不能再翻页了,如下图:
这里写图片描述

后来知道了BOF和EOF的区别,给大家介绍一下,大家先看一下代码部分:

Private Sub Command1_Click()

dosave

objRS.MovePrevious       '使前一记录成为当前记录,如果记录指针指向第一个记录之前,则使其指向第一个记录

If objRS.BOF Then objRS.MoveLast         

    txtUserName = objRS.Fields("用户名").Value

    txtPassword = objRS.Fields("口令").Value

    txtMsg = objRS.AbsolutePosition & "/" & objRS.RecordCount

End Sub

Private Sub Command2_Click()

dosave

objRS.MoveNext           '使下一记录成为当前记录,如果记录指针指向最后一个记录之后,则使其指向最后记录  

If objRS.EOF Then objRS.MoveFirst

    txtUserName = objRS.Fields("用户名").Value

    txtPassword = objRS.Fields("口令").Value

    txtMsg = objRS.AbsolutePosition & "/" & objRS.RecordCount

End Sub

现在大家知道BOF和EOF的区别了吗?

BOF:使前一记录成为当前记录,如果记录指针指向第一个记录之前,则使其指向第一个记录;

EOF:使下一记录成为当前记录,如果记录指针指向最后一个记录之后,则使其指向最后记录。

所以,将以上两行的此代码改为以下代码即可:

If objRS.BOF Then objRS.MoveFirst

If objRS.EOF Then objRS.MoveLast

②AbsolutePosition

直接翻译,翻译出来是绝对的位置,甚至我一度认为它是绝对地址的意思,那么它到底是什么意思呢?

我们先来看一下代码部分:

txtMsg = objRS.AbsolutePosition & "/" & objRS.RecordCount

再来看一下窗体部分:
这里写图片描述

可见,该语句是用来显示“1/8”的,是SQL中用来分页的,还有很多种分页方式,给大家一一介绍一下:

PageSize--每一页所含记录数;

PageCount--当前记录的总页数;

AboslutePage--当前记录位置的绝对页数;

RecordCount--当前记录集的总数;

AbsolutePosition当前记录所在的绝对位置;

BOF--指针是否在记录集的头处;

EOF--指针是否在记录集的尾处;

BookMark--设置和得到当前记录的唯一位置。

(五)连接数据库方式:

第三种,使用ODBC数据源。

实际上,不管是哪种数据源,使用ADO访问都需要3个步骤:建立数据源连接(创建Connection对象)检索数据(创建RecordSet对象)操作数据

猜你喜欢

转载自blog.csdn.net/weixin_42835409/article/details/81435063