第六章 数据库编程.

Slides:



Advertisements
Similar presentations
我有一份考工的理论题库,是 Excel 文件。我在想如果转换到 Word 文件中再排版,再印刷,一是浪费时间,既要做成 Word 卷, 测试完还要手工批卷;二是浪费纸张( 4 — 5 个班级近 200 多人使 用),我在想能不能做成上机试卷,在计算机上测试,多方便, 谁能帮我这个忙吗? 我有一份考工的理论题库,是.
Advertisements

第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
第13章 数据库的基本应用 Visual Basic 程序设计教程.
第十章 与数据库的连接 一、在VB中可以访问哪些类型的数据库
第7章 数据库基础知识 SQL常用命令使用方法 (1) 数据记录筛选: sql="select * from 数据表
插入超链接 高邮市第一实验小学 范太国 任务一:设置文本超链接 任务一:设置文字超链接 步骤:1、选定文字并右击,在快捷菜单 中选择“超链接”命令。 2、在弹出的对话框中选择左侧“链接到:”中的“本文档中的位置(A)”项,在“请选择文档中的位置(C):”中选择需要链接的幻灯片,单击“确定”按钮。
文科计算机小公共课规划教材 Access 程序设计.
Oracle数据库 Oracle 子程序.
在PHP和MYSQL中实现完美的中文显示
第 11 章 資料庫應用與 ADO物件 製作.
Visual Basic快速入门 ADO数据控件与数据绑定控件 VB数据库编程举例 VB开发数据库应用系统实例分析
資料庫程式設計 VB資料庫設計簡介 週次:4 建國科技大學 資管系 饒瑞佶.
彰化縣政府補助辦理網頁設計資料庫應用班 ASP與資料庫介紹 建國技術學院資管系 饒瑞佶.
第二讲 搭建Java Web开发环境 主讲人:孙娜
資料庫程式設計 VB資料庫設計簡介 週次:2 建國科技大學 資管系 饒瑞佶.
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
VB如何存取資料庫 ? 資料庫 資料儲存 資料庫引擎 資料庫引擎 Jet 讀取、寫入與修改 資料控制項 資料庫存取物件(ADO) 使用者介面.
大学计算机基础 典型案例之一 构建FPT服务器.
教 师:曾晓东 电 话: 数据库技术 教 师:曾晓东 电 话:
SVN服务器的搭建(Windows) 柳峰
走进编程 程序的顺序结构(二).
辅导课程六.
第六单元 ADO.net数据库操作 劳动和社会保障部全国计算机信息高新技术考试指定教材——ASP.NET.
PostgreSQL 8.3 安装要点 四川大学计算机学院 段 磊
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Windows网络操作系统管理 ——Windows Server 2008 R2.
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
Windows 7 的系统设置.
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
資料庫程式設計 VB資料庫設計簡介 週次:3 建國科技大學 資管系 饒瑞佶.
SOA – Experiment 2: Query Classification Web Service
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言程序设计 主讲教师:陆幼利.
SQL 范引娣.
VisComposer 2019/4/17.
VB与Access数据库的连接.
姚金宇 MIT SCHEME 使用说明 姚金宇
实验七 安全FTP服务器实验 2019/4/28.
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
Web安全基础教程
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
数据库系统与应用实验 基于SQL Server 2005.
VB与数据库 数据库连接与查询.
第4章 Excel电子表格制作软件 4.4 函数(一).
iSIGHT 基本培训 使用 Excel的栅栏问题
3.16 枚举算法及其程序实现 ——数组的作用.
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
VRP教程 2011.
Delphi 7.0开发示例.
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
Python 环境搭建 基于Anaconda和VSCode.
HOOK和数据库访问 主讲人:孙鑫
第六章 Excel的应用 五、EXCEL的数据库功能 1、Excel的数据库及其结构 2、Excel下的数据排序 (1)Excel的字段名行
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
VB与Access数据库的连接.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
WEB程序设计技术 数据库操作.
第四章 UNIX文件系统.
使用ADO访问数据库 李宝智 BonizLee 课程 10564A
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第六讲 酒店客房管理系统(二) 教育部“十二五”职业教育国家规划教材
顺序结构程序设计 ——关于“字符串”和数值.
培训课件 AB 变频器的接线、操作及参数的备份 设备动力科.
数据库应用技术 天津电大 翟迎建.
百万行、千万行数据查询教程 老黄牛.
Presentation transcript:

第六章 数据库编程

学习要求—通过本章的学习,要求掌握数据库的链接设置,其中包括和桌面数据库Access以及网络数据库SQL-Server的两种链接,能够熟练使用SQL命令以及本章所提供的公用函数实现对数据库的访问。 学习提示—由于篇幅的限制,SQL命令的三个大类数据定义语言(DDL)、数据操纵语(DML)和数据控制语言(DCL)需要参考数据库的相关书籍,在本章未作详细介绍。 主要内容—本章主要介绍了数据库的访问技术,针对不同的数据库平台,介绍了Visual Basic和数据库的链接技术,结合Recordset记录集合的概念,介绍了ADO控件在数据库访问中的使用方法,使读者能够利用本章所提供的模块公用函数实现数据库的访问。

第一节 数据库基础 快速开发MIS系统程序是Visual Basic的一个显著优势,如果要熟练地使用Visual Basic进行数据库的开发,必须具备下面几方面的知识:SQL(结构查询语言)的常用命令、Visual Basic与各种数据库平台的链接技术、Recordset(记录集)的使用。另外,如果要成为数据库系统开发的高层次人才,还必须掌握软件工程的相关知识。

一.SQL命令的实现 从二十世纪八十年代开始,SQL语言已经成为现代数据库的标准语言,它克服了面向单条记录操作的传统方式中较难掌握的循环和分支等语法,采用了面向记录集合的操作方式,提高了数据库访问的速度和准确性。 高版本的数据库都支持SQL语言,为了方便读者很快掌握SQL的命令基础,本节利用Access2000/XP这种本地数据库为例,简单介绍SQL的实现方法。

例题6-1 在“学生.MDB”Access数据库文档中有如图6-1所示的“成绩”表,要求利用SQL语句计算出每个学生的总分和平均分。

操作步骤如下: (一)执行Access中的“查询”对象如图6-2所示,选择Access数据库“对象”栏中的“查询”选项,单击“设计”按钮,从弹出的“显示表”对话框中选择“成绩”表后,单击该对话框中的“添加”按钮,然后“关闭”该对话框。

图6-2 Access中的“查询”对象

图6-3 SQL命令的执行

(二)在“查询”对象中执行SQL命令 如图6-3所示,从“视图”菜单项中选择“SQL视图”选项,将SQL命令 “Update 成绩 Set 总分=高数+英语+计算机,平均=(高数+英语+计算机)/3” 填入“查询1”的文本框内,按“!”按钮执行,即可更新“成绩”表,计算出每个学生的总分和平均分。 提醒:“成绩”表中的高数、英语、计算机、总分和平均字段类型都是数字型。“SQL视图”必须在“查询”对象设计时才能使用。SQL命令的格式可以参考数据库理论的相关书籍。 重点: 熟练掌握Access中利用“查询”对象实现SQL命令的方法。

二、ODBC数据库链接  ODBC开放数据库链接是操作系统Windows98以  上版本所具备的一组数据库驱动程序集合,ODBC  提供了一个开放的、标准的能访问从PC机、小型  机到大型机数据库数据的接口。使用ODBC标准接  口的应用程序,开发者可以不必深入了解要访问  的数据库系统所支持的操作和数据类型等信息,  而只需掌握通用的ODBC API编程方法即可。

 例题6-2 将Access数据库“学生.MDB”文件设置成一个名为“Student”的ODBC系统数据源。 操作步骤如下: 1.选择ODBC执行  根据操作系统来查找ODBC驱动程序,若操作系统是Windows98,则从“控制面板中”可以直接发现“数据源 (ODBC)”图标,用鼠标双击即可执行;若操作系统是Windows2000/XP,则要从“控制面板|管理工具”中选择“数据源 (ODBC)”图标用鼠标双击,弹出如图6-6所示的ODBC数据源管理器界面。

图6-6 ODBC数据源管理器

2.选择数据源驱动程序 数据源分为以下三类: (1)用户数据源:用户创建的数据源,称为“用户数据源”。此时只有创建者才能使用,并且只能在所定义的机器上运行。任何用户都不能使用其他用户创建的用户数据源。 (2)系统数据源:所有用户和在Windows NT下以服务方式运行的应用程序均可使用系统数据源。 (3)文件数据源:文件数据源是ODBC 3.0以上版本增加的一种数据源,可用于企业用户,ODBC驱动程序也安装在用户的计算机上。 选择“系统DSN”标签页,单击“添加”按钮,弹出如图6-7所示的“创建新数据源”对话框,从数据源驱动程序组中选择“Microsoft Access Driver(*.mdb)”,单击“完成”按钮。

图6-7 创建新数据源对话框

3.安装ODBC数据源  从弹出的图6-8所示的ODBC安装界面中“选择”磁盘上相应的“学生.MDB”进行安装,单击“确定”按钮后,即在“ODBC数据源管理器”中增加一个DSN数据源。

图6-8 ODBC安装界面

    第二节 数据库相关控件 由于数据库平台具有不同的版本,合适的数据库控件是Visual Basic访问数据库的有力工具。例如,基本控件中的Data数据控件仅能识别Access97以下的版本,不可识别Access2000/XP的数据库格式。本节主要介绍ADO(ActiveX Data Object)数据库控件和DataGrid数据网格控件。

一、ADO控件  ADO(ActiveX Data Object)数据访问控件是Microsoft处理数据库信息的最新技术,最早出现在VisualBasic6.0版本中,它是一种ActiveX对象,该控件对象支持三种数据库链接方式—Microsoft数据链接文件(UDL)方式、ODBC数据源链接方式和OLE DB的数据链接方式。ADO对象模型定义了—个可编程的分层对象集合,主要由Connection、Command和Recordset三个对象成员组成。 (一)添加ADO控件  在Visual Basic的工具箱中添加ADO控件的方法有两种:一种方法是第一章所介绍的从 “新建工程”对话框中选择“数据工程”(Data Project),这种方法所产生的工程中自动包含数据库编程所需要的常用控件,ADO控件被自动添加到工具箱中;另一种方法是建立“标准 EXE”工程后,利用增添“部件”的方法将ADO控件添加到工具箱中,具体操作方法是从如图6-4所示的“工程”子菜单中选择“部件(O)…”选项,弹出如图6-5所示的“部件”对话框,在“控件”标签页选中“Microsoft ADO Data Control 6.0(OLEDB)”选项,单击“应用”按钮后,ADO控件被添加到工具箱中。

图6-4 “工程”子菜单

图6-5 “部件”对话框

(二)使用ADO控件  ADO控件是一种绑定型控件,不能单独使用,随着ADO控件对象的引入,Visual Basic提供了一些新的控件成员来链接不同数据类型的数据。这些新成员主要有DataGrid、DataCombo、DataList、DataReport、MSHFlexGrid、MSChart控件和MonthView等控件,这些新增绑定控件必须使用ADO数据控件进行绑定。 1.ADO控件链接数据库  读者可以利用ADO控件的“属性页”快速地设置对数据库的链接,利用工具箱中的ADO控件在Visual Basic的窗体上产生一个ADO控件对象,选中该控件对象后单击鼠标右键,从浮动菜单中选择“ADODC Properties”菜单项单击,即可弹出如图6-9所示的“属性页”对话框。

图6-9 ADO属性页对话框

 ADO的数据库链接方式有三种:“使用Data Link文件”、“使用ODBC数据资源名称”和“使用连接字符串”。本书主要介绍ODBC数据源和连接字符串两种方式。  利用前面所介绍的ODBC方式生成的DSN数据源可以从“使用ODBC数据源名称”的下拉列表中发现。此处重点介绍利用“使用连接字符串”的方法实现数据库的链接。  例题6-3 “学生.MDB”数据库文件存放于“D:\学生管理”文件夹中,利用“使用连接字符串”实现ADO对“学生.MDB”数据库文件的链接。  步骤:  (1)利用工具箱中的ADO控件在Visual Basic的窗体上产生一个ADO控件对象“Adodc1”,选中该控件对象后单击鼠标右键,在图6-9 所示的ADO“属性页”对话框中单击“生成”按钮,弹出如图6-10所示的“数据链接属性”对话框,从中选择“Microsoft Jet 4.0 OLE DB Provider”驱动程序。

图6-10数据链接属性对话框

提醒:“Microsoft Jet 4. 0 OLE DB Provider”和“Microsoft Jet 3 提醒:“Microsoft Jet 4.0 OLE DB Provider”和“Microsoft Jet 3.1 OLE DB Provider”两个驱动程序的区别是:4.0的数据引擎可以链接Access 2000/XP及以上的数据库版本,而3.51的数据引擎只能识别Access97以下的数据库格式。

图6-10 “数据链接属性”对话框

(2)单击“数据链接属性”对话框中的“下一步”按钮或者“连接”标签选项,选取指定位置的数据库文件,单击“测试连接”按钮,得到“测试连接成功”信息框,如图6-11 所示。此时表示数据库已经连接成功,连续单击“确定”按钮返回图6-9 所示的“ADO属性页”对话框,即可得到可用的连接字符串“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\学生管理\学生.mdb;Persist Security Info=False”。 提醒:连接字符串由三部分构成:数据库驱动程序、数据源和安全设定(包括用户名和密码)。 提醒:数据源“Data Source=D:\学生管理\学生.mdb”中的路径是绝对路径,不便于程序的安装和执行,所以建议将盘符和路径部分删除,将数据库文件的路径改为相对路径,即数据源改为“Data Source=学生.mdb”,这样只要Visual Basic所编译生成的.EXE程序文件和“学生.MDB”数据库文件存放在同一个文件夹内,就可保证程序正常运行。 重点:由驱动程序决定所连接数据源的类型,例如当驱动程序是“Microsoft Jet”类型时,数据源是Access数据库文件(*.MDB);当驱动程序是“Microsoft OLE DB Provider for SQL Server”时,数据源是SQL Server的数据库名称。

图6-11 数据链接成功示意图

例题6-4 利用“连接字符串”的方式设置ADO与SQL Server2000的数据库链接。 步骤: (1)选中窗体中的ADO控件对象“Adodc1”,选中该控件对象后单击鼠标右键,在图6-9 所示的ADO“属性页”对话框中单击“生成”按钮,弹出如图6-10所示的“数据链接属性”对话框,从中选择“Microsoft OLE DB Provider for SQL Server”驱动程序。 (2)单击“下一步”按钮,弹出如图6-12所示的SQL Server2000的数据链接属性对话框,首先填写或选择已经启动的SQL Server服务器,然后填入正确的用户名和密码(建议使用“允许保存密码”选项),最后从服务器上选择所需要的数据库,测试连接成功即可。 (3)连续单击“确认”按钮返回到图6-9 所示的“ADO属性页”对话框,即可得到可用的连接字符串“Provider=SQLOLEDB.1;Password=888888;Persist Security Info=True;User ID=guest;Initial Catalog=学生管理;Data Source=YCRYPTO”,该字符串中按照从左向右顺序依次排列的是:驱动程序名;密码;允许安全设置;用户名ID;数据库和数据源。

图6-12 SQL Server2000的数据链接属性

提醒:“允许保存密码”项可以将密码信息保存到最终生成的连接字符串中,这样该连接字符串就可成为使用SQL Server的关键。 提醒:“输入登录服务器的信息”中可以有两种方式:已知Windows用户名和密码的方式或者在SQL Server中设置一个登录帐号。

2.ADO控件对象属性 ADO控件具有三个常用属性:ConnectionString(连接字符串),CommandType(命令类型)和RecordSource(记录源)。 (1)其中的ConnectionString的设置在前面已经作过介绍,此处省略。 (2)如图6-13所示,CommandType的选择项有四种: adCmdUnknown 未知命令,数据源默认为SQL命令; adCmdText 命令文本方式,数据源是SQL命令; adCmdTable 基本表方式,数据源是基本表的名字; adCmdStoredProc存储过程方式,数据源是数据库(例如SQL Server)所包含的存储过程名称。

图6-13 ADO控件对象的记录源设置

3.ADO控件的程序设计 读者通过修改这些常用属性的值来进行数据库的访问,以达到数据库程序设计的目的。 例题6-5 利用ADO控件对象浏览“学生.MDB”数据库中的成绩表数据。 步骤: (1)建立一个“数据工程”,在窗体上增加一个ADO控件对象Adodc1和五个Label控件对象和五个Text控件对象。 (2)设置Adodc1控件对象的属性,按照图6-9、图6-10以及图6-11所示的过程设置数据库链接,在图6-13所示的记录源设置中设置命令类型为adCmdtext,命令文本为 “Select * from 成绩”。

图6-14 设置Text1对象的数据库链接属性

(3)如图6-14所示设置Text1控件对象的属性,主要设置DataSource和DataField两个属性,Label控件对象和Text控件对象的属性设置完成后结果如表6-1所示。 表6-1 相关控件对象的属性设置 控件对象名称 属性设置 Label1 Caption="学号" Text1 DataSource =Adodc1 DataField="学号" Label2 Caption="姓名" Text2 DataField="姓名" Label3 Caption="高数" Text3 DataField="高数" Label4 Caption="英语" Text4 DataField="英语" Label5 Caption="计算机" Text5 DataField="计算机"

(4)运行结果如图6-15所示,利用Adodc1控件对象的导航器可以浏览满足SQL命令的所有记录。 图6-15 程序的运行结果

提醒:Adodc1控件对象不能单独使用,必须和支持数据库链接的控件进行绑定,否则无法使用。 重点:Adodc1控件对象的记录源属性若选择adCmdText或者adCmdUnknown,读者必须掌握SQL命令的基本语法。 ●技巧:可以先设置Text1控件对象的属性,设置完成后进行复制和粘贴,然后只要修改其他Text控件对象的Field属性即可。

二、DataGrid控件 简单的Text控件对象不便于显示数据记录,因此应该使用功能较强的数据网格控件DataGrid。DataGrid控件允许用户同时浏览或修改多个记录的数据。在使用DataGrid控件之前和ADO控件的增添类似,也必须先通过“工程|部件”菜单命令,从前面所示的图6-5中选择“Microsoft DataGrid Control 6.0(OLEDB)”选项,将DataGrid控件添加到工具箱,再将DataGrid控件对象放置到窗体上。设置DataGrid网格控件的DataSource属性为ADO控件对象名称,即可将DataGrid控件绑定到ADO控件上。 例题6-6 利用ADO控件和DataGrid控件进行记录查询,显示所有英语不及格的学生信息。

图6-16程序的对象窗口

步骤: (1)新建一个“数据工程”,在窗体上增添一个ADO控件对象Adodc1和 DataGrid控件对象DataGrid1,如图6-16所示,增加一个按键控件对象Command1,各个控件对象的属性设置如表6-2所示。 表6-2 ADO和DataGrid控件对象的属性设置 控件对象名称属性设置Command1Caption="查询"Adodc1ConnectionString ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=学生.mdb;Persist Security Info=False"CommandType=adCmdTextRecordSource="select * from 成绩 where 英语<60"DataGrid1DataSource=Adodc1 (2)双击“Command1”控件对象,切换到程序代码窗口,代码设计部分如下: Private Sub Command1_Click() Adodc1.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0; " + _ "Data Source=学生.mdb;Persist Security Info=False" Adodc1.CommandType = adCmdText Adodc1.RecordSource = "select * from 成绩 where 英语<60" Adodc1.Refresh ’刷新Adodc1控件对象,使各属性值有效 Set DataGrid1.DataSource=Adodc1 ’将DataGrid1和Adodc1两个控件对象进行绑定 End Sub

(3)运行结果如图6-17所示 图6-17 查询英语成绩不及格的学生记录

提醒:在使用相对路径(数据库文件名前无盘符和路径)前,应该先将工程和窗体保存到和“学生 提醒:在使用相对路径(数据库文件名前无盘符和路径)前,应该先将工程和窗体保存到和“学生.MDB”数据库文件相同的文件夹,然后在添加Adodc1控件对象。

第三节 Recordset记录集 SQL命令的特点是面向记录集合的操作,命令的结果保存为一个Recordset记录集。Recordset对象只代表一个记录集,这个记录集是一个连接的数据库中的表,或者是Command对象的执行结果返回的记录集。Recordset是在ADO对象模型中是在行中检查和修改数据的最主要的方法,所有对数据库记录的操作几乎都可在Recordset对象中完成,例如游标的定位,添加、更改和删除记录等。

一. Recordset的属性与函数 经过执行SQL命令之后,ADO控件对象中的Recordset会保存结果记录集,此处介绍常用的Recordset属性和方法(函数)。 (一)Recordset的属性 1.字段列表属性Fields 利用Fields属性可以得到当前记录的某个字段的值,使用格式有两种,其一利用字段名称,格式为Recordset.Fields(“字段名”);其二是利用字段在表结构中的索引序号,格式为Recordset.Fields(Index) 例如要得到例题6-6中的姓名,可以用以下的语句 MsgBox(Adodc1.Recordset.Fields(“姓名”)) 由于“姓名”字段的索引序号为1,也可以用下列语句 MsgBox(Adodc1.Recordset.Fields(1)) 技巧:由于用Recordset得到字段值的代码较长,不利于程序编写,可以用 “Adodc1!姓名”完全代替“Adodc1.Recordset.Fields(“姓名”)”,使程序简化。

2.游标定位方式CursorLocation 游标区实现了在Visual Basic执行SQL命令和数据库之间的接口,当其值为adUseClient时,表示用户程序为客户端,可以访问游标区的所有行。 3.记录首尾判断BOF和EOF 利用BOF可以判断记录的游标指针是否指向数据库的首部,当游标指向头部时,BOF的值为真值,否则为假值;同样,EOF可以判断游标指针是否指向数据库的尾部。 4.记录个数RecordCount RecordCount用于得到SQL命令执行后的记录集的记录个数,反映了游标区的所有行数。

(二)Recordset的方法 1.游标定位方法Move 使用Move方法可代替对数据控件对象的4个箭头按钮的操作遍历整个记录集。5种Move方法是: (1)MoveFirst方法:移至第1条记录。 (2)MoveLast方法:移至最后一条记录。 (3)MoveNext方法:移至下一条记录。 (4)MovePrevious方法:移至上一条记录。 (5)Move [n] 方法:向前或向后移n条记录,n为指定的数值。 2. 记录更新方法Update 保存对 Recordset 对象的当前记录所做的所有更新。 Recordset.Update [Fields][, Values] Fields为可选项,代表需要修改的字段(一个或多个)名称及索引序号位置。 Values 为可选项,代表新记录中字段(单个或多个)值。 如果希望取消对当前记录所做的任何更改或者放弃新添加的记录,则必须调用 CancelUpdate 方法。

4、取消更新方法CancelUpdate 使用 CancelUpdate 方法可取消对当前记录所作的任何更改或放弃新添加的记录。在调用 Update 方法后将无法撤消对当前记录或新记录所做的更改,如果在调用 CancelUpdate 方法时添加新记录,则调用 AddNew 之前的当前记录将再次成为当前记录。如果尚未更改当前记录或添加新记录,调用 CancelUpdate 方法将产生错误。 2.新增记录方法AddNew AddNew方法在记录集中增加新记录。增加记录的步骤为: (1)调用AddNew方法。 (2)给各字段赋值。给字段赋值格式为:Recordset.Fields(”字段名”)=值。 (3)调用Update方法,确定所做的添加,将缓冲区内的数据写入数据库。

二、记录集的使用 (一)设置公用记录集函数 1.设计公用记录集函数 利用记录集的特性在模块中构造一个全局函数,该函数有两个形参,一个是连接字符串CnStr,另一个是SQL命令,返回一个Recordset记录集。函数的定义如下所示: Public Function SQLExec(cnStr As String, SQLStr As String) As Recordset Dim cn As New Connection Dim rs As New Recordset cn.Open cnStr '设置VisualBasic与数据库的链接 rs.CursorLocation = adUseClient '设置游标定位,可以得到游标区的所有行 rs.Open SQLStr, cn, adOpenDynamic, adLockOptimistic '执行SQL命令,得到记录集 Set SQLExec = rs '函数的结果返回一个Recordset记录集 End Function

程序说明: adOpenForwardOnly缺省值,启动一个只能向前移动的游标。 adOpenKeyset启动一个Keyset类型的游标。 adOpenDynamic启动一个动态(Dynamic)类型的游标。 adOpenStatic 启动一个静态(Static)类型的游标。 adLockReadOnly缺省值,Recordset对象以只读方式启动,无法运行增加、删除和修改的操作。 adLockPrssimistic当数据源正在更新时,系统暂时锁住其他用户的操作,以保证数据一致性。 adLockOptimistic当数据源正在更新时,系统并不会对其他用户的动作加锁,其他用户可以对数据进行增加、删除和修改的操作。 adLockBatchOptimistic当数据源正在更新时,其他用户必须将CursorLocation属性改为adUdeClientBatch才能对数据进行增加、删除和修改的操作。 这样读者只需要得到数据库的连接字符串并且掌握合法的SQL命令,就可以很方便地访问各类数据库。

2.实现步骤 (1)添加新建模块 在一个数据工程中,在如图6-4所示的“工程”子菜单选择“添加模块”单击,弹出模块代码窗口。 (2)在模块中添加函数 改变模块的名字为“SqlConnect”,并且将“SQLExec”函数的代码填入该模块中,如图6-18所示。

图6-18 公用Recordset函数的设计

(二)使用公用记录集函数 读者可以利用上面所提供的公用记录集函数进行数据库程序的开发,可以利用ADO控件对象获取连接字符串,利用Access进行SQL命令的调试,得到正确的SQL语句。 例题6-7 利用公用记录集函数进行学生成绩管理,计算每名学生的总分及平均分,按照学号查询“软件技术”专业学生的分数及相关信息。 步骤: 1.设置工程属性 新建“数据工程”,改变工程名为“成绩管理”,并将窗体名“frmDataEnv”改为“frmCJGL”,将工程和窗体保存到和“学生.MDB”数据库文件相同的文件夹。

图 6-19 “成绩管理”的工程资源管理器

2. 增添包含公用记录集的模块 在图6-4所示的“工程”子菜单选择“添加模块”单击,增加“现存”的模块“SqlConnect.bas”,得到如图6-19所示的资源管理器界面。 3.界面设计 增添DatdGrid1(不必修改属性)、Label1、Text1、Command1和Command2五个控件对象,进行窗体的对象界面设计,得到如图6-20所示的界面,控件对象的属性设置如表6-3所列。

图6-20 “成绩管理”的设计界面

表6-3 界面控件对象属性设置 控件对象名称属性设置Label1Caption="学号",Font 为"宋体,粗体,小三"Text1Text="",Font 为"宋体,粗体,小三"Command1Caption="求总分及平均",Font 为"宋体,粗体,小三"Command2Caption="查询",Font 为"宋体,粗体,小三"

4.切换到代码窗口,在“通用”中定义一个名为CJRs的记录集对象,一个字符串变量CJCnStr用于保存由ADO控件对象生成的连接字符串,一个字符串变量CJSQLStr用于存放SQL命令字符串。 在Form_Load()过程中初始化CJCnStr变量,变量的值来源于前面所述的ADO控件的连接,建议数据库文件的路径采用相对路径。 5.获取带参数的SQL命令 在VisualBasic中给变量CJSQLStr赋值查询学号为“1001”的学生成绩的SQL命令字符串是: CJSQLStr="select * from 成绩 where 学号='1001'" 将常量’1001’改为变量Text1.Text的步骤为: (1)从字符串中分离’1001’常量,可以将原字符串分解成三个子串 CJSQLStr="select * from 成绩 where 学号='"+"1001"+"'" (2)将”1001”替换成Text1.Text,实现在SQL字符串中添加VisualBasic的参数 CJSQLStr="select * from 成绩 where 学号='”+Text1.Text+”'"

6.代码实现 ’在窗体的“通用”部分定义三个变量 Dim CJRs As Recordset ’存储SQL命令运行后所得到的记录集 Dim CJCnStr As String ’存储连接字符串 Dim CJSQLStr As String ’存储每项正确的SQL命令字符串 Private Sub Command1_Click() CJSQLStr = "Update 成绩 Set 总分=高数+英语+计算机,平均=(高数+英语+计算机)/3" Set CJRs = SQLExec(CJCnStr, CJSQLStr) ’调用公用函数,利用CJRs得到结果记录集 MsgBox (" 计算完成") End Sub Private Sub Command2_Click() CJSQLStr = "select * from 成绩 where 学号='" + Text1.Text + "'" Set CJRs = SQLExec(CJCnStr, CJSQLStr) Set DataGrid1.DataSource = CJRs ’绑定DataGrid1控件对象和CJRs记录集对象 Private Sub Form_Load() CJCnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=学生.mdb;" + _ "Persist Security Info=False"

小结 本章主要从两个方面介绍数据库的程序设计,一方面是对ADO控件对象的设置;另一方面是利用ADO所提供的Recordset记录集公用函数。本章的目的是让读者能够从较繁琐的面向单条记录循环、分支等复杂设计中脱离出来,转而集中于SQL命令的获取以及连接字符串的设置,为公用函数提供两个字符串参数,最终简化数据库的程序设计。