红皮书再总结——实例二
实例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对象)操作数据