当前位置:文档之家› VB数据库编程技术实例

VB数据库编程技术实例

VB数据库编程技术实例
VB数据库编程技术实例

数据库编程技术

一ODBC概述

在传统的数据库管理系统中,每个数据库管理系统都有自己的应用程序开发接口(API),为了解决此问题,微软公司开发了ODBC(Open DataBase Connectivity,即开放数据库互连)。

ODBC 是一套开放数据库系统应用程序接口规范,目前它已成为一种工业标准,它提供了统一的数据库应用编程接口(API),为应用程序提供了一套高层调用接口规范和基于动态连接库的运行支持环境。使用ODBC开发数据库应用时,应用程序调用的是标准的ODBC函数和SQL语句,屏蔽了DBMS之间的差异,数据库底层操作由各个数据库的驱动程序完成。因此应用程序有很好的适应性和可移植性,并且具备了同时访问多种数据库管理系统的能力,从而彻底克服了传统数据库应用程序的缺陷。

主要任务包括:建立与数据源的连接;向数据源发送SQL请求;断开与数据源的连接

数据源

数据源是指任一种可以通过ODBC连接的数据库管理系统,它包括要访问的数据库和数据库的运行平台。数据源名掩盖了数据库服务器或数据库文件间的差别,通过定义多个数据源,每个数据源指向一个服务器名,就可在应用程序中实现同时访问多个DBMS的目的。

数据源(Data Source Name,简称DSN)是驱动程序与DBS连接的桥梁,数据源不是DBS,而是用于表达一个ODBC驱动程序和DBMS特殊连接的命名。在连接中,用数据源名来代表用户名、服务器名、所连接的数据库名等,可以将数据源名看成是与一个具体数据库建立的连接。

数据源分为以下三类:

(1)用户数据源:用户创建的数据源,称为“用户数据源”。此时只有创建者才能使用,并且只能在所定义的机器上运行。任何用户都不能使用其他用户创建的用户数据源。

(2)系统数据源:所有用户和在Windows NT下以服务方式运行的应用程序均可使用系统数据源。

(3)文件数据源:文件数据源是ODBC 3.0以上版本增加的一种数据源,可用于企业用户,ODBC驱动程序也安装在用户的计算机上。(与机器无关)

二、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],

column2 data type [constraint],

column3 data type [constraint]);

举例如下:

create table employee

(firstname varchar(15),

lastname varchar(20),

age number(3),

address varchar(30),

city varchar(20));

简单来说,创建新表格时,在关键词create table后面加入所要建立的表格的名称,然后在括号内顺次设定各列的名称,数据类型,以及可选的限制条件等。注意,所有的SQL语句在结尾处都要使用“;”符号。使用SQL语句创建的数据库表格和表格中列的名称必须以字母开头,后面可以使用字母,数字或下划线,名称的长度不能超过30个字符。注意,用户在选择表格名称时不要使用SQL语言中的保留关键词,如select, create, insert等,作为表格或列的名称。

数据类型用来设定某一个具体列中数据的类型。例如,在姓名列中只能采用varchar或char的数据类型,而不能使用number的数据类型。

SQL语言中较为常用的数据类型为:

char(size):固定长度字符串,其中括号中的size用来设定字符串的最大长度。Char类型的最大长度为255字节。

varchar(size):可变长度字符串,最大长度由size设定。

number(size):数字类型,其中数字的最大位数由size设定。

Date:日期类型。

number(size,d):数字类型,size决定该数字总的最大位数,而d则用于设定该数字在小数点后的位数。最后,在创建新表格时需要注意的一点就是表格中列的限制条件。所谓限制条件就是当向特定列输入数据时所必须遵守的规则。例如,unique这一限制条件要求某一列中不能存在两个值相同的记录,所有记录的值都必须是唯一的。除unique之外,较为常用的列的限制条件还包括not null和primary key等。Not null 用来规定表格中某一列的值不能为空。Primary key则为表格中的所有记录规定了唯一的标识符。

查询

简单的SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的

表或视图、以及搜索条件等。

完整结构:

Select [All/Distinct]<目标表达式>[ <目标表达式>]…From<表名>[,<表名>]…[Where<条件表达式>][Group by <列名1>[Having<条件表达式>]][Order by <列名2> [Asc/Desc] ]

Group by :按列名1的值进行分组,属性值相等的为一个组,如果带Having短句,表示只有满足指定条件的才输出。

例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。

SELECT nickname,email

FROM testtable

WHERE name='张三'

(一) 选择列表

2

选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变

量和全局变量)等构成。

1、选择所有列

例如,下面语句显示testtable表中所有列的数据:

SELECT *

FROM testtable

2、选择部分列并指定它们的显示次序

查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。

例如:

SELECT nickname,email

FROM testtable

3、更改列标题

在选择列表中,可重新指定列标题。定义格式为:

列标题=列名

列名列标题

如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列

标题:

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

SELECT TOP 20 PERCENT *

FROM testtable

(二)FROM子句

FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,

它们之间用逗号分隔。

在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列

所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应

使用下面语句格式加以限定:

SELECT username,citytable.cityid

FROM usertable,citytable

WHERE usertable.cityid=citytable.cityid

在FROM子句中可用以下两种格式为表或视图指定别名:

表名as 别名

表名别名

3

(二) FROM子句

FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,

它们之间用逗号分隔。

在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列

所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应

使用下面语句格式加以限定:

SELECT username,citytable.cityid

FROM usertable,citytable

WHERE usertable.cityid=citytable.cityid

在FROM子句中可用以下两种格式为表或视图指定别名:

表名as 别名

表名别名

例如上面语句可用表的别名格式表示为:

SELECT username,b.cityid

FROM usertable a,citytable b

WHERE a.cityid=b.cityid

SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。

例如:

SELECT a.au_fname+a.au_lname

FROM authors a,titleauthor ta

(SELECT title_id,title

FROM titles

WHERE ytd_sales>10000

) AS t

WHERE a.au_id=ta.au_id

AND ta.title_id=t.title_id

此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。

(三) 使用WHERE子句设置查询条件

WHERE子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于20的数据:SELECT *

FROM usertable

WHERE age>20

WHERE子句可包括各种条件运算符:

比较运算符(大小比较):>、>=、=、<、<=、<>、!>、!<

范围运算符(表达式值是否在指定的范围):BETWEEN…AND…

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 ('Germany','China')

3、模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。可用于char、

4

varchar、text、ntext、datetime和smalldatetime等类型查询。

可使用以下通配字符:

百分号%:可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即%%。

下划线_:匹配单个任意字符,它常用来限制表达式的字符长度。

方括号[]:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。

[^]:其取值也[] 相同,但它要求所匹配对象为指定字符以外的任一个字符。

例如:

限制以Publishing结尾,使用LIKE '%Publishing'

限制以A开头:LIKE '[A]%'

限制以A开头外:LIKE '[^A]%'

4、空值判断符例WHERE age IS NULL

5、逻辑运算符:优先级为NOT、AND、OR

(四)查询结果排序

使用ORDER BY子句对查询返回的结果按一列或多列排序。ORDER BY子句的语法格式为:

ORDER BY {column_name [ASC|DESC]} [,…n]

其中ASC表示升序,为默认值,DESC为降序。ORDER BY不能按ntext、text和image数据类型进行排序。

例如:

SELECT *

FROM usertable

ORDER BY age desc,userid ASC

另外,可以根据表达式进行排序。

向表格中插入数据

SQL语言使用insert语句向数据库表格中插入或添加新的数据行。Insert语句的使用格式如下:

insert into tablename

(first_column,https://www.doczj.com/doc/298809820.html,st_column)

values (first_value,https://www.doczj.com/doc/298809820.html,st_value);

例如:

insert into employee

(firstname, lastname, age, address, city)

values (…Li?, …Ming?, 45, …No.77 Changan Road?, …Beijing”);

简单来说,当向数据库表格中添加新记录时,在关键词insert into后面输入所要添加的表格名称,然后在括号中列出将要添加新值的列的名称。最后,在关键词values的后面按照前面输入的列的顺序对应的输入所有要添加的记录值。

更新记录

SQL语言使用update语句更新或修改满足规定条件的现有记录。Update语句的格式为:

update tablename

set columnname = newvalue [, nextcolumn = newvalue2...]

where columnname OPERATOR value [and|or column OPERATOR value];

例如:

5

update employee

set age = age+1

where first_name= …Mary?and last_name= …Williams?;

使用update语句时,关键一点就是要设定好用于进行判断的where条件从句。

删除记录

SQL语言使用delete语句删除数据库表格中的行或记录。Delete语句的格式为:

delete from tablename

where columnname OPERATOR value [and|or column OPERATOR value];

例如:

delete from employee

where lastname = May;

简单来说,当需要删除某一行或某个记录时,在delete from关键词之后输入表格名称,然后在where从句中设定删除记录的判断条件。注意,如果用户在使用delete语句时不设定where从句,则表格中的所有记录将全部被删除。

删除数据库表格

在SQL语言中使用drop table命令删除某个表格以及该表格中的所有记录。Drop table命令的使用格式为:

drop table tablename;

例如:

drop table employee;

如果用户希望将某个数据库表格完全删除,只需要在drop table命令后输入希望删除的表格名称即可。Drop table命令的作用与删除表格中的所有记录不同。删除表格中的全部记录之后,该表格仍然存在,而且表格中列的信息不会改变。而使用drop table命令则会将整个数据库表格的所有信息全部删除。

三、数据控件

1、ADO数据控件

1.1 ADO对象模型

ADO(ActiveX Data Object)数据访问接口是Microsoft处理数据库信息的最新技术。它是一种ActiveX 对象,采用了被称为OLE DB的数据访问模式,是数据访问对象DAO、远程数据对象RDO和开放数据库互连ODBC三种方式的扩展。ADO对象模型定义了—个可编程的分层对象集合,主要由三个对象成员Connection、Command和Recordset对象,以及几个集合对象Errors、Parameters和Fields等所组成。图9.13示意了这些对象之间的关系。表9.6是对这些对象的分工描述。

6

Connection对象

Error集合Error对象

Command对象

Parameter集合Parameter对象

Recordset对象

Field集合Field对象

图9.13 ADO对象模型

表9.6 ADO对象描述

对象名描述

Connection 连接数据来源

Command 从数据源获取所需数据的命令信息

Recordset 所获得的一组记录组成的记录集

Error 在访问数据时,由数据源所返回的错误信息

Parameter 与命令对象有关的参数

Field 包含了记录集中某个字段的信息

要想在程序中使用ADO对象,必须先为当前工程引用ADO的对象库。引用方式是执行“工程”菜单的“引用”命令,启动引用对话框,在清单中选取“Microsoft ActiveX Data Objects 2.0 Library”选项。

1.2 使用ADO数据控件

在使用ADO数据控件前,必须先通过“工程|部件”菜单命令选择"Microsoft ADO Data Control 6.0(OLEDB)”选项,将ADO数据控件添加到工具箱。ADO数据控件与Visual Basic的内部Data控件很相似,它允许使用ADO数据控件的基本属性快速地创建与数据库的连接。

1.ADO数据控件的基本属性

(1)ConnectionString属性

ADO控件没有DatabaseName属性,它使用ConnectionString属性与数据库建立连接。该属性包含了用于与数据源建立连接的相关信息,ConnectionString属性带有4个参数,如表9.7所示。

表9.7 ConnectionString属性参数

参数描述

Provide 指定数据源的名称

FileName 指定数据源所对应的文件名

RemoteProvide 在远程数据服务器打开一个客户端时所用的数据源名称

RemoteServer 在远程数据服务器打开一个主机端时所用的数据源名称

7

(2)RecordSource属性

RecordSource确定具体可访问的数据,这些数据构成记录集对象Recordset。该属性值可以是数据库中的单个表名,一个存储查询,也可以是使用SQL查询语言的一个查询字符串。

(3)ConnectionTimeout属性

用于数据连接的超时设置,若在指定时间内连接不成功显示超时信息。

(4)MaxRecords属性

定义从一个查询中最多能返回的记录数。

2. ADO数据控件的方法和事件

ADO数据控件的方法和事件与Data控件的方法和事件完全一样。

3.设置ADO数据控件的属性

下面通过使用ADO数据控件连接Student.mdb数据库来说明ADO数据控件属性的设置。

步骤1:在窗体上放置ADO数据控件,控件名采用默认名“Adodcl”。

步骤2:单击ADO控件属性窗口中的ConnectionString属性右边的“…”按钮,弹出“属性页”对话框。在该对话框中允许通过三种不同的方式连接数据源:

“使用连接字符串”只需要单击“生成”按钮,通过选项设置自动产生连接字符串。

“使用Data Link文件”表示通过—个连接文件来完成。

“使用ODBC数据资源名称”可以通过下拉式列表框,选择某个创建好的数据源名称(DSN),作为数据来源对远程数据库进行控制。

步骤3:采用“使用连接字符串”方式连接数据源。单击“生成”按钮,打开“数据链接属性”对话框。在“提供者”选项卡内选择一个合适的OLE DB数据源,Student.mdb是Access数据库,选择“Microsoft Jet 3.51 OLE DB Provider”选项。然后单击“下—步”按钮或打开“连接”选项卡,在对话框内指定数据库文件,这里为Student.mdb。为保证连接有效,可单击“连接”选项卡右下方的“测试连接”按钮,如果测试成功则关闭ConnectionString属性页。

步骤4:单击ADO控件属性窗口中的RecordSource属性右边的“…”按钮,弹出记录源属性页对话框。

在“命令类型”下拉式列表框中选择“2 adCmdTable”选项,在“表或存储过程名称”下拉式列表框中选择Student.mdb数据库中的“基本情况”表,关闭记录源属性页。此时,已完成了ADO数据控件的连接工作。

由于ADO数据控件是一个ActiveX控件,也可以用鼠标右键单击ADO数据控件,在弹出的快捷菜单中选择“ADODC属性”菜单命令,打开ADO数据控件属性页对话框,一次完成步骤1~步骤4的全部设置。

1.3 ADO数据控件上新增绑定控件的使用

随着ADO对象模型的引入,Visual Basic 6.0除了保留以往的一些绑定控件外,又提供了一些新的成员来连接不同数据类型的数据。这些新成员主要有DataGrid、DataCombo、DataList、DataReport、MSHFlexGrid、MSChart控件和MonthView等控件。这些新增绑定控件必须使用ADO数据控件进行绑定。

V isual Basic 6.0在绑定控件上不仅对DataSource和DataField属性在连接功能上作了改进,又增加了DataMember与DataFormat属性使数据访问的队列更加完整。DataMember属性允许处理多个数据集,DataFormat属性用于指定数据内容的显示格式。

例9.6 使用ADO数据控件和DataGrid数据网格控件浏览数据库Student.mdb,并使之具有编辑功能。

在窗体上放置ADO数据控件,并按前面介绍的ADO数据控件属性设置过程连接数据库Student.mdb 中的基本情况表。

DataGrid控件允许用户同时浏览或修改多个记录的数据。在使用DataGrid控件前也必须先通过“工程|部件”菜单命令选择“Microsoft DataGrid Control 6.0(OLEDB)”选项,将DataGrid控件添加到工具箱,再将DataGrid控件放置到窗体上。设置DataGrid网格控件的DataSource属性为Adodc1,就可将DataGrid1绑定到数据控件Adodc1上。

8

显示在DataGrid网格内的记录集,可以通过DataGrid控件的AllowAddNew、AllowDelete和AllowUpdate属性设置控制增,删、改操作。

如果要改变DataGrid网格上显示的字段,可用鼠标右键单击DataGrid控件,在弹出的快捷菜单中选择“检索字段”选项。Visual Basic提示是否替换现有的网格布局,单击“是”按钮就可将表中的字段装载到DataGrid控件中。再次用鼠标右键单击DataGrid控件,在弹出的快捷菜单中选择“编辑”选项,进入数据网格字段布局的编辑状态,此时,当鼠标指在字段名上时,鼠标指针变成黑色向下箭头。用鼠标右键单击需要修改的字段名,在弹出的快捷菜单中选择“删除”选项,就可从DataGrid控件中删除该字段,也可选择“属性”选项修改字段的显示宽度或字段标题。

图9.14所示为具有增、删、改功能的数据网格绑定。标有 号的记录行表示允许增加新记录。

图9.14 具有增、删、改功能的数据网格绑定

2、Data控件

Data控件是V isual Basic访问数据库的一种利器,它能够利用三种Recordset对象来访问数据库中的数据,数据控件提供有限的不需编程而能访问现存数据库的功能,允许将Visual Basic的窗体与数据库方便地进行连接。要利用数据控件返回数据库中记录的集合,应先在窗体上画出控件,再通过它的三个基本属性Connect、DatabaseName和RecordSource设置要访问的数据资源。

2.1 Data控件属性

1.Connect属性

Connect属性指定数据控件所要连接的数据库类型,V isual Basic默认的数据库是Access的MDB文件,此外,也可连接DBF、XLS、ODBC等类型的数据库。

2.DatabaseName属性

DatabaseName属性指定具体使用的数据库文件名,包括所有的路径名。如果连接的是单表数据库,则DatabaseName属性应设置为数据库文件所在的子目录名,而具体文件名放在RecordSource属性中。

例如,要连接一个Microsoft Access的数据库C:\Student.mdb,则设置Datab aseName=”C:\Student.mdb",Access数据库的所有表都包含在一个MDB文件中。如果连接一个FoxPro数据库如C:\VB6\stu_fox.dbf,则DatabaseName=”C:\VB6”,RecordSource=”stu_fox.dbf”,stu_fox数据库只含有一个表。

3.RecordSource属性

9

10

RecordSource 确定具体可访问的数据,这些数据构成记录集对象Recordset 。该属性值可以是数据库中的单个表名,—个存储查询,也可以是使用SQL 查询语言的一个查询字符串。

例如,要指定Student.mdb 数据库中的基本情况表,则RecordSource=”基本情况”。而RecordSource=”Select From 基本情况Where 专业=’物理’ ”,则表示要访问基本情况表中所有物理系学生的数据。

4.RecordType 属性

RecordType 属性确定记录集类型。

5.EofAction 和BofAction 属性

当记录指针指向Recordset 对象的开始(第一个记录前)或结束(最后一个记录后)时,数据控件的EofAction 和BofAction 属性的设置或返回值决定了数据控件要采取的操作。属性的取值如表9.1所示。

表9.1 EofAction 和BofAction 属性

属性 取值 操作

BofAction

0 控件重定位到第—个记录

1 移过记录集开始位,定位到一个无效记录,触发数据控件对第一个记录的无效事件V alidate

EofAction

0 控件重定位到最后—个记录

1 移过记录集结束位,定位到一个无效记录,触发数据 控件对最后一个记录的无效事件V alidate

2

向记录集加入新的空记录,可以对新记录进行编辑,移动记录指针,新记录写入数据库

在Visual Basic 中,数据控件本身不能直接显示记录集中的数据,必须通过能与它绑定的控件来实现。可与数据控件绑定的控件对象有文本框、标签、图像框、图形框、列表框、组合框、复选框、网格、DB 列表框、DB 组合框、DB 网格和OLE 容器等控件。要使绑定控件能被数据库约束,必需在设计或运行时对这些控件的两个属性进行设置:

(1)DataSource 属性

DataSource 属性通过指定—个有效的数据控件连接到一个数据库上。 (2)DataField 属性

DataField 属性设置数据库有效的字段与绑定控件建立联系。 绑定控件、数据控件和数据库三者的关系如图9.7所示。

图9.7 绑定控件、数据控件和数据库三者的关系

当上述控件与数据控件绑定后,Visual Basic 将当前记录的字段值赋给控件。如果修改了绑定控件内的数据,只要移动记录指针,修改后的数据会自动写入数据库。数据控件在装入数据库时,它把记录集的第一个记录作为当前记录。当数据控件的BofAction 属性值设置为2时,当记录指针移过记录集结束位,数据控件会自动向记录集加入新的空记录。

例9.1 建立student.mdb 数据库,它包含两个表:“基本情况”表和“学生成绩表”。参见表9.2和表9.3。

表9.2 学生基本情况表结构 字段名 类型 宽度 学号 Text 6 姓名

Text

10

绑定控件

数据控件

数据库

11

性别 Text 2 专业 Text 10 出生年月 Date 8 照片

Binary

表9.3 学生成绩表结构

字段名 类型 宽度 学号 Text 6 课程 Text

10 成绩 Long 4 学期

Text

2

用可视化数据管理器建立以上设计的数据库及其表,表中数据可自行录入。

例9.2 设计一个窗体用以显示建立的student.mdb 数据库中基本情况表的内容。

基本情况表包含了6个字段,故需要用6个绑定控件与之对应。这里用一个图形框显示照片和5个文本框显示学号、姓名等数据。本例中不需要编写任何代码,具体操作步骤如下:

(1)参考如图9.8所示窗体,在窗体上放置1个数据控件,一个图形框、5个文本框和5个标签控件。5个标签控件分别给出相关的提示说明。

图9.8 显示Student.mdb 基本情况表的数据

(2)将数据控件Data1的Connect 属性指定为Access 类型,DatabaseName 属性连接数据库Student.mdb ,RecordSource 属性设置为“基本情况”表。

(3)图形框和5个文本框控件Text1~Text5的DataSource 属性都设置成Data1。通过单击这些绑定控件的DataField 属性上的“…”按钮,将下拉出基本情况表所含的全部字段,分别选择与其对应的字段照片、学号、姓名、性别、专业和出生年月,使之建立约束关系。

运行该工程即可出现图9.8所示效果。5个文本框分别显示基本情况表内的字段:学号、姓名、性别、专业和出生年月的内容,图形框显示每个学生的照片。

使用数据控件对象的4个箭头按钮可遍历整个记录集中的记录。单击最左边的按钮显示第l 条记录;单击其旁边的按钮显示上一条记录;单击最右边的按钮显示最后一条记录;单击其旁边的按钮显示下—条记录。数据控件除了可以浏览Recordset 对象中的记录外,同时还可以编辑数据。如果改变了某个字段的值,只要移动记录,这时所作的改变存入数据库中。

Visual Basic 6.0提供了几个比较复杂的网格控件,几乎不用编写代码就可以实现多条记录数据显示。当把数据网格控件的DataSource 属性设置为一个Data 控件时,网格控件会被自动地填充,并且其列标题会用Data 控件的记录集里的数据自动地设置。

2.2 data 控件与MsFlexGrid 控件结合显示数据库中信息

例9.3 用数据网格控件MsFlexGrid 显示Student.mdb 数据库中基本情况表的内容。

12

MsFlexGrid 控件不是Visual Basic 工具箱内的默认控件,需要在开发环境中选择“工程|部件”菜单命令,并在随即出现的对话框中选择“MicroSoft FlexGrid Control 6.0”选项,将其添加到工具箱中。本例所用控件的属性设置如表9.4所示。请读者自行比较不可卷动列属性FixedCols=0与FixedCols=1的区别。Form 启动后自动显示如图9.9所示窗口。

表9.4 控件属性

默认控件名

其它属性设置

Data1

DatabaseName=”c:\student.mdb” RecordsetType=0

RecordSource=”基本情况”

MSFlexGrid1 DataSource=Data1

FixCols=0

图9.9使用数据网格控件

2.3 数据控件的常用方法

数据控件的内置功能很多,可以在代码中用数据控件的方法访问这些属性。

1.Refresh 方法

如果在设计状态没有为打开数据库控件的有关属性全部赋值,或当RecordSource 在运行时被改变后,必须使用数据控件的Refresh 方法激活这些变化。在多用户环境下,当其他用户同时访问同一数据库和表时,Refresh 方法将使各用户对数据库的操作有效。

例如:将例9.2的设计参数改用代码实现,使所连接数据库所在的文件夹可随程序而变化: Private Sub Form_Load( ) Dim mpath As String

Mpath=App.Path ’获取当前路径

If Right(mpath,1)<>”/” Then mpath=mpath+”/”

Data1.DatabaseName=mpath+”Student.mdb” ’连接数据库 Data1.RecordSource=”基本情况” ’构成记录集对象 Data1.Refresh ’激活数据控件

End Sub

2.UpdateControls 方法

UpdateControls 方法可以将数据从数据库中重新读到被数据控件绑定的控件内。因而我们可使用UpdateControls 方法终止用户对绑定控件内数据的修改。

例如:将代码Data1.UpdateControts放在一个命令按钮的Click事件中,就可以实现对记录修改的功能。

3. UpdateRecord方法

当对绑定控件内的数据修改后,数据控件需要移动记录集的指针才能保存修改。如果使用UpdateRecord方法,可强制数据控件将绑定控件内的数据写入到数据库中,而不再触发V alidate事件。在代码中可以用该方法来确认修改。

2.4 记录集的属性与方法

由RecordSource确定的具体可访问的数据构成的记录集Recordset也是一个对象,因而,它和其他对象一样具有属性和方法。下面列出记录集常用的属性和方法。

1.AbsolutePosition属性

AbsolutePosition返回当前指针值,如果是第1条记录,其值为0,该属性为只读属性。

2.Bof和Eof的属性

Bof判定记录指针是否在首记录之前,若Bof为True,则当前位置位于记录集的第1条记录之前。与此类似,Eof判定记录指针是否在末记录之后。

3.Bookmark属性

Bookmark属性的值采用字符串类型,用于设置或返回当前指针的标签。在程序中可以使用Bookmark 属性重定位记录集的指针,但不能使用AbsolutePostion属性。

4.Nomatch属性

在记录集中进行查找时,如果找到相匹配的记录,则Recordset的NoMatch属性为False,否则为True。该属性常与Bookmark属性一起使用。

5.RecordCount属性

RecordCount属性对Recordset对象中的记录计数,该属性为只读属性。在多用户环境下,RecordCount 属性值可能不准确,为了获得准确值,在读取RecordCount属性值之前,可使用MoveLast方法将记录指针移至最后一条记录上。

6.Move方法

使用Move方法可代替对数据控件对象的4个箭头按钮的操作遍历整个记录集。5种Move方法是:

(1)MoveFirst方法:移至第1条记录。

(2)MoveLast方法:移至最后一条记录。

(3)MoveNext方法:移至下一条记录。

(4)MovePrevious方法:移至上一条记录。

(5)Move [n] 方法:向前或向后移n条记录,n为指定的数值。

例9.4 在窗体上用4个命令按钮代替例9.2数据控件对象的4个箭头按钮的操作。

在例9.2的基础上,窗体上增加4个命令按钮,将数据控件的V isible属性设置为False,如图9.10所示。通过对4个命令按钮的编程代替对数据控件对象的4个箭头按钮的操作。

13

14

图9.10 用按钮代替数据控件对象的箭头按钮命令按钮Command1_Click事件移至第1条记录,代码如下:

Private Sub Command1_Click()

Data1.Recordset.MoveFirst

End Sub

命令按钮Command4_Click事件移至最后一条记录,代码如下:

Private Sub Command4_Click()

Data1.Recordset.MoveLast

End Sub

另外两个按钮的代码需要考虑Recordset对象的边界的首尾,如果越界,则用MoveFirst方法定位到第1条记录或用MoveLast方法定位到最后一条记录。程序代码如下:

Private Sub Command2_Click()

Data1.Recordset.MovePrevious

If Data1.Recordset.BOF Then Data1.Recordset.MoveFirst

End Sub

Private Sub Command3_Click()

Data1.Recordset.MoveNext

If Data1.Recordset.EOF Then Data1.Recordset.MoveLast

End Sub

7.Find方法

使用Find方法可在指定的Dynaset或Snapshot类型的Recordset对象中查找与指定条件相符的一条记录,并使之成为当前记录。4种Find方法是:

(1)FindFirst方法:从记录集的开始查找满足条件的第1条记录。

(2)FindLast方法:从记录集的尾部向前查找满足条件的第l条记录。

(3)FindNext方法:从当前记录开始查找满足条件的下一条记录。

(4)FindPrevious方法:从当前记录开始查找满足条件的上一条记录。

4种Find方法的语法格式相同:

数据集合.Find方法条件

搜索条件是一个指定字段与常量关系的字符串表达式。在构造表达式时,除了用普通的关系运算外,还可以用Like运算符。

例如:语句“Data1.Recordset.FindFirst 专业=’物理’”表示在由Data1数据控件所连接的数据库Student.mdb的记录集内查找专业为“物理”的第l条记录。这里,“专业”为数据库Student记录集中的字段名,在该字段中存放专业名称信息。要想查找下一条符合条件的记录,可继续使用语句:”Data1.Recordset.FindNext 专业=’物理’”。

又例如:要在记录集内查找专业名称中带有“建”字的专业:

Data1.Recordset.FindFirst 专业Like ”*建*”

字符串“*建*”匹配字段专业中带有“建”字字样的所有专业名称字符串。

需要指出的是Find方法在找不到相匹配的记录时,当前记录保持在查找的始发处,NoMatch属性为True。如果Find方法找到相匹配的记录,则记录定位到该记录,Recordset的NoMatch属性为False。

8.Seek方法

使用Seek方法必须打开表的索引,它在Table表中查找与指定索引规则相符的第1条记录,并使之成为当前记录。其语法格式为:

数据表对象.seek comparison,keyl,key2…

Seek允许接受多个参数,第1个是比较运算符comparison,Seek方法中可用的比较运算符有=、>=、>、<>、<、<=等。

在使用Seek方法定位记录时,必须通过Index属性设置索引。若在记录集中多次使用同样的Seek方法(参数相同),那么找到的总是同一条记录。

例如:假设数据库Student内基本情况表的索引字段为学号,满足学号字段值大于等于110001的第1条记录可使用以下程序代码:

Data1.RecordsetType = 0 ’设置记录集类型为Table

Data1.RecordSource = "基本情况" ’打开基本情况表单

Data1.Refresh

Data1.Recordset.Index = "jbqk_no" ’打开名称为jbqk_no的索引

Data1.Recordset.Seek ">=", "110001"

2.5 数据库记录的增、删、改操作

Data控件是浏览表格并编辑表格的好工具,但怎么输入新信息或删除现有记录呢?这需要编写几行代码,否则无法在Data控件上完成数据输入。数据库记录的增、删、改操作需要使用AddNew、Delete、Edit、Update和Refresh方法。它们的语法格式为:

数据控件.记录集.方法名

1.增加记录

AddNew方法在记录集中增加新记录。增加记录的步骤为:

(1)调用AddNew方法。

(2)给各字段赋值。给字段赋值格式为:Recordset.Fields(”字段名”)=值。

(3)调用Update方法,确定所做的添加,将缓冲区内的数据写入数据库。

注意:如果使用AddNew方法添加新的记录,但是没有使用Update方法而移动到其他记录,或者关闭记录集,那么所做的输入将全部丢失,而且没有任何警告。当调用Update方法写入记录后,记录指针自动返回到添加新记录前的位置上,而不显示新记录。为此,可在调用Update方法后,使用MoveLast方法将记录指针再次移到新记录上。

2.删除记录

要从记录集中删除记录的操作分为三步:

(1)定位被删除的记录使之成为当前记录。

(2)调用Delete方法。

(3)移动记录指针。

注意:在使用Delete方法时,当前记录立即删除,不加任何的警告或者提示。删除一条记录后,被数据库所约束的绑定控件仍旧显示该记录的内容。因此,你必须移动记录指针刷新绑定控件,—般采用移至下一记录的处理方法。在移动记录指针后,应该检查Eof属性。

3.编辑记录

15

数据控件自动提供了修改现有记录的能力,当直接改变被数据库所约束的绑定控件的内容后,需单击数据控件对象的任一箭头按钮来改变当前记录,确定所做的修改。也可通过程序代码来修改记录,使用程序代码修改当前记录的步骤为:

(1)调用Edit方法。

(2)给各字段赋值。

(3)调用Update方法,确定所做的修改。

注意:如果要放弃对数据的所有修改,可用Refresh方法,重读数据库,没有调用Update方法,数据的修改没有写入数据库,所以这样的记录会在刷新记录集时丢失。

例9.5 在例9.2的基础上加入“新增”、“删除”、“修改”、“放弃”和“查找”钮,通过对5个按纽的编程建立增、删、改、查功能,如图9.11所示。

图9.11 编程建立增、删、改、查功能

Command1_Click事件的功能根据按钮提示文字调用AddNew方法或Update方法,并且控制具他4个按钮的可用性。当按钮提示为“新增”时调用AddNew方法,并将提示文字改为“确认”,同时使“删除”按钮Command2、“修改”按钮Command3和“查找”按钮Command5不可用,而使“放弃”按钮Command4可用。新增记录后,需再次单击Command1调用Update方法确认添加的记录,再将提示文字再改为“新增”,并使“删除”、“修改”和“查找”按钮可用,而使“放弃”按钮不可用。程序中出现的On Error Resume Next语句是Visual Basic提供的错误捕获语句。该语句表示在程序运行时发生错误,忽略错误行,继续执行下一语句。Private Sub Command1_Click()

On Error Resume Next

Command2.Enabled = Not Command2.Enabled

Command3.Enabled = Not Command3.Enabled

Command4.Enabled = Not Command4.Enabled

Command5.Enabled = Not Command5.Enabled

If Command1.Caption = "新增" Then

Command1.Caption = "确认"

Data1.Recordset.AddNew

Text1.SetFocus

Else

Command1.Caption = "新增"

Data1.Recordset.Update

Data1.Recordset.MoveLast

End If

End Sub

16

命令按钮Command2_Click事件调用方法删除当前记录。当记录集中的记录全部被删除后,再执行Move语句将发生错误,这时由On Error Resume Next语句处理错误。

Private Sub Command2_Click()

On Error Resume Next

Data1.Recordset.Delete

Data1.Recordset.MoveNext

If Data1.Recordset.EOF Then Data1.Recordset.MoveLast

End Sub

命令按钮Command3_Click事件的编程思路与Command1_Click事件类似,根据按钮提示文字调用Edit 方法进入编辑状态或调用Update方法将修改后的数据写入到数据库,并控制其他3个按钮的可用性,代码如下:

Private Sub Command3_Click()

On Error Resume Next

Command1.Enabled = Not Command1.Enabled

Command2.Enabled = Not Command2.Enabled

Command4.Enabled = Not Command4.Enabled

Command5.Enabled = Not Command5.Enabled

If Command3.Caption = "修改" Then

Command3.Caption = "确认"

Data1.Recordset.Edit

Text1.SetFocus

Else

Command3.Caption = "修改"

Data1.Recordset.Update

End If

End Sub

命令按钮Command4_Click事件使用UpdateControls方法放弃操作,代码如下:

Private Sub Command4_Click()

On Error Resume Next

Command1.Caption = "新增"

Command3.Caption = "修改"

Command1.Enabled = True

Command2.Enabled = True

Command3.Enabled = True

Command4.Enabled = False

Command5.Enabled = True

Data1.UpdateControls

Dala1.Recordset.MoveLast

End Sub

命令按钮Command5_Click事件根据输入专业使用SQL语句查找记录,代码如下:

Private Sub Command5_Click()

Dim mzy As String

mzy = InputBox$("请输入专业", "查找窗")

Data1.RecordSource = "Select * From 基本情况Where 专业= '" & mzy & "'"

Data1.Refresh

17

If Data1.Recordset.EOF Then

MsgBox "无此专业!", , "提示"

Data1.RecordSource = "基本情况"

Data1.Refresh

End If

End Sub

上面的代码给出了数据表内数据处理的基本方法。需要注意的是:对于一条新记录或编辑过的记录必须要保证数据的完整性,这可通过Data1_V alidate事件过滤无效记录。例如,下面的代码对学号字段进行测试,如果学号为空则输入无效。在本例中被学号字段所约束的绑定控件是Text1,可用Text1.DataChanged 属性检测Text1控件所对应的当前记录中的字段值的内容是否发生了变化,Action=6表示Update操作(参见表9.5)。此外,使用数据控件对象的任一箭头按钮来改变当前记录,也可确定所做添加的新记录或对已有记录的修改,Action取值1~4分别对应单击其中一个箭头按钮的操作,当单击数据控件的箭头按钮时也触发V alidate事件。

Private Sub Data1_V alidate(Action As Integer, Save As Integer)

If Text1.Text = "" And (Action = 6 Or Text1.DataChanged) Then

MsgBox "数据不完整,必须要有学号!"

Data1.UpdateControls

End If

If Action >= 1 And Action <= 4 Then

Command1.Caption = "新增"

Command3.Caption = "修改"

Command1.Enabled = True

Command2.Enabled = True

Command3.Enabled = True

Command4.Enabled = False

End If

End Sub

关于照片的输入,较简单的方法是通过剪贴板将照片图片复制到Picture1控件。在输入照片时,事先需要用扫描仪将照片扫描到内存或形成图形文件,通过一个图片编辑程序将照片装入剪贴板,然后再从剪贴板复制到Picture1控件。本例通过Picture1_DblClick事件来完成剪贴板到Picture1控件的复制,当移动记录指针时,Picture1控件内的照片存入数据库,此外,也可以使用OLE拖放技术将照片图形文件拖放到Picture1控件或其他图形容器内。

Private Sub Picture1_DblClick()

Picture1.Picture = Clipboard.GetData

End Sub

3、VB中SQL与控件的结合的实现

SQL中使用SELECT语句实现查询,SELECT语句基本上是数据库记录集的定义语句。Data控件的RecordSource属性不—定是数据表名,可以是数据表中的某些行或多个数据表中的数据组合。可以直接在Data控件的RecordSource属性栏中输入SQL,也可在代码中通过SQL语句将选择的记录集赋给数据控件的RecordSource属性,也可赋予对象变量。

例9.8 将例9.5中的查找功能改用SQL语句处理,显示某专业的学生记录。

使用SQL语句查询只要将例9.5中命令按钮Command5_Click事件写为如下代码:

18

Private Sub Command5_Click()

Dim mzy As String

mzy = InputBox$("请输入专业", "查找窗")

Data1.RecordSource = "Select * From 基本情况Where 专业= '" & mzy & "'"

Data1.Refresh

If Data1.Recordset.EOF Then

MsgBox "无此专业!", , "提示"

Data1.RecordSource = "基本情况"

Data1.Refresh

End If

End Sub

程序中“Select *”选择表中所有字段(也可以指定选择部分列);“From基本情况”短语指定数据来源;“Where 专业= '" & mzy & "'"”短语构成查询条件,用于过滤表中的记录;Data1.Refresh方法激活这些变化。此时,若Data1.Recordset.EOF为True,表示记录过滤后无数据,重新打开原来的基本情况表。

注意:代码中的两处Refresh语句不能合用为一句,这是因为在执行了Select命令后,必须激活这些变化,然后才能判断记录集内有无数据。

也可用SQL语句实现模糊查询,命令按钮Command5_Click事件改为如下代码:

Private Sub Command5_Click()

Dim mzy As String

mzy = InputBox$("请输入专业", "查找窗")

Data1.RecordSource = "Select * From 基本情况Where 专业like '*" & mzy & "*'"

Data1.Refresh

If Data1.Recordset.EOF Then

MsgBox "无此专业!", , "提示"

Data1.RecordSource = "基本情况"

Data1.Refresh

End If

End Sub

例9.9 用SQL语句从Student.mdb数据库的两个数据表中选择数据构成记录集,并通过数据控件浏览记录集。

在窗体上放置与例9.2类似的控件,如图9.20所示。Data控件的DatabaseName属性指定数据库Student.mdb,RecordSource属性空缺,各文本框的DataSource=Data1,DataField属性分别设置为学号、姓名、课程、成绩,而照片字段绑定图形框。

本例要求从基本情况中选择学生的学号、姓名、照片,从学生成绩表中选择该学生的课程和成绩来构成记录集,可在Form_ Load事件中使用SQL语句,通过“Where 学生成绩表.学号=基本情况.学号”短语实现两表之间的连接,用Select命令从学生成绩表中选择课程、成绩字段,从基本情况表中选择学号、姓名和照片字段构成记录集:

Private Sub Form_Load()

Data1.RecordSource = "Select 基本情况.学号,基本情况.姓名,基本情况.照片,学生成绩表.课程,学生成

绩表.成绩From 学生成绩表,基本情况Where 学生成绩表.学号=基本情况.

学号"

End Sub

当窗体启动后,数据显示如图9.19所示,数据控件上的箭头按钮可改变记录位置。如果要求显示的记录按一定的顺序排列,可使用ORDER BY子句。

19

20

图9.19 数据显示

注意:当FROM子句列出多个表时,它们出现的顺序并不重要。Select短语中字段的排列决定了所产

生的记录集内每一列数据的排列顺序。为了提高可读性可以重新排序表中的字段。

例9.10 用SQL指令按专业统计Student.mdb数据库中各专业的人数,要求按图9.20所示形式输出。

在窗体上放置一个Data控件和一个网格控件MSFlexGrid1。Data1的DatabaseName属性指定数据库Student.mdb,网格控件的DataSource=Data1。

图9.20 通过数据控件浏览记录集

为了统计各专业的人数,需要对基本情况表内的记录按专业分组。“Group By专业”可将同一专业的记录合并成一条新记录。要记录统计结果,需要构造一个输出字段,此时可使用SQL的统计函数Count()作为输出字段,它按专业分组创建摘要值。若希望按用户要求的标题显示统计摘要值,可用As短语命名一个别名。“按专业统计人数”按钮的指令代码为:

Private Sub Command1_Click()

Data1.RecordSource = "select 专业,count(*) as 人数from 基本情况group by 专业"

Data1.Refresh

End Sub

运行结果如图9.21。

VB SQL编程基础教程

https://www.doczj.com/doc/298809820.html,数据库编程基础教程 罗珊 众所周知,https://www.doczj.com/doc/298809820.html,自身并不具备对数据库进行操作的功能,它对数据库 的处理是通过.NET FrameWork SDK中面向数据库编程的类库和微软的MDAC来实现的。其中,https://www.doczj.com/doc/298809820.html,又是.NET FrameWork SDK中重要的 组成部分。要了解https://www.doczj.com/doc/298809820.html,的数据库编程,首先要明白https://www.doczj.com/doc/298809820.html,的工作原理以及相关的对象、方法、属性。本文将结合具体实例为你简单介绍https://www.doczj.com/doc/298809820.html,数据库访问对象以及https://www.doczj.com/doc/298809820.html,数据库编程基本方法。 一、https://www.doczj.com/doc/298809820.html,数据库访问对象 (一)https://www.doczj.com/doc/298809820.html,简介 https://www.doczj.com/doc/298809820.html,是由微软Microsoft ActiveX Data Object(ADO)升级发展而来的。是在.NET中创建分布式数据共享程序的开发接口。https://www.doczj.com/doc/298809820.html,的数据存取API提供两种数据访问方式,分别用来识别并处理两种类型的数据源,即SQL Server7.0(及更高的版本)和可以通过OLE DB进行访问的其他数据源。为此https://www.doczj.com/doc/298809820.html,中包含了两个类库,System.Data.SQL库可以直接连接到SQL Server的数据,System.Data.ADO库可以用于其他通过OLE DB进行访问的数据源。如Access数据。 (二)https://www.doczj.com/doc/298809820.html,的名称空间

https://www.doczj.com/doc/298809820.html,是围绕System.Data基本名称空间设计,其他名称空间都是从System.Data派生而来。它们使得https://www.doczj.com/doc/298809820.html,不仅访问DataBase中的数据,而且可以访问支持OLE DB的数据源。 当我们讨论https://www.doczj.com/doc/298809820.html,时,实际讨论的是System.Data和System.Data.OleDb 名称空间。这两个空间的所有类几乎都可以支持所有类型的数据源中的数据。这里我们讨论与后文实例有关的类。即OleDbconnection、OleDbDataAdapter、DataSet和DataView。 上面列举的类中没有OleDb前缀的,派生自System.Data空间,有此前缀的派生自System.Data.OleDb空间。在使用中,如果要引用OleDb前缀的类,必须导入System.Data.OleDb名称空间。语法如下: Imports System.Data.OleDb 使用没有此前缀的类必须导入System.Data名称空间。语法如下:Imports System.Data 1.OleDbConnection类 OleDbConnection类提供了一个数据源连接。这个类的构造函数接受一个可选参数,称为连接字符串。 (1)连接字符串: 连接字符串本身由下表中列出的参数构成。(图) 我们来看一下如何在连接字符串上使用参数来初始化一个连接对象。

vb连接ACCESS数据库实例

vb连接ACCESS数据库实例 下面给你一个用ADO的代码链接的实例:(ACCESS 2003) 首先在工程中点击【工程】-【引用】,在打开的对话框选择Microsoft AxtiveX Data Objects 2.8 Library 勾选,然后定义二个对象: Dim conn As New ADODB.Connection, rs As New ADODB.Recordset 其中conn是数据库链接对象,rs是数据记录集对象 那么,下面就是利用SQL语句链接数据库了: conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\library\1.mdb;Jet OLEDB:Database Password=" strSQL = "SELECT * FROM 数据库中的表" rs.Open strSQL, conn, 3, 3 至此数据库已经链接成功,并且已经加载了记录集,下面你就可以进行数据操作了,注意,在数据库操作完成后,千万别忘记关闭记录集和数据库链接对象: rs.Close conn.Close '首先,工具->引用->选中Microsoft ActiveX Data Objects 2.X Library '必须选中,否则下面代码不会起作用!(以下链接数据库之方式,不需要使用ADODB控件,仅需代码即可) Public Conn As New ADODB.Connection Public Rs As New ADODB.Recordset Public Cnt As Integer '这个Cnt是用来表示数据库数据总量的,对链接过程无关 '连接数据库的代码段 Conn.CursorLocation = adUseClient '以Conn为链接名建立链接,这里是设置数据游标(客户端数据游标),即设定读取数据库数据之方式(一行一行地读) Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & App.Path & "\test.mdb" '自己改动一下上面的路径和文件名即可,其他的代码你不理解照粘贴无妨 If Rs.State <> adStateClosed Then Rs.Close Rs.Open "SELECT 铺名, 上月读数, 本月读数, 实用度数, 铺位数, 首层面积, 非经营层 面积, 欠费明细, 欠费金额FROM data WHERE 首层面积is not null and 非经营层面积 is not null;", Conn, adOpenKeyset, adLockPessimistic Cnt = Rs.RecordCount '关闭数据库链接(一般放到子过程结束处,关闭数据库链接) Rs.Close Conn.Close Set Rs = Nothing

VB使用ADODB操作数据库

VB使用ADODB操作数据库 Dim conn As New ADODB.Connection ’创建一个 Connection 实例,在这里使用New等于将Dim和Set合并为一段代码执行 Dim rs As ADODB.Recordset ’创建一个 Recordset 实例,不使用New 是因为,经常需要重复使用Set,因此没必要在这里使用 Dim CnStr As String, Sql As String ’创建两个字符串变量分别存放两个集合的SQL语句代码段 1、装载数据库(不属于Recordset集合) ============= Dim FileNamw$, DbIp$, DbName$, DbUser$, DbPw$ ’以上5个字符串变量分别表示文件路径和文件名、数据库地址、数据库名、数据操作员用户名、操作员密码 FileName = App.Path & "\’数据库名’" DbIp = "数据库地址" DbName = "数据库名" DbUser = "数据操作员用户名" DbPw = "操作员密码" ’以上变量根据数据库类型的不同而不同,有可能只需要1至两个变量 ’1)连接Access数据库: ’------------------- CnStr = "PROVIDER=microsoft.jet.oledb.3.51;persist security info =false;data source=" & FileNa me & ";Jet OLEDB:Database Password=" & DbPw ’2)连接Oracle数据库: ’------------------- CnStr = "PROVIDER=MSDAORA.1;Password=" & DbPw & ";User ID=" & DbUser & ";Data S ource=" & FileName & ";Persist Security Info=True" ’其中: ’PASSWORD:密码 ’User ID: 用户号 ’Data Source: 数据库名 ’Persist Security Info: ’Provider: ’3)连接VF的DBF库: ’---------------- CnStr = "PROVIDER=MSDASQL.1;Persist Security Info=False;Driver={Microsoft Visual FoxPr

VB+数据库编程之+ADO+连接数据库实例

VB 数据库编程之 ADO 连接数据库实例 这里先说说ADO的ACCESS数据库连接吧,两种。 1.ADO控件连接 “工程”菜单→“部件...”:Microsoft ADO Data Control 6.0 (SP6) (OLEDB) 并将Adodc数据控件绘入窗体。 右击Adodc数据控件→属性→使用连接字符串→生成→Microsoft Jet 4.0 OLE DB Provider→数据位置→找到要连接的ACCESS数据库文件…… Adodc数据控件的RecordSource属性为“2 - adcmdTable”和你要连接的表名。 控件的引用实例如下: '组合框(Combo)控件列表用某字段数据记录填充范例 '在窗体Load事件或Combo的相关事件中写入 '循环1到记录总数 For i = 1 To Adodc1.Recordset.RecordCount '如果不在记录集结尾则 If Not Adodc1.Recordset.EOF Then '组合框增加一行:“姓名”字段的值 Combo1.AddItem Adodc1.Recordset.Fields("姓名").Value '记录指针向后一个 Adodc1.Recordset.Movenext End If Next i 2.ADO代码连接 通用声明 Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim cmd As New https://www.doczj.com/doc/298809820.html,mand Private Sub Form_Load() '实例化Connection对象 Set cn = New ADODB.Connection cn.CursorLocation = adUseClient cn.Open "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & App.Path & "\personnel.mdb;" 'Recordset对象 Set rs = New ADODB.Recordset rs.Open "职工信息", cn, adOpenDynamic, adLockOptimistic

(完整版)vb连接access数据库及数据读写操作

ACCESS数据库和VB的连接 Edited by Ryan 2013 1、建立Access数据库 2、启动VB,建立标准EXE 图1 3、添加ActiveX控件 鼠标指向任意VB控件,单击右键,选择“部件(O)”,出现图3所示界面 图2

图3 选择部件“Microsoft ADO Data Control 6.0 (OLEDB)”,出现如图4所示控件 图4

4、添加控件Adodc 图5 4、在控件Adodc上添加数据源 鼠标指向控件Adodc1,单击右键,选择“ADODC 属性”,弹出如图7所示界面 图6

图7 单击“生成(U). . .”,弹出如图8所示界面 图8 选择“Microsoft Jet 4.0 OLE DB Provider”,单击“下一步(N) >>”,弹出如图9所示界面

图9 单击“. . .”,添加数据源(第一步所建Access 数据库),如图10所示 图10 单击“测试连接(T)”,出现提示框,如图11所示 图11 之后点击“确定”,退回到如图12所示界面

图12 单击“记录源”,弹出如图13所示界面 图13 在“命令类型”下,选择“1 - adCmdText”,在“命令文本(SQL)”下,输入“Select * from test1”,最后单击“应用”,“确定”即可 之后,进入程序书写部分 程序部分需要注意接头形式及简单例子如下: Private Sub Command1_Click() ‘VB按钮控件 Dim mydb As New ADODB.Connection ‘定义新的数据库连接 mydb.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\read database\test1\test1.mdb" ‘数据库绝对路径 Dim rs As New ADODB.Recordset ‘定义数据库的一个对象 mydb.Open ‘打开数据库 rs.Open "select * from test1", mydb, 3, 3 ‘打开数据库中的表test1

第七讲 VB访问SQL Server2000数据库的方法

第七讲 VB访问SQL Server2000数据库的方法 一、ODBC数据源设置 1、ODBC简介 ODBC Open DatabaseConnectivity开放式数据库互连)是Mircosoft公司有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API Application应用程序编程接口)。这些API利用SQL来完成大部分的任务。ODBC本身提供对SQL语言的支持,用户可以直接将SQL送给ODBC一个基于ODBC的应用程序对数据库操作不依赖于任何DBMS,不直接与DBMS打交道,所有数据库操作由ODBC驱动程序完成。 2、ODBC数据源的创建(建立ODBC数据源) 前台系统Windows 2000 professional系统,后台Windows 2000 Server系统。以Windows 2000 professional为例: (1)单击“开始”/设置/控制面板/管理工具/数据源ODBC,打开“ODBC数据源管理器”,选择“用户DSN or 系统DSN”,单击【添加】按钮,打开“创建用户数据源”对话框,选择“SQL Server”,单击【完成】按钮。

(2)打开“创建新的数据源到SQL Server”窗口: ○1你想用什么名称命名数据源:在名称框中输入xn。 ○2服务器:为网络中数据库服务器(默认是本地服务器Local,可选远程服务器IP)。 ○3登陆ID:xn密码:xn(取决于安装SQL时所指定的密码)。特别注意此处为确保数据库安全起见,数据库管理员可以给用户指定一个用户名及密码。这里为简便起见使用管理员用户名及密码。 ○4更改数据库为:aa(所要使用的数据库)。

VB数据库操作实例

VB数据库操作实例 工具/原料 VB数据库操作对很多初学者朋友感到比较吃力,目前教材中的实例对数据库操作都比较单一,很多朋友提议我做一个包括浏览、添加、修改、删除功能的数据库操作实例,下面这个实例就是一个这样的数据库操作实例。 步骤/方法 1. 1 《书库管理系统》是一个最简单的数据库操作实例,它包括浏览、添加、修改、删除功能的数据库操作,使用数据链接控件Adodc链接数据库、数据显示控件MSHFlexGrid显示数据库中的记录。 在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,我们必须点击菜单中的【工程】-【部件】,在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了。 其中Adodc控件的ConnectionString属性值是:"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=家庭书架.mdb;Persist Security Info=False",它设置链接了“家庭书架.mdb”这个Access数据库,RecordSourc属性值是:"select 图书登记表.ID,图书登记表.名称,图书登记表.

书号,图书登记表.作者,图书登记表.出版社,图书登记表.出借状态,出借记录.借书人,出借记录.电话,出借记录.地址,图书登记表.备注,图书登记表.出借记录from 图书登记表,出借记录where 图书登记表.ID=出借记录.zhuID ORDER BY 图书登记表.ID",因为在“家庭书架.mdb”数据库中包含"图书登记表"和"出借记录"二个数据表,这是多表链接的典型的SQL语句。Adodc 的这二个属性值在VB的属性窗口进行编辑,你可以将上述属性值直接输入到相应的属性中,设置Visible的值为False,目的是在运行中不显示这个控件,其他属性默认值即可。 MSHFlexGrid控件的名称我们修改为MS1,它的属性设置稍稍比较麻烦:首先将它的DataSource属性在属性窗口设置为"Adodc1"; 然后在对象窗口右击控件,在下拉菜单中点击【属性】,在“通用”标签中修改行为3,修改列为11,修改固定行为0,修改固定列为0,如果数据链接没有问题,在属性的“带区”标签中可以看到列标题和列名称已经设置了,其他属性页的属性可以容许默认值,中点击【确定】即可。 另外在属性窗口设置MSHFlexGrid控件的BackColorBkg属性为&H00FFE0E0&,这个属性是控件底色的设置,然后设置BackColorFixed属性为&H00C0FFFF&,这个属性是控件数据显示标题的底色。其他默认值即可。 最后放置三个按钮,一个标签,三个Frame控件,在Frame1、Frame2、Frame3控件中分别放置9个标签(数组),8个文本框,一个下拉选择框,一个按钮,在Frame2、Frame3控件中分别放置一个标签,设置这个标签的Visible值为False,其他设置参考下图:设置和调整控件如上图后,设置数据库,在

VB数据库编程实用源码

使用ADO编程模型需添加ADO对象类库的“引用”----“Microsoft ActiveX Data Objects 2.x Library” ADO之VB数据库操作主要包括读、写、修改及删除等操作,不论是进行什么数据库操作都必须首先连接到数据库。 一、连接到数据库 1、连接到SQL数据库: 通过ADO的Connection对象可实现VB与SQL数据库的连接。一般方法如下: Dim cnn As New ADODB.Connection …创建Connection对象cnn,关键字new用于创建新对象 cnn.ConnectionString = "Provider=SQLOLEDB.1;Password=密码;User ID=用户名;Initial Catalog=SQL数据库文件;Data Source= localhost;" '指定提供者,设置数据源 cnn.Open …打开到数据库的连接 …….. cnn.Close …关闭到数据库的连接 或者: Dim cnn As New ADODB.Connection …创建Connection对象cnn,关键字new用于创建新对象 cnn.Open "Provider=SQLOLEDB.1;Password=密码;User ID=用户名;Initial Catalog=SQL数据库文件;Data Source= localhost;" …打开到数据库的连接 …….. cnn.Close …关闭到数据库的连接 2、连接到ACCESS数据库: 通过ADO的Connection对象可实现VB与ACCESS数据库的连接。一般方法如下: Dim cnn As New ADODB.Connection …创建Connection对象cnn,关键字new用于创建新对象 cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ACCESS数据库文件.MDB" '指定提供者,设置数据源 cnn.Open …打开到数据库的连接 …….. cnn.Close …关闭到数据库的连接 或者: Dim cnn As New ADODB.Connection …创建Connection对象cnn,关键字new用于创建新对象 cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ACCESS数据库文 件.MDB" …打开到数据库的连接

VB使用ADODB操作数据库的常用方法

VB使用ADODB操作数据库的常用方法 ADO常用方法 下面是我所掌握的使用ADO对数据库操作的一些常用方法,主要是提供给初学者作为参考,有不对的地方请指正。如有补充不胜荣幸 准备工作 ======== Dim conn As New ADODB.Connection '创建一个 Connection 实例,在这里使用New等 于将Dim和Set合并为一段代码执行 Dim rs As ADODB.Recordset '创建一个 Recordset 实例,不使用New 是因为,经常 需要重复使用Set,因此没必要在这里使用 Dim CnStr As String, Sql As String'创建两个字符串变量分别存放两个集合的SQL语句代码段 1、装载数据库(不属于Recordset集合) ============= Dim FileNamw$, DbIp$, DbName$, DbUser$, DbPw$ '以上5个字符串变量分别表示文件路径和文件名、数据库地址、数据库名、数据操作员用户名、操作员密码 FileName = App.Path & "\'数据库名'" DbIp = "数据库地址" DbName = "数据库名" DbUser = "数据操作员用户名" DbPw = "操作员密码" '以上变量根据数据库类型的不同而不同,有可能只需要1至两个变量 '1)连接Access数据库: '------------------- CnStr = "PROVIDER=microsoft.jet.oledb.3.51;persist security info =false;data so urce=" & FileName & ";Jet OLEDB:Database Password=" & DbPw '2)连接Oracle数据库:

vb连接access数据库常用的方法两种示例

这里以链接access数据库为例。 第一部分就是通过语句链接,第二部分就是通过控件链接一、 通过语句链接数据库,然后把相应得数据赋值给某个文本框就行了。 1、首先定义几个全局变量 Dimcn As NewADODB、Connection Dim rs As New ADODB、Recordset Dim constrAsString 2、给这些变量赋值,方便链接数据库 constr = "Provider=Microsoft、Jet、OLEDB、4、0;"&"DataSource=D:\EffectSolution\科学效应数据库、mdb" 红色部分写您自己得数据库路径。 3、打开数据库 cn、openconstr 打开表 rs、open“select * from 效应表whereid=5“,cn 取字符串并赋值给相应得文本 Text1、text=rs、fields(“效应与现象名称”) Text2、text=rs、fields(“文字解说”) 关闭表 rs、close 关闭数据库 cn、close 注意,最后两步骤一定要有,不然下次打开数据库得时候会提

示出错得,这样得话,在窗口上建立两个文本框就够了。 但就是,在此之前还有一步一定要做, 点"工程"-"引用"-找到"Microsoft ActiveX Data Object2、6 ",如图所 示:

显示得结果如下图所示: 通过与效应表对比发现显示正确。 总体代码如下: Private Sub Form_Load() Dim cn As New ADODB、Connection Dim rs As NewADODB、Recordset Dim constrAsString constr="Provider=Microsoft、Jet、OLEDB、4、0;" &_ "Data Source=D:\EffectSolution\科学效应数据库、mdb" '空格加短下划线表示续行 cn、open constr rs、open "select*from 效应表where id =5", cn Text1、Text = rs、fields("效应与现象名称") Text2、Text = rs、fields("文字解说")

VB代码动态建立数据表

https://www.doczj.com/doc/298809820.html,mandText = sql command.Execute Else MsgBox "你必须输入一个名字" End If Private Sub Form_Load() Dim str As String str = App.Path If Right(str, 1) <>"\" Then str = str + "\" End If pstr = "Provider=Microsoft.Jet.OLEDB.3.51;" pstr = pstr & "Persist Security Info=False;" pstr = pstr & "Data Source=" & str & "wage.mdb" conn.Open pstr rs.CursorLocation = adUseClient rs.Open "工资表", conn, adOpenKeyset, adLockPessimistic Set DataGrid1.DataSource = rs End Sub 当然,我们还可以把程序设计得更好,比如:让用户先在窗口中任意选择所需的字段和一些条件,然后再组合生成一个新表。但无论如何,这种操作只能在从原表的基础上产生一个新表,不能产生一个数据库文件,并且新表和原表放在同一个数据库中。 4: 建立新的数据库和表 前面讲到的方法有一定的局限性,它不能让用户产生自己所需的数据库文件,即使能产生数据表也只能在原有表的基础上生成。我们现在的目的就是让用户利用ADO对象在程序运行过程中创建数据库和表,就好象他利用Access来建立数据库和表一样。为此,我们应该引用对象库"Microsoft ActiveX Data Objects 2.5 Library"和"Microsoft ADO Ext 2.1. For DDL Security" 我们不妨用一个实例来说明具体的操作过程和方法。我们的实例要达到目的是:在程序运行过程中建立一个数据库,数据库的名称由用户输入。然后在数据库中建立一个名为"MyTable"的数据表,数据表中有三个字段,它们分别是:"编号"(整数型)、"姓名"(字符型,宽度为8)、"住址" (字符型,宽度为50),接着在数据表中添加一条记录,最后在DataGrid控件中把记录的内容显示出来,并且让用户在DataGrid控件中任意修改、添加记录。

VB数据库操作实例

VB数据库操作实例 2008年02月22日 05:49 VB数据库操作对很多初学者朋友感到比较吃力,目前教材中的实例对数据库操作都比较单一,很多朋友提议我做一个包括浏览、添加、修改、删除功能的数据库操作实例,下面这个实例就是一个这样的数据库操作实例。 《书库管理系统》是一个最简单的数据库操作实例,它包括浏览、添加、修改、删除功能的数据库操作,使用数据链接控件Adodc链接数据库、数据显示控件MSHFlexGrid显示数据库中的记录。 在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,我们必须点击菜单中的【工程】-【部件】,在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了。 其中Adodc控件的ConnectionString属性值是: "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=家庭书架.mdb;Persist Security Info=False",它设置链接了“家庭书架.mdb”这个Access数据库,RecordSourc属性值是:"select 图书登记表.ID,图书登记表.名称,图书登记表.书号,图书登记表.作者,图书登记表.出版社,图书登记表.出借状态,出借记录.借书人,出借记录.电话,出借记录.地址,图书登记表.备注,图书登记表.出借记录 from 图书登记表,出借记录 where 图书登记表.ID=出借记录.zhuID ORDER BY 图书登记表.ID",因为在“家庭书架.mdb”数据库中包含"图书登记表"和"出借记录"二个数据表,这是多表链接的典型的SQL语句。Adodc的这二个属性值在VB的属性窗口进行编辑,你可以将上述属性值直接输入到相应的属性中,设置Visible的值为False,目的是在运行中不显示这个控件,其他属性默认值即可。 MSHFlexGrid控件的名称我们修改为MS1,它的属性设置稍稍比较麻烦:首先将它的DataSource属性在属性窗口设置为"Adodc1"; 然后在对象窗口右击控件,在下拉菜单中点击【属性】,在“通用”标签中修改行为3,修改列为11,修改固定行为0,修改固定列为0,如果数据链接没有问题,在属性的“带区”标签中可以看到列标题和列名称已经设置了,其他属性页的属性可以容许默认值,中点击【确定】即可。 另外在属性窗口设置MSHFlexGrid控件的BackColorBkg属性为&H00FFE0E0&,这个属性是控件底色的设置,然后设置BackColorFixed属性为&H00C0FFFF&,这个属性是控件数据显示标题的底色。其他默认值即可。 最后放置三个按钮,一个标签,三个Frame控件,在Frame1、Frame2、Frame3控件中分别放置9个标签(数组),8个文本框,一个下拉选择框,一个按钮,在Frame2、Frame3控件中分别放置一个标签,设置这个标签的Visible值为False,其他设置参考下图:

vb数据库操作实例

第一部分:vb数据库操作实例 vb神童教程(续)--编写一个小型的信息管理系统 vb神童教程(续)--准备数据库 vb神童教程(续)--设计系统的界面及对象的属性 vb神童教程(续)--为对象添加事件代码 vb神童教程(续)--编写一个小型的信息管理系统 受委托为编程入门网做一个简单的vb操作数据库的实例,来演示一下如何用vb 向数据库中添加、修改、删除记录这些操作。我觉得自己是比较菜的,几年来别人都在进步,只有我还在原地踏步。不过没有办法,我们这一圈人里现在只有我机器上还有vb6,勉为其难,只有尝试一下了。如果我写的这点幼稚的东西能为想要了解vb数据库操作的朋友提供哪怕是一丁点儿的参考和帮助,将是我最为高兴的事情,同时也希望高手不要见笑。 我做的这个实例名为“编程入门网网址管理系统”,算是一个小型的信息管理系统吧。该系统后台使用的是Access数据库,程序中使用ADO代码链接的形式连接Access。该系统具有向数据库中添加、修改、删除记录的功能,进行某项操作后能够实时刷新显示数据。并在程序中加了相应的代码对输入的数据进行合法性校验,以避免输入错误的数据造成程序运行不正常,程序运行时各个操作及退出系统时均有友好的提示框请用户确认。所有代码均在Windows 2003+Vusual Basic 6.0环境下调试通过。 系统运行时如下图:

vb神童教程(续)--准备数据库 我用的是Access 2003,因为需要讲解的仅仅是数据的添加、修改及删除,因此单数据库、单表就够了。如果以后您要编写更复杂一些的信息管理系统而涉及到多表操作,则您还需要补充一些关系数据库方面的知识,比如实体、一对一联系、一对多联系等等;此外,对sql语言也需要有所了解。具体您可以参考:数据库基础知识ABC。 首先,在“我的电脑”的e盘新建一个名为vb文件夹,先打开Access,新建一个名为Access_db的数据库(Access数据库文件的扩展名是.mdb),保存到刚才建立的文件夹中,则以后在程序中调用数据源的位置为 E:\vb\Access_db.mdb。 然后在Access_db.mdb中建立一个名为wzdz的表(wzdz是“网站地址”的首字母缩写), 然后在wzdz表中添加网站名称、网站地址及网站描述三个字段,三个字段的属性是相同的,如下: ▲数据类型:文本。 ▲字段大小:50 ▲有效性规则:无。 ▲必填字段:否 ▲允许空字符串:否 ▲索引:无 “编号”这个字段使用的是Access的自动编号,并将其作为主键。也就是说,您在表中设置以上三个字段即可,设置完毕保存表时,按Access的提示添加主键,Access会自动为您搞定。具体操作您可以参考:vb神童教程(续)--vb连接Access数据库实例 这样在建立了数据库及表结构之后,即使是调用没有记录的空库,系统也可以无差错运行,可以在运行时通过“添加记录”按钮向数据库中添加记录。不过由于数据库是空的,系统第一次运行时数据显示控件没有数据可显示,显得空荡荡的,不太美观哦。为了方便起见,我们在Access中给wzdz表中预先添加两条初始记录:

vb6.0连接远程sql数据库的模块以及使用实例

Vb6.0连接sql数据库的模块以及使用实例 打开VB6.0,新建工程SQL_data,新建一个EXE,并添加一个模块。如图 一:添加引用和部件(如下两图)蓝色的两个,是要选中打勾的。 注意,一个是“引用”,一个是“部件”。

二:添加一个模块Data_Sql,并把图下面的复制粘贴到模块中。 '连接SQL的模块 Public conn As ADODB.Connection Public rs As ADODB.Recordset Public addFlag As Boolean '声明部分 Public Function OpenCn(ByVal Cip As String, ByVal users As String, ByVal pw As String) As Boolean '连接模块填写数据库等信息 Dim mag As String

On Error GoTo strerrmag Set conn = New ADODB.Connection conn.ConnectionTimeout = 25 conn.Provider = "sqloledb" conn.Properties("data source").Value = Cip '服务器的名字 conn.Properties("initial catalog").Value = "pubs" '库名 'conn.Properties("integrated security").Value = "SSPI" '登陆类型 conn.Properties("user id").Value = users 'SQL库名 conn.Properties("password").Value = pw '密码 'sql = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;password=;Initial Catalog=pubs;Data Source=127.0.0.1" '如果不用这个模块也行可以,这一句便是常用的引擎。 'conn.ConnectionString = sql conn.Open OpenCn = True If conn.State = 1 Then addFlag = True Exit Function strerrmag: mag = "Data can't connect" Call MsgBox(mag, vbOKOnly, "Error:Data connect") addFlag = False Exit Function '连接错误消息 End Function '关闭数据库,释放连接 Public Sub cloCn() On Error Resume Next If conn.State <> adStateClosed Then conn.Close Set conn = Nothing End Sub Public Function openRs(ByVal strsql As String) As Boolean '连接数据库记录集 Dim mag As String Dim rpy As Boolean On Error GoTo strerrmag Set rs = New ADODB.Recordset If addFlag = False Then rpy = True With rs .ActiveConnection = conn .CursorLocation = adUseClient .CursorType = adOpenKeyset .LockType = adLockOptimistic .Open strsql End With addFlag = True openRs = True

Vb对excel操作的实例

Vb对excel操作的实例 最近,由于工作关系,我用vb6.0做了一个计算成绩的软件,由于我不会数据库技术,同行对excel应用又比较普遍,所以就用vb6.0操作excel完成了成绩统计的任务。 先说说窗体,很简单,只运用了菜单,由此来调用程序代码。截图如下: 窗体命名为excel操作,共五个一级菜单。 创建表册用来制作所用表格。 计算成绩用来算成绩。

模拟运算用来测试软件,设置了两个子菜单,一个填随机生成的数据。有了数据就可以计算成绩了,看看效果如何。 测试完了就可以清空数据了,清空成绩册中的基础数据以后再计算一次成绩就基本可以使表册恢复原样了。其实,我这是多此一举,回头一想,只需要重新创建所用表册就行了。 还画蛇添足了俩菜单:计算器和退出。 代码也贴出来共享一下。 创建表册:一年级: Private Sub ynjkb_Click() Call 建空表(10) Call 工作表命名(1) Call 成绩册(1) Unload excel操作 End Sub

创建表册:二年级: Private Sub enjkb_Click() Call 建空表(10) Call 工作表命名(2) Call 成绩册(2) Unload excel操作 End Sub 三至六年级略了吧。 创建表册:学校总评: Private Sub xxzp_Click() nj(1) = "一年级": nj(2) = "二年级": nj(3) = "三年级": nj(4) = "四年级": nj(5) = "五年级": nj(6) = "六年级" Call 建空表(2) '建立积分表 Sheets(1).Name = "学校积分" Sheets(2).Name = "积分" Sheets("学校积分").Select Range("a1:i1").Merge [a1] = "学校积分统计表": [a2] = "学校": [a3] = "南村小学": [a4] = "东风小学": [a5] = "兴中小学": [a6] = "尧场小学" nj(1) = "一年级": nj(2) = "二年级": nj(3) = "三年级": nj(4) = "四年级": nj(5) = "五年级": nj(6) = "六年级"

用VB访问SQL SERVER数据库技术详解

用VB访问SQL Server数据库技术详解 文讨论了Visual Basic应用程序访问SQL Server数据库的几种常用的方法,分别说明了每种方法的内部机理并给出了每种方法的一个简单的实例,最后比较了每种方法性能和优缺点。 一、引言 SQL Server是微软推出的中小型网络数据库系统,是目前最常用的数据库系统之一。随着SQL Server网络数据库应用程序日益增多,这种Web数据库应用系统的正常运行一般依赖于已存在的用户数据库。创建维护数据库的工作可用SQL Server提供的SQL Enterprise Manager工具来进行,如能提供一种定制的数据库管理工具,通过管理应用程序来管理数据库及其设备,对用户来说无疑是最理想的。 Visual Basic作为一种面向对象的可视化编程工具,具有简单易学,灵活方便和易于扩充的特点。而且Microsoft为其提供了与SQL Server通信的API 函数集及工具集,因此它越来越多地用作大型公司数据和客户机—服务器应用程序的前端,与后端的Microsoft SQL Server相结合,VB能够提供一个高性能的客户机—服务器方案。 二、VB访问SQL Server数据的常用方法 使用Visual Basic作为前端开发语言,与SQL Server接口有几种常用的方法,即: ①数据访问对象/Jet ②为ODBC API编程 ③使用SQL Server的Visual Basic库(VBSQL)为DB库的API编程 ④RDO远程数据对象(RemoteData Objects) ⑤ADO数据对象(Active Data Objects) 1、数据访问对象/Jet VB支持Data Access Objects(DAOs)的子集。DAO的方法虽然不是性能最好的管理客户机—服务器之间的对话方式,但它的确有许多优点。DAO/Jet是为了实现从VB访问Access数据库而开发的程序接口对象。使用DAOs访问SQL Server 的过程如下:应用程序准备好语句并送至Jet,Jet引擎(MASJT200.DLL)优化查询,载入驱动程序管理器并与之通讯,驱动程序管理器(ODBC.DLL)通过调用驱动器(SQLSRVR.DLL)的函数,实现连接到数据源,翻译并向SQL Server提交SQL 语句且返回结果。下面是一个用DAOs访问SQL Server的VB实例。

vb连接access数据库常用的方法两种示例之欧阳歌谷创作

这里以链接access数据库为例。 欧阳歌谷(2021.02.01) 第一部分是通过语句链接,第二部分是通过控件链接 一、 通过语句链接数据库,然后把相应的数据赋值给某个文本框就行了。 1.首先定义几个全局变量 Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim constr As String 2.给这些变量赋值,方便链接数据库 constr = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=D:\EffectSolution\科学效应数据库.mdb" 红色部分写你自己的数据库路径。 3.打开数据库 cn.open constr 打开表 rs.open “select * from 效应表where id=5“,cn 取字符串并赋值给相应的文本 Text1.text=rs.fields(“效应和现象名称”) Text2.text=rs.fields(“文字解说”) 关闭表 rs.close 关闭数据库 cn.close 注意,最后两步骤一定要有,不然下次打开数据库的时候会提示出错的,这样的话,在窗口上建立两个文本框就够了。 但是,在此之前还有一步一定要做,

点"工程""引用"找到"Microsoft ActiveX Data Object 2.6 ",如图所示: 显示的结果如下图所示: 通过与效应表对比发现显示正确。 总体代码如下:

Private Sub Form_Load() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim constr As String constr = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=D:\EffectSolution\科学效应数据库.mdb" '空格加短下划线表示续行 cn.open constr rs.open "select * from 效应表 where id =5", cn Text1.Text = rs.fields("效应和现象名称") Text2.Text = rs.fields("文字解说") rs.Close cn.Close End Sub 二、 通过ado控件链接数据库,然后通过datagrid控件显示数据库中的相关表。 过程示例: 1.添加部件ado控件和datagrid控件,如图所示: 这样工具栏里面会出现这样两个图标(最下面): 2.把这两个控件添加到你的form1里面,这个不用演示吧 3.右击你添加的adodc1控件,选最后一个

相关主题
文本预览
相关文档 最新文档