版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选文库 9 VB数据库编程技术 ODBC 概述 (API) ,为了解决此问 在传统的数据库管理系统中, 每个数据库管理系统都有自己的应用程序开发接口 题,微软公司开发了 ODBC(Open DataBase Connectivity ,即开放数据库互连 )。 它提供了统一的数据 ODBC 是一套开放数据库系统应用程序接口规范, 目前它已成为一种工业标准, 库应用编程接口 (API) ,为应用程序 提供了一套高层调用接口规范和基于动态连接库的运行支持环境。使用 ODBC 开发数据库应用时, 应用程序调用的是标准的 ODBC 函数和 SQL 语句,屏蔽了 DBMS 之间的差 异,数据库底层操作由
2、各个数据库的驱动程序完成 。因此应用程序有很好的适应性和可移植性,并且具备 了同时访问多种数据库管理系统的能力,从而彻底克服了传统数据库应用程序的缺陷。 主要任务包括:建立与数据源的连接;向数据源发送SQL请求;断开与数据源的连接 数据源 数据源是指任一种可以通过 ODBC 连接的数据库管理系统, 它包括要访问的数据库和数据库的运行平 台。数据源名掩盖了数据库服务器或数据库文件间的差别,通过定义多个数据源,每个数据源指向一个服 务器名,就可在应用程序中实现同时访问多个 DBMS 的目的。 数据源(Data Source Name,简称DSN)是驱动程序与 DBS连接的桥梁,数据源不是 DBS,
3、而是用于表 达一个 ODBC 驱动程序和 DBMS 特殊连接的命名。在连接中,用数据源名来代表用户名、服务器名、所 连接的数据库名等,可以将数据源名看成是与一个具体数据库建立的连接。 数据源分为以下三类: (1) 用户数据源:用户创建的数据源,称为“用户数据源 ”。此时 只有创建者才能使用,并且只能在所定 义的机器上运行 。任何用户都不能使用其他用户创建的用户数据源。 (2) 系统数据源:所有用户和在Windows NT 下以服务方式运行的应用程序均可使用系统数据源。 (3) 文件数据源:文件数据源是ODBC3.0以上版本增加的一种数据源,可用于企业用户,ODBC驱区动程 序也安装在用户的计算
4、机上。 (与机器无关 ) 、 SQL 语言基础 创建表格 SQL语言中的create table语句被用来建立新的数据库表格。Create table语句的使用格式如下: create table tablename (column1 data type, column2 data type, column3 data type); 如果用户希望在建立新表格时规定列的限制条件,可以使用可选的条件选项: create table tablename (column1 data type constraint, colu mn2 data type con stra in t, colu mn3
5、data type con stra in t); 举例如下: create table empio yee (first name varchar(15), last name varchar(20), age nu mber(3), address varchar(30), city varchar(20); 简单来说,创建新表格时,在关键词create table后面加入所要建立的表格的名称,然后在括号内顺次 设定各列的名称,数据类型,以及可选的限制条件等。注意,所有的SQL语句在结尾处都要使用“;”符号。 使用SQL语句创建的数据库表格和表格中列的名称必须以字母开头,后面可以使用字母,
6、数字或下划线, 名称的长度不能超过 30个字符。注意,用户在选择表格名称时不要使用SQL语言中的保留关键词,如select, create, i nsert等,作为表格或列的名称。 varchar或char的数据类型, 数据类型用来设定某一个具体列中数据的类型。例如,在姓名列中只能采用 而不能使用number的数据类型。 SQL语言中较为常用的数据类型为: char(size):固定长度字符串,其中括号中的size用来设定字符串的最大长度。Char类型的最大长度为 255字节。 varchar(size):可变长度字符串,最大长度由size设定。 number(size):数字类型,其中数字的
7、最大位数由size设定。 Date :日期类型。 number(size,d):数字类型,size决定该数字总的最大位数,而d则用于设定该数字在小数点后的位数。 最后,在创建新表格时需要注意的一点就是表格中列的限制条件。所谓限制条件就是当向特定列输入数据 时所必须遵守的规则。例如,unique这一限制条件要求某一列中不能存在两个值相同的记录,所有记录的 值都必须是唯一的。除unique之外,较为常用的列的限制条件还包括not null和primary key等。Not null 用来规定表格中某一列的值不能为空。P rimary key则为表格中的所有记录规定了唯一的标识符。 查询 简单的SQ
8、L查询只包括选择列表、FROM子句和 WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。 完整结构: Having短句,表示只有满足指定条 Select All/Distinct From, WhereGroup by HavingOrder by Asc/Desc Group by :按列名1的值进行分组,属性值相等的为一个组,如果带 件的才输出。 例如,下面的语句查询testtable表中姓名为 张三的nickname字段和email字段。 SELECT n ick name,email FROM testtable WHERE name=张三 (一)选择列表 (包括
9、局部变 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量 量和全局变量)等构成。 1选择所有列 例如,下面语句显示 testtable表中所有列的数据: SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如: SELECT n ick name,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字
10、显示列 标题: SELECT 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默 认 为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n PERCENT选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n 是 表示一百分数,指定返回的行数等于总行数的百分之几。 例如: SELECT TOP 2 * FROM testtable SEL
11、ECT TOP 20 P ERCENT * FROM testtable (二)FROM 子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定 256个表或视 图, 它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 所属的表或视图。例如在 usertable和citytable表中同时存在 cityid列,在查询两个表中的cityid时应 使用下面语句格式加以限定: SELECT user name,citytable.cityid FROM usertable,citytable WHER
12、E usertable.cityid=citytable.cityid 在FROM子句中可用以下两种格式为表或视图指定别名: 表名as别名 表名别名 (二)FROM 子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定 256个表或视 图, 它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 所属的表或视图。例如在usertable和citytable表中同时存在 cityid列,在查询两个表中的 cityid时应 使用下面语句格式加以限定: SELECT user name,citytabl
13、e.cityid FROM usertable,citytable WHERE usertable.cityid=citytable.cityid 在FROM子句中可用以下两种格式为表或视图指定别名: 表名as别名 表名别名 例如上面语句可用表的别名格式表示为: SELECT user name,b.cityid FROM usertable a,citytable b WHERE a.cityid=b.cityid SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 例如: SELECT a.au_fname+a.au_l name FROM auth
14、ors a,titleauthor ta (SELECT title_id,title FROM titles WHERE ytd_sales10000 )AS t WHERE a.au_id=ta.au_id AND ta.title_id=t.title_id 此例中,将SELECT返回的结果集合给予一别名 (三)使用 WHERE子句设置查询条件 WHERE子句设置查询条件,过滤掉不需要的数据行。 SELECT * t,然后再从中检索数据。 例如下面语句查询年龄大于 20的数据: FROM usertable WHERE age20 WHERE子句可包括各种条件运算符: 、 、 !、 !
15、比较运算符(大小比较):、=、=、=、 范围运算符(表达式值是否在指定的范围 ):BETWEENAND- NOT BETWEEN- AND 列表运算符(判断表达式是否为列表中的指定项):IN (项1,项2) NOT IN (项1,项2) 模式匹配符(判断值是否与指定的字符通配格式相符):LIKE、NOT LIKE 空值判断符(判断表达式是否为空):IS NULL、NOT IS NULL 逻辑运算符(用于多条件的逻辑连接):NOT、AND、OR 1、 范围运算符例:age BETWEEN 10 AND 30 相当于 age=10 AND age=30 2、 列表运算符例:country IN (
16、Germa ny,Chi na) char、 3、模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。可用于 varchar、text、ntext、datetime 禾R smalldatetime 等类型查询。 可使用以下通配字符: 百分号% :可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即 下划线_:匹配单个任意字符,它常用来限制表达式的字符长度。 方括号:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。 F:其取值也相同,但它要求所匹配对象为指定字符以外的任一个字符。 例如: 限制以 限制以 限制以 %。 Publishing 结尾,使用 LIK
17、E%Publishing A 开头:LIKE A% A 开头外:LIKEFA% 4、空值判断符例 WHERE age IS NULL 5、逻辑运算符:优先级为 (四)查询结果排序 使用ORDER BY子句对查询返回的结果按一列或多列排序。 ORDER BY column_name ASCQESC,n 其中ASC表示升序,为默认值,DESC为降序。ORDER BY不能按ntext、text和image数据类型进行排 序。 例如: NOT、AND、OR ORDER BY 子句的语法格式为: SELECT * FROM usertable ORDER BY age desc,userid ASC 另
18、外,可以根据表达式进行排序。 向表格中插入数据 SQL语言使用insert语句向数据库表格中插入或添加新的数据行。 in sert into table name In sert语句的使用格式如下: (first_colu mn.ast_colu mn) values (first_value,.last_value); 例如: in sert into empio yee (first name, last name, age, address, city) values ( Li , Ming , 45,No.77 Changan Road , 简单来说,当向数据库表格中添加新记录时,在关
19、键词 在括号中列出将要添加新值的列的名称。最后,在关键词 输入所有要添加的记录值。 Beiji ng in sert into values 后面输入所要添加的表格名称,然后 的后面按照前面输入的列的顺序对应的 更新记录 Up date语句的格式为: SQL语言使用up date语句更新或修改满足规定条件的现有记录。 up date table name set colu mnn ame = n ewvalue , n extcolu mn = n ewvalue2. where colu mnn ame OP ERATOR value an d|or colu mn OP ERATOR va
20、lue; 例如: up date empio yee set age = age+1 where first_name=Mary and last_name=Williams ; 使用up date语句时,关键一点就是要设定好用于进行判断的where条件从句。 删除记录 SQL语言使用delete语句删除数据库表格中的行或记录。Delete语句的格式为: delete from table name where colu mnn ame OP ERATOR value an d|or colu mn OP ERATOR value; 例如: delete from empio yee wher
21、e last name = May; 简单来说,当需要删除某一行或某个记录时,在delete from 关键词之后输入表格名称,然后在 where从 句中设定删除记录的判断条件。注意,如果用户在使用delete语句时不设定 where从句,则表格中的所 有记录将全部被删除。 删除数据库表格 Drop table 命令的使用格式 在SQL语言中使用drop table 命令删除某个表格以及该表格中的所有记录。 为: drop table table name; 例如: drop table empio yee; 如果用户希望将某个数据库表格完全删除,只需要在drop table命令后输入希望删除
22、的表格名称即可。 Drop table命令的作用与删除表格中的所有记录不同。删除表格中的全部记录之后,该表格仍然存在,而 且表格中列的信息不会改变。而使用drop table 命令则会将整个数据库表格的所有信息全部删除。 、数据控件 1、ADO数据控件 1.1 ADO对象模型 ADO(ActiveX Data Object)数据访问接口是 Microsoft处理数据库信息的最新技术。它是一种ActiveX 对象,采用了被称为 OLE DB的数据访问模式,是数据访问对象 DAO、远程数据对象 RDO和开放数据库 互连ODBC三种方式的扩展。 ADO对象模型定义了 一个可编程的分层对象集合,主要由
23、三个对象成员 Conn ection、Comma nd 和 Recordset 对象,以及几个集合对象 Errors、Parameters 和 Fields 等所组成。图 9.13 示意了这些对象之间的关系。表9.6是对这些对象的分工描述。 表9.6 ADO对象描述 对象名 描述 Connection 连接数据来源 Command 从数据源获取所需数据的命令信息 Recordset 所获得的一组记录组成的记录集 Error 在访问数据时,由数据源所返回的错误信息 P arameter 与命令对象有关的参数 Field 包含了记录集中某个字段的信息 图9.13 ADO对象模型 要想在程序中使用
24、ADO对象,必须先为当前工程引用 ADO的对象库。 引用”命令,启动引用对话框,在清单中选取 “ Microsoft ActiveX Data 引用方式是执行工程”菜单的 Objects 2.0 Library 选项。 1.2使用ADO数据控件 工程|部件”菜单命令选择 Microsoft ADO Data Control 在使用 ADO数据控件前,必须先通过 6.0(OLEDB) ”选项,将 ADO数据控件添加到工具箱。ADO数据控件与 Visual Basic的内部Data控件很 相似,它允许使用 ADO数据控件的基本属性快速地创建与数据库的连接。 1 . ADO数据控件的基本属性 (1)
25、 ConnectionString 属性 ADO控件没有DatabaseName属性,它使用 ConnectionString属性与数据库建立连接。该属性包含了 用于与数据源建立连接的相关信息,ConnectionString属性带有4个参数,如表9.7所示。 (2) RecordSource 属性 Recordsource确定具体可访问的数据,这些数据构成记录集对象Recordset。该属性值可以是数据库中 的单个表名,一个存储查询,也可以是使用SQL查询语言的一个查询字符串。 表 9.7 ConnectionString 属性参数 参数 描述 Provide 指定数据源的名称 FileNa
26、me 指定数据源所对应的文件名 Remote Provide 在远程数据服务器打开一个客户端时所用的数据源名称 精选文库 RemoteServer在远程数据服务器打开一个主机端时所用的数据源名称 (3) ConnectionTimeout 属性 用于数据连接的超时设置,若在指定时间内连接不成功显示超时信息。 (4) MaxRecords 属性 定义从一个查询中最多能返回的记录数。 2. ADO数据控件的方法和事件 ADO数据控件的方法和事件与Data控件的方法和事件完全一样。 3 .设置ADO数据控件的属性 下面通过使用ADO数据控件连接Student.mdb数据库来说明ADO数据控件属性的设
27、置。 步骤1:在窗体上放置 ADO数据控件,控件名采用默认名“ Adodcl。” 步骤2:单击ADO控件属性窗口中的 ConnectionString属性右边的“按钮,弹出 属性页”对话框。 在该对话框中允许通过三种不同的方式连接数据源: 使用连接字符串”只需要单击 生成”按钮,通过选项设置自动产生连接字符串。 使用Data Link文件”表示通过一个连接文件来完成。 (DSN),作为数据 使用ODBC数据资源名称”可以通过下拉式列表框,选择某个创建好的数据源名称 来源对远程数据库进行控制。 OLE DB 数据源,Student.mdb 是 Access 数据库,选择 “Microsoft J
28、e 3.51 OLE 下一步”按钮或打开 连接”选项卡,在对话框内指定数据库文件,这里为 可单击 连接”选项卡右下方的测试连接”按钮,如果测试成功则关闭 步骤3:采用 使用连接字符串”方式连接数据源。单击 生成”按钮,打开 数据链接属性”对话框。在 提 供者”选项卡内选择一个合适的 DB Provider选项。然后单击 Stude nt.mdb。为保证连接有效, ConnectionString 属性页。 步骤4:单击ADO控件属性窗口中的 RecordSource属性右边的“按钮,弹出记录源属性页对话框。 在命令类型”下拉式列表框中选择 “2 adCmdTable选项,在表或存储过程名称”下
29、拉式列表框中选择 Student.mdb数据库中的 基本情况”表,关闭记录源属性页。此时,已完成了ADO数据控件的连接工作。 由于ADO数据控件是一个 ActiveX控件,也可以用鼠标右键单击 ADO数据控件,在弹出的快捷菜单 中选择“ADODC属性”菜单命令,打开ADO数据控件属性页对话框,一次完成步骤1步骤4的全部设置。 1.3 ADO数据控件上新增绑定控件的使用 随着ADO对象模型的引入,Visual Basic 6.0除了保留以往的一些绑定控件外,又提供了一些新的成 员来连接不同数据类型的数据。这些新成员主要有DataGrid、DataCombo、DataList、DataReport
30、、 MSHFlexGrid、MSChart控件和MonthView等控件。这些新增绑定控件必须使用ADO数据控件进行绑定。 Visual Basic 6.0在绑定控件上不仅对 DataSource和DataField属性在连接功能上作了改进,又增加了 DataMember与DataFormat属性使数据访问的队列更加完整。DataMember属性允许处理多个数据集, DataFormat属性用于指定数据内容的显示格式。 例9.6使用ADO数据控件和DataGrid数据网格控件浏览数据库Student.mdb,并使之具有编辑功能。 在窗体上放置 ADO数据控件,并按前面介绍的ADO数据控件属性设
31、置过程连接数据库Student.mdb 中的基本情况表。 DataGrid控件允许用户同时浏览或修改多个记录的数据。在使用DataGrid控件前也必须先通过工程| 部件”菜单命令选择 “Microsoft DataGridControl 6.O(OLEDB)”选项,将 DataGrid控件添加到工具箱,再 将DataGrid控件放置到窗体上。设置DataGrid网格控件的 DataSource属性为Adodc1,就可将DataGrid1 绑定到数据控件 Adodc1上。 DataGrid 控件的 AllowAddNew、AllowDelete 和 显示在 DataGrid网格内的记录集,可以通
32、过 11 精选文库 24 AllowUpdate属性设置控制增,删、改操作。 如果要改变 DataGrid网格上显示的字段,可用鼠标右键单击DataGrid控件,在弹出的快捷菜单中选 择检索字段”选项。Visual Basic提示是否替换现有的网格布局,单击是”按钮就可将表中的字段装载到 DataGrid控件中。再次用鼠标右键单击DataGrid控件,在弹出的快捷菜单中选择编辑”选项,进入数据网 格字段布局的编辑状态,此时,当鼠标指在字段名上时,鼠标指针变成黑色向下箭头。用鼠标右键单击需 要修改的字段名,在弹出的快捷菜单中选择删除”选项,就可从DataGrid控件中删除该字段,也可选择 属 性
33、”选项修改字段的显示宽度或字段标题。 图9.14所示为具有增、删、改功能的数据网格绑定。标有 号的记录行表示允许增加新记录。 学号 姓名1 雷业1 1出生年月 E0CO3 陈诫刚 男 1332-12-30 02ocn 林誠红 机电 1993-1011 110C05 刘云毅 男 计算机 1332-2-2 110009 翻丽娜 计算机 1904-5-G Lnocoi 李錐娜 J 333-1 审ADOgfh和Dal;已日lid数垂网格 dZ 2、Data控件 图9.14具有增、删、改功能的数据网格绑定 Data 控件是Visual Basic访问数据库的一种利器,它能够利用三种 Recordset对
34、象来访问数据库 中的数据,数据控件提供有限的不需编程而能访问现存数据库的功能,允许将 库方便地进行连接。要利用数据控件返回数据库中记录的集合,应先在窗体上画出控件,再通过它的三个 基本属性Connect、DatabaseName和RecordSource设置要访问的数据资源。 Visual Basic的窗体与数据 2.1 Data控件属性 1. Connect 属性 Connect属性指定数据控件所要连接的数据库类型, 此外,也可连接 DBF、XLS、ODBC等类型的数据库。 2. DatabaseName属性 DatabaseName属性指定具体使用的数据库文件名, DatabaseName
35、属性应设置为数据库文件所在的子目录名, Visual Basic默认的数据库是 Access的MDB文件, 包括所有的路径名。 如果连接的是单表数据库,则 而具体文件名放在RecordSource属性中。 例如,要连接一个 Microsoft Access 的数据库 C:Student.mdb,则设置 DatabaseName= ” 0Student.mdb, Access数据库的所有表都包含在一个 MDB文件中。如果连接一个 Fox Pro数据库如C: VB6 stu_fox.dbf, 则 DatabaseName= C:VB6 , RecordSource= stu_fox.dbf, st
36、u_fox 数据库只含有一个表。 3. RecordSource 属性 RecordSource确定具体可访问的数据,这些数据构成记录集对象Recordset。该属性值可以是数据库中 的单个表名,一个存储查询,也可以是使用SQL查询语言的一个查询字符串。 例如,要指定Student.mdb数据 库中的 基本情况表,则 RecordSource=”基本情 况”。而 RecordSource= ” SelecFrom基本情况 Where专业=物理,则表示要访问基本情况表中所有物理系学生 的数据。 4. RecordType 属性 RecordType属性确定记录集类型。 5. EofAction
37、和 BofAction 属性 当记录指针指向Recordset对象的开始(第一个记录前)或结束(最后一个记录后)时,数据控件的 EofAction和BofAction属性的设置或返回值决定了数据控件要采取的操作。属性的取值如表9.1所示。 表 9.1 EofAction 和 BofAction 属性 属性 取值 操作 BofAction 0 控件重定位到第一个记录 1 移过记录集开始位,定位到一个无效记录,触发数据控件对第一 个记录的无效事件 Validate EofAction 0 控件重定位到最后一个记录 1 移过记录集结束位,定位到一个无效记录,触发数据控件对最 后一个记录的无效事件Va
38、lidate 2 向记录集加入新的空记录,可以对新记录进行编辑,移动记录指 针,新记录写入数据库 在Visual Basic中,数据控件本身不能直接显示记录集中的数据,必须通过能与它绑定的控件来实现。 可与数据控件绑定的控件对象有文本框、标签、图像框、图形框、列表框、组合框、复选框、网格、DB 列表框、DB组合框、DB网格和OLE容器等控件。要使绑定控件能被数据库约束,必需在设计或运行时 对这些控件的两个属性进行设置: (1) DataSource 属性 DataSource属性通过指定一个有效的数据控件连接到一个数据库上。 (2) DataField 属性 DataField属性设置数据库有
39、效的字段与绑定控件建立联系。 绑定控件、数据控件和数据库三者的关系如图9.7所示。 绑定控件 数据控件 *数据库 图9.7绑定控件、数据控件和数据库三者的关系 当上述控件与数据控件绑定后,Visual Basic将当前记录的字段值赋给控件。如果修改了绑定控件内的 数据,只要移动记录指针,修改后的数据会自动写入数据库。数据控件在装入数据库时,它把记录集的第 一个记录作为当前记录。当数据控件的BofAction属性值设置为2时,当记录指针移过记录集结束位,数 据控件会自动向记录集加入新的空记录。 例9.1建立student.mdb数据库,它包含两个表:基本情况”表和 学生成绩表”。参见表9.2和表
40、9.3。 表9.2学生基本情况表结构 字段名 类型 宽度 学号 Text 6 姓名 Text 10 性别 Text 2 专业 Text 10 出生年月 Date 8 照片 Binary 0 表9.3学生成绩表结构 字段名 类型 宽度 学号 Text 6 课程 Text 10 成绩 Long 4 学期 Text 2 用可视化数据管理器建立以上设计的数据库及其表,表中数据可自行录入。 例9.2设计一个窗体用以显示建立的student.mdb数据库中基本情况表的内容。 5个文 基本情况表包含了 6个字段,故需要用 6个绑定控件与之对应。这里用一个图形框显示照片和 本框显示学号、姓名等数据。本例中不需
41、要编写任何代码,具体操作步骤如下: (1)参考如图9.8所示窗体,在窗体上放置1个数据控件,一个图形框、5个文本框和5个标签控件。5 个标签控件分别给出相关的提示说明。 Jo 2d 学号 aiDOQl 姓名 专业丽 出生日期I19S3-12-23 ma 图9.8 显示Student.mdb基本情况表的数据 (2) 将数据控件 Data1的Connect属性指定为 Access类型,DatabaseName属性连接数据库 Student.mdb, RecordSource属性设置为基本情况表。 (3) 图形框和5个文本框控件 Text1Text5的DataSource属性都设置成 Data1。通
42、过单击这些绑定控件 的DataField属性上的“按钮,将下拉出基本情况表所含的全部字段,分别选择与其对应的字段照片、学 号、姓名、性别、专业和出生年月,使之建立约束关系。 运行该工程即可出现图9.8所示效果。5个文本框分别显示基本情况表内的字段:学号、姓名、性别、 专业和出生年月的内容,图形框显示每个学生的照片。 使用数据控件对象的 4个箭头按钮可遍历整个记录集中的记录。单击最左边的按钮显示第I条记录; 单击其旁边的按钮显示上一条记录;单击最右边的按钮显示最后一条记录;单击其旁边的按钮显示下一条 记录。数据控件除了可以浏览Recordset对象中的记录外,同时还可以编辑数据。如果改变了某个字
43、段的 值,只要移动记录,这时所作的改变存入数据库中。 Visual Basic 6.0提供了几个比较复杂的网格控件,几乎不用编写代码就可以实现多条记录数据显示。 当把数据网格控件的DataSource属性设置为一个 Data控件时,网格控件会被自动地填充,并且其列标题 会用Data控件的记录集里的数据自动地设置。 2.2 data控件与MsFlexGrid 控件结合显示数据库中信息 例9.3用数据网格控件 MsFlexGrid显示Student.mdb数据库中基本情况表的内容。 MsFlexGrid控件不是Visual Basic工具箱内的默认控件,需要在开发环境中选择工程|部件”菜单命令,
44、并在随即出现的对话框中选择“Microsoft FlexGrid Control 6.0选项,将其添加到工具箱中。本例所用控件 的属性设置如表 9.4所示。请读者自行比较不可卷动列属性FixedCols=0与FixedCols=1的区别。Form启 Hili 动后自动显示如图9.9所示窗口。 表9.4控件属性 默认控件名 其它属性设置 Data1 DatabaseName=” cstudent.mdb ” RecordsetT yp e=0 RecordSource=基本情况” MSFlexGrid1 DataSource=Data1 FixCols=0 I出生年月I aiDOOl 01001
45、0 010014 李维娜 丁保民 陆为明 立男男男 1903-12-23 19037-14 13S2-11-11 1982-12-30 020003 图9.9使用数据网格控件 2.3数据控件的常用方法 数据控件的内置功能很多,可以在代码中用数据控件的方法访问这些属性。 1. Refresh 方法 如果在设计状态没有为打开数据库控件的有关属性全部赋值,或当Recordsource在运行时被改变后, 必须使用数据控件的Refresh方法激活这些变化。在多用户环境下,当其他用户同时访问同一数据库和表 时,Refresh方法将使各用户对数据库的操作有效。 例如:将例9.2的设计参数改用代码实现,使所连
46、接数据库所在的文件夹可随程序而变化: Private Sub Form_Load() Dim mp ath As Stri ng Mp ath=A pp.P ath获取当前路径 If Right(mpath,1)” /” Then mpath=mpath+” /” Data1.DatabaseName=mpath+ ” Student.mdb ” 连接数据库 Data1.RecordSource=基本情况”构成记录集对象 Data1.Refresh激活数据控件 End Sub 2. UpdateControls 方法 UpdateControls方法可以将数据从数据库中重新读到被数据控件绑定的
47、控件内。因而我们可使用 UpdateControls方法终止用户对绑定控件内数据的修改。 例如:将代码Data1.UpdateControts放在一个命令按钮的Click事件中,就可以实现对记录修改的功能。 3. Up dateRecord 方法 存修改。如果使用 Validate事件。在 当对绑定控件内的数据修改后,数据控件需要移动记录集的指针才能保 UpdateRecord方法,可强制数据控件将绑定控件内的数据写入到数据库中,而不再触发 代码中可以用该方法来确认修改。 2.4记录集的属性与方法 由RecordSource确定的具体可访问的数据构成的记录集Recordset也是一个对象, 象
48、一样具有属性和方法。下面列出记录集常用的属性和方法。 1. AbsolutePosition属性 AbsolutePosition返回当前指针值,如果是第1条记录,其值为 0,该属性为只读属性。 2. Bof和Eof的属性 Bof判定记录指针是否在首记录之前,若Bof为True,则当前位置位于记录集的第1条记录之前。与 此类似,Eof判定记录指针是否在末记录之后。 3. Bookmark 属性 Bookmark属性的值采用字符串类型,用于设置或返回当前指针的标签。在程序中可以使用 属性重定位记录集的指针,但不能使用 4. Nomatch 属性 在记录集中进行查找时,如果找到相匹配的记录, 该属
49、性常与Bookmark属性一起使用。 5. RecordCount 属性 RecordCount属性对Recordset对象中的记录计数,该属性为只读属性。 在多用户环境下, Absolute Postion 属性。 因而,它和其他对 Bookmark 则 Recordset 的 NoMatch 属性为 False, 否则为True。 RecordCo unt 属性值可能不准确,为了获得准确值,在读取RecordCount属性值之前,可使用MoveLast方法将记录指针 移至最后一条记录上。 6. Move方法 使用Move方法可代替对数据控件对象的4个箭头按钮的操作遍历整个记录集。5种Mov
50、e方法是: (1) MoveFirst方法:移至第1条记录。 (2) MoveLast方法:移至最后一条记录。 (3) MoveNext方法:移至下一条记录。 (4) MovePrevious方法:移至上一条记录。 (5) Move n方法:向前或向后移n条记录,n为指定的数值。 例9.4在窗体上用4个命令按钮代替例 9.2数据控件对象的4个箭头按钮的操作。 在例9.2的基础上,窗体上增加4个命令按钮,将数据控件的Visible属性设置为False,如图9.10所 4个箭头按钮的操作。 示。通过对4个命令按钮的编程代替对数据控件对象的 学号oirai I K qN 姓名|sw 性别阪 专业薛
51、下一条 末记录 图9.10用按钮代替数据控件对象的箭头按钮 命令按钮 Command1_Click Private Sub Comma nd1_Click() Data1.Recordset.MoveFirst 事件移至第1条记录,代码如下: 事件移至最后一条记录,代码如下: Recordset对象的边界的首尾,如果越界,则用MoveFirst方法定位到第 End Sub 命令按钮 Command4_Click Private Sub Comma nd4_Click() Data1.Recordset.MoveLast End Sub 另外两个按钮的代码需要考虑 1条记录或用 MoveLast
52、方法定位到最后一条记录。程序代码如下: Private Sub Comma nd2_Click() Data1.Recordset.Move Previous If Data1.Recordset.BOF The n Data1.Recordset.MoveFirst End Sub Private Sub Comma nd3_Click() Data1.Recordset.MoveNext If Data1.Recordset.EOF The n Data1.Recordset.MoveLast End Sub Recordset对象中查找与指定条件相符的一条记 1条记录。 I条记录。 7.
53、 Find方法 使用Fi nd方法可在指定的 Dyn aset或Snap shot类型的 录,并使之成为当前记录。4种Find方法是: (1) FindFirst方法:从记录集的开始查找满足条件的第 (2) FindLast方法:从记录集的尾部向前查找满足条件的第 (3) FindNext方法:从当前记录开始查找满足条件的下一条记录。 (4) FindPrevious方法:从当前记录开始查找满足条件的上一条记录。 4种Find方法的语法格式相同: 数据集合.Find方法条件 搜索条件是一个指定字段与常量关系的字符串表达式。在构造表达式时,除了用普通的关系运算外, 还可以用Like运算符。 例如
54、:语句 “ Data1.Recordset.FindFirst专业=物理表示在由Data1数据控件所连接的数据库 Student.mdb的记录集内查找专业为 物理的第I条记录。这里, 专业为数据库Student记录集中的字段 名,在该字段中存放专业名称信息。要想查找下一条符合条件的记录,可继续使用语 句:” Data1.Recordset.FindNext 专业=物理。 又例如:要在记录集内查找专业名称中带有建”字的专业: Data1.Recordset.FindFirst 专业 Like 建* ” 字符串“建* ”匹配字段专业中带有建”字字样的所有专业名称字符串。 需要指出的是 Find方法
55、在找不到相匹配的记录时,当前记录保持在查找的始发处,NoMatch属性为 True。如果Find方法找到相匹配的记录,则记录定位到该记录,Recordset的NoMatch属性为False。 8. Seek方法 使用Seek方法必须打开表的索引,它在Table表中查找与指定索引规则相符的第1条记录,并使之成 为当前记录。其语法格式为: 数据表对象.seek comparison,keyl,key2 Seek允许接受多个参数,第1个是比较运算符 comparison, Seek方法中可用的比较运算符有=、=、 、=等。 在使用Seek方法定位记录时,必须通过Index属性设置索引。若在记录集中多
56、次使用同样的 法(参数相同),那么找到的总是同一条记录。 例如:假设数据库 Student内基本情况表的索引字段为学号,满足学号字段值大于等于 条记录可使用以下程序代码: Data1.RecordsetTy pe = 0 Data1.RecordSource =基本情况” Data1.Refresh Data1.Recordset.Index = jbqk _no Data1.Recordset.Seek =, 110001 设置记录集类型为 Table 打开基本情况表单 打开名称为jbqk_no的索引 Seek 方 110001 的第 1 2.5数据库记录的增、删、 Data控件是浏览表格并
57、编辑表格的好工具,但怎么输入新信息或删除现有记录呢?这需要编写几行代 码,否则无法在Data控件上完成数据输入。 数据库记录的增、删、改操作需要使用 AddNew、Delete、Edit、 Up date和Refresh方法。它们的语法格式为: 数据控件记录集方法名 1 .增加记录 AddNew方法在记录集中增加新记录。增加记录的步骤为: (1) 调用AddNew方法。 (2) 给各字段赋值。给字段赋值格式为:Recordset.Fields(字段” ”)值。 调用Up date方法,确定所做的添加,将缓冲区内的数据写入数据库。 注意:如果使用 AddNew方法添加新的记录,但是没有使用Up
58、date方法而移动到其他记录,或者关 闭记录集,那么所做的输入将全部丢失,而且没有任何警告。当调用Up date方法写入记录后,记录指针自 动返回到添加新记录前的位置上,而不显示新记录。为此,可在调用Up date方法后,使用 MoveLast方法 将记录指针再次移到新记录上。 2 删除记录 要从记录集中删除记录的操作分为三步: (1) 定位被删除的记录使之成为当前记录。 (2) 调用Delete方法。 (3) 移动记录指针。 注意:在使用Delete方法时,当前记录立即删除,不加任何的警告或者提示。删除一条记录后,被数 据库所约束的绑定控件仍旧显示该记录的内容。因此,你必须移动记录指针刷新绑
59、定控件,一般采用移至 下一记录的处理方法。在移动记录指针后,应该检查Eof属性。 3 .编辑记录 数据控件自动提供了修改现有记录的能力,当直接改变被数据库所约束的绑定控件的内容后,需单击 数据控件对象的任一箭头按钮来改变当前记录,确定所做的修改。也可通过程序代码来修改记录,使用程 序代码修改当前记录的步骤为: (1) 调用Edit方法。 (2) 给各字段赋值。 (3) 调用Up date方法,确定所做的修改。 注意:如果要放弃对数据的所有修改,可用Refresh方法,重读数据库,没有调用Up date方法,数据 的修改没有写入数据库,所以这样的记录会在刷新记录集时丢失。 例9.5在例9.2的基
60、础上加入 新增” 删除” 修改” 放弃”和 查找”钮,通过对5个按纽的编程 建立增、删、改、查功能,如图 9.11所示。 孚号 pl 0001 姓名I李维娜性别 庆 专业 新増 出主日期|伯曲-12公 删除 修改 EOT ma 图9.11编程建立增、删、改、查功能 Comma nd1_Click事件的功能根据按钮提示文字调用AddNew方法或Up date方法, 按钮的可用性。当按钮提示为新增”时调用AddNew方法,并将提示文字改为确认” Command2、修改按钮Command3和 查找按钮Command5不可用,而使 放弃按钮 需再次单击 并且控制具他4个 同时使删除”按钮 Comman
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海高考语文三年模拟真题(21-23年)知识点汇编-文学类文本阅读
- 对讲机赠与协议样本
- 轮式装卸机租赁合同范本
- 工程分包合同协议书格式
- 曹冲称象(2课时)公开课一等奖创新教案
- 改扩建高速公路临时用地合同
- 2024年餐饮合伙股份协议书
- 2024年房屋建筑施工承包合同范本
- 合作经营公司劳动合同样本
- 农产品供应补充协议
- 2024年度假区(阳澄湖镇)国(集体)公司公开招聘工作人员高频难、易错点500题模拟试题附带答案详解
- 浙江省杭州市五校联考2025届英语高三第一学期期末复习检测试题含解析
- 医院法律风险防范措施计划
- 高层次和急需紧缺人才引进报名表
- 技术转让合同
- 2024年全国统一高考数学试卷(理科)甲卷含答案
- 第一、二章知识点2024-2025学年商务星球版地理七年级上册
- 2023年山东选调考试真题
- 电信人工智能大学习抽测考试题库(含答案)
- 2024江苏省铁路集团限公司春季招聘24人高频考题难、易错点模拟试题(共500题)附带答案详解
- 2024术语工作适老化基本术语
评论
0/150
提交评论