VB数据库应用基础.docx

上传人:b****7 文档编号:9497288 上传时间:2023-02-05 格式:DOCX 页数:40 大小:352.14KB
下载 相关 举报
VB数据库应用基础.docx_第1页
第1页 / 共40页
VB数据库应用基础.docx_第2页
第2页 / 共40页
VB数据库应用基础.docx_第3页
第3页 / 共40页
VB数据库应用基础.docx_第4页
第4页 / 共40页
VB数据库应用基础.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

VB数据库应用基础.docx

《VB数据库应用基础.docx》由会员分享,可在线阅读,更多相关《VB数据库应用基础.docx(40页珍藏版)》请在冰豆网上搜索。

VB数据库应用基础.docx

VB数据库应用基础

第14章数据库应用基础

本章要点:

●数据库的建立

●访问数据库

●SQL语句

●数据库记录的操作

14.1创建数据库

14.1.1关系型数据库的基本结构

在讨论关系型数据库的结构之前,先来看一个记载学生基本信息的表格。

表14.1学生基本信息表

表14.1是一个由若干行和列组成的二维表格,一个关系型数据库由多个这样的二维表格组成。

关系型数据库使用以下术语描述数据库中的信息:

记录(Record):

二维表中的每一行为一条记录(表14.1中的第一行“学号”、“姓名”等列标题除外)。

一个表中不允许含有完全相同的两条记录。

字段(Field):

二维表中的每一列为一个字段。

列标题为字段名(必须惟一)。

数据表(Table):

二维表中的所有记录构成数据表,简称为表。

数据库(Database):

多个相互关联但不同名的数据表构成数据库。

目前较流行的桌面数据库MSAccess,大型网络数据库MSSQLServer、Oracle和Sybase等都属于关系型数据库。

本章以MSAccess数据库为例讨论VB的数据库应用技术。

14.1.2在VB环境中创建Access数据库

1.启动数据管理器

在VB环境中执行【外接程序】菜单中的【可视化数据管理器】命令,打开可视化数据管理器(VisData),如图14.1所示。

2.建立数据库

在VisData窗口执行菜单命令【文件】|【新建】|MicrosoftAccessVer7.0MDB,打开【选择要创建的MicrosoftAccess数据库】对话框,在对话框中输入数据库文件名(如“Student.mdb”)并保存后,VisData窗口的工作区将出现如图14.2所示的【数据库窗口】(此时为空库,无表)。

图14.1可视化数据管理器

图14.2数据库窗口

3.建立数据表

右击【数据库窗口】空白处,在弹出菜单中选择【新建表】菜单项,打开如图14.3所示的【表结构】对话框,输入表名称(如“基本情况”)后,单击【添加字段】按钮,打开如图14.4所示的【添加字段】对话框,输入字段名称,设置类型和大小(仅Text类型可设置大小)。

添加了所有字段后,单击图14.3中的【生成表】按钮即可建立数据表。

在一个库中可建立多个不同名称的表。

图14.3表结构

图14.4添加字段

4.添加索引

为数据表添加索引可以提高数据检索的速度。

在图14.3所示的【表结构】对话框中单击【添加索引】按钮,打开如图14.5所示的【添加索引到基本情况】对话框。

在【名称】文本框中输入索引名称(如“sNo”),在【可用字段】列表框中选择需要为其设置索引的字段(如“学号”),并设置是否为主索引或惟一索引(无重复)。

5.输入记录

双击【数据库窗口】中数据表名称左侧的图标,打开如图14.6所示的记录操作窗口,可以对记录进行增、删、修改等操作。

图14.5添加索引

图14.6记录操作

14.1.3用MSAccess建立数据库

下面以MSAccess2000为例简介数据库的创建。

1.建立数据库

启动MSAccess,在对话框中选定【空Access数据库】单选按钮。

单击【确定】按钮后,在【文件新建数据库】对话框中选择保存位置并输入文件名,然后单击【创建】按钮。

2.建立数据表

新建一个空白数据库后,在MSAccess主窗口中将会出现如图14.9所示的数据库窗口。

在此窗口中可以管理Access数据库的各组成部分。

图14.9创建数据表

在数据库窗口中双击【使用设计器创建表】图标,打开如图14.10所示的表设计器窗口【表1:

表】,输入字段名称,设置字段的数据类型、字段大小及其他属性。

图14.10设计表的结构

若需设置主键,可选定拟设为主键的字段,然后单击MSAccess主窗口工具栏中的【主键】图标,此时,被设为主键的字段名左侧会出现钥匙状的图标,同时,【字段属性】中的【索引】属性将自动设为【有(无重复)】。

全部字段设置结束后,关闭表设计器窗口,系统将显示如图14.11所示的对话框,可根据提示保存新建的数据表并设置表的名称。

图14.11保存数据表

若需修改数据表的结构定义(如添加、删除或修改字段),可在如图14.12所示的数据库窗口选定数据表(如“基本信息”),然后单击该窗口工具栏中的【设计】按钮,打开前面图14.10所示的表设计器窗口进行操作。

图14.12修改表结构

如果要添加一个新表,可再次双击【使用设计器创建表】图标,或者单击工具栏【新建】按钮,在如图14.13所示的【新建表】对话框中选择【设计视图】后,单击【确定】按钮,均可打开如图14.10所示的表设计器窗口。

图14.13添加新表

3.输入记录

在数据库窗口中双击数据表,或者选定表后单击工具栏中的【打开】按钮,打开如图14.14所示的数据表窗口,向表中输入数据。

输入结束后关闭该窗口,根据系统提示保存数据表。

图14.14输入记录

4.建立表间关联关系

在一个数据库中,一般需要用多个表存放不同类别而又相互关联的信息。

例如,在学生信息数据库中用“基本信息”表存放学生的学号、姓名、性别等基本情况,用“成绩”表存放学生的各科成绩,用“课程”表存放已开的课程。

假设这三个表中含有如表14.3~表14.5所示的信息,当需要查询某位学生的一门或几门课程的成绩时,就要从上述三个表中获取数据。

假如某位学生的学号在最初输入时有误,需要修改,则必须确保“基本信息”表和“成绩”表中的“学号”字段进行同步更改。

因此,应当为三个表建立必要的关联关系

注:

*为主键。

建立表间关联关系的前提是两个表各含有一个关联字段(属性必须相同),其中一个表的关联字段必须被设为主键或具有惟一索引,该表称为“主表”,另一个表称为“从表”。

下面以表14.3~表14.5为例,简介建立数据表之间关联关系的一般步骤。

①单击MicrosoftAccess主窗口工具栏【关系】按钮,若数据库中尚未定义任何关系,则在打开【关系】窗口的同时弹出如图14.15所示的【显示表】对话框。

图14.15选择拟建立关系的表

②在【显示表】对话框中选定需要建立关系的表,单击【添加】按钮,然后单击【关闭】按钮,屏幕显示如图14.16所示的【关系】窗口。

图14.16【关系】窗口

③在【关系】窗口将【基本信息】表中的【学号】字段拖放到【成绩】表中的【学号】字段,弹出如图14.17所示的【编辑关系】对话框。

图14.17编辑关系

④在【编辑关系】对话框中,将【实施参照完整性】、【级联更新相关字段】和【级联删除相关记录】三个复选框全部选中,单击【创建】按钮。

⑤重复第③、④步的操作,建立【成绩】表中的【课号】字段与【课程】表中的【课号】字段的关联。

建立表间关联关系后的效果如图14.18所示。

图14.18表间关系

14.2VB如何访问数据库

目前,VisualBasic访问数据库的主流技术是ADO。

ADO是一种基于对象的数据访问接口,在VB中提供了利用ADO访问数据库的两种主要形式:

ADO数据控件(ADODC)和ADO对象编程模型(ADO代码)。

这两种方式可以单独使用,也可以同时使用。

使用ADO数据控件的优点是代码少,一个简单的数据库应用程序甚至可以不用编写任何代码。

它的缺点是功能简单,不够灵活,不能满足编制较复杂的数据库应用程序的需要。

使用ADO对象编程模型的优点是具有高度的灵活性,可以编制复杂的数据库应用程序。

它的缺点是代码编写量较大,对初学者来说有一定困难。

无论采用哪种方式访问数据库,都要经历以下基本步骤:

♦与数据库建立连接,打开数据库。

♦ 从数据库中读取数据并在适当的控件中显示。

♦对所获数据进行浏览以及增、删、改等操作,并将修改后的数据存入数据库。

在后面的几节中将以ADO数据控件为主详细介绍VB访问数据库的基本操作。

14.3用控件访问数据库

14.3.1ADO数据控件

1.加载ADO数据控件

ADO数据控件属于ActiveX控件,加载后才能使用:

右击工具箱,在弹出菜单中选择【部件】菜单项,打开【部件】对话框,在【控件】选项卡的列表中选中“McrosoftADODataControl6.0”前面的复选框,单击【确定】按钮。

2.连接数据库及指定记录源

ADO数据控件与数据库的连接有3种方式:

数据链接文件(.UDL)、ODBC(DSN)和字符串连接。

与Access数据库建立连接的常用方式是字符串连接。

通常通过属性页一次完成连接数据库和指定记录源的设置。

操作步骤如下:

①将ADO数据控件(Adodc)添加到窗体上,右击该控件,在弹出菜单中选择【ADODC属性】菜单项,打开如图14.20所示的【属性页】对话框。

图14.20ADODC属性页

②在对话框【通用】选项卡中选择【使用连接字符串】,单击【生成】按钮,打开如图14.21所示的【数据链接属性】对话框。

在【提供程序】选项卡的列表中选择“MicrosoftJet4.0OLEDBProvider”,单击【下一步】,切换到如图14.22所示的【连接】选项卡。

图14.21选择提供程序

图14.22连接数据库

③在【连接】选项卡中单击【1.选择或输入数据库名称】输入框右侧的

按钮,在弹出的【连接Access数据库】对话框中选择数据库,单击【打开】按钮后返回【连接】选项卡,单击【测试连接】按钮,成功后单击【确定】,完成连接数据库的设置,返回【属性页】对话框。

④单击【属性页】对话框【记录源】选项卡,显示如图14.23所示的界面,在【记录源】选项卡中设【命令类型】为“2-adCmdTable”,然后在【表或存储过程名称】下拉列表中选择数据表。

也可以设【命令类型】为“1-adCmdText”或“8-adCmdUnknown”,然后在【命令文本(SQL)】文本框中输入SQL语句(如图14.24所示)。

最后单击【确定】按钮完成设置。

图14.23用数据表作记录源

图14.24用SQL语句作记录源

上述操作实际上是设置了ADO数据控件的两个重要属性:

ConnectionString(连接字符串)属性用于建立与数据库的连接。

RecordSource(记录源)属性用于指定记录源。

除了使用属性页之外,也可以通过属性窗口或程序代码设置这两个属性。

在设置ADO数据控件与数据库的连接时,有一点要提请读者注意:

如图14.22所示,在【数据链接属性】窗口的【连接】选项卡中指定数据库时采用的是绝对路径。

为了保证数据库应用程序移植到其它计算机上仍可正常使用,应当采用相对路径,即在测试连接成功后删除数据库名称前面的所有路径(图14.22输入框中的反相显示部分),仅保留数据库文件名。

将数据库文件与工程文件存放在同一文件夹下,在工程启动窗体的Initialize事件过程中进行路径初始化处理:

PrivateSubForm_Initialize()

ChDriveApp.Path'设当前驱动器为工程所在驱动器

ChDirApp.Path'设当前目录为工程所在目录

EndSub

3.用代码设置或改变记录源

ADO数据控件一旦建立了与数据库的连接,就可以通过设置或改变其RecordSource(记录源)属性访问数据库中的任何表,亦可访问由一个或多个表中的部分或全部数据构成的记录集。

在实际应用中,常常在程序运行时用代码设置RecordSource属性及其相关属性(如CommandType),从而使ADO数据控件具有更大的灵活性。

例如:

①用数据表名称作为记录源:

Adodc1.CommandType=adCmdTable'设置命令类型为数据表

Adodc1.RecordSource="基本信息"

Adodc1.Refresh

②用SQL语句生成的记录集作为记录源:

Adodc1.CommandType=adCmdText'设置命令类型为SQL语句

Adodc1.RecordSource="SELECT*FROM基本信息"

Adodc1.Refresh

上述两段代码的效果相同。

有关SQL语言的应用将在14.5节介绍。

注意:

设置记录源后,必须调用ADO数据控件的Refresh方法刷新对数据库的访问。

14.3.2数据绑定控件

ADO数据控件本身不能显示数据,需通过绑定具有显示功能的其他控件显示数据,这些控件称为数据绑定控件或数据识别(感知)控件,如文本框、DataGrid、标签、图像(片)框、列表框、组合框、复选框等。

其中最常用的是DataGrid和文本框。

1.数据绑定控件的相关属性

DataSource(数据源)属性:

指定(绑定到)ADO数据控件。

DataField(数据字段)属性:

绑定到特定字段。

绑定后只要移动指针,自动将修改内容写入数据库。

2.在属性窗口设置绑定控件属性

在属性窗口将数据绑定控件的DataSource属性设为ADO数据控件(如Adodc1)。

如果是单字段显示控件(如文本框等),还需将控件的DataField属性设置为特定字段。

DataGrid控件属于多字段显示控件,没有DataField属性。

【例14.1】用ADO数据控件和DataGrid控件创建一个简单的数据访问窗体,显示14.1.3节创建的Student2K.mdb数据库中“基本信息”表的内容。

右击工具箱,在弹出菜单中选择【部件】命令,在对话框【控件】选项卡的列表中选中“MicrosoftADODataControl6.0”和“MicrosoftDataGrid6.0”,单击【确定】。

选择工具箱中新增加的ADO数据控件和DataGrid控件,将其添加到窗体上,默认名称分别为Adodc1和DataGrid1。

按14.3.1小节所述步骤建立Adodc1与Student2K.mdb数据库的连接,并设Adodc1的记录源为“基本信息”表。

将DataGrid1控件的DataSource属性设为Adodc1。

程序运行效果如图14.25所示。

图14.25使用DataGrid控件

3.用代码设置绑定控件属性

程序运行时可以动态地设置数据绑定控件的属性。

例如:

SetText1.DataSource=Adodc1

Text1.DataField="姓名"

SetDataGrid1.DataSource=Adodc1

说明:

DataSource是对象类型的属性,必须用Set语句为其赋值。

4.不用绑定方法如何显示和处理数据

不使用绑定的方法处理数据是指不对数据显示控件的DataSource和DataField属性进行设置,而是通过代码将当前记录某个字段的值显示在控件(如文本框)中。

这种方法比较灵活,缺点是代码编写量较大,其中涉及到记录集对象的操作。

(1)字段内容的显示

控件属性=记录集(“字段”)

例如:

Text1.Text=Adodc1.Recordset("学号")

Text2.Text=Adodc1.Recordset("姓名")

每当记录指针移动时均需对控件属性重新赋值。

若需要显示的字段较多,可以编制一个自定义过程用于记录指针移动时显示各字段内容。

(2)为字段赋值

记录集(“字段”)=控件属性

例如:

Adodc1.Recordset("学号")=Text1.Text

Adodc1.Recordset("姓名")=Text2.Text

Adodc1.Recordset.Update

说明:

为字段赋值后,应调用记录集的Update方法更新数据库。

14.3.3使用数据窗体向导

使用“数据窗体向导”可以快速创建一个数据访问窗体。

执行【工程】菜单中【添加窗体】命令,打开如图14.26所示的对话框,在【新建】选项卡中选择【VB数据窗体向导】,单击【打开】按钮后将会出现向导的第一个对话框。

图14.26启动数据窗体向导

如果是创建单表访问窗体,数据窗体向导将有七个步骤:

【介绍】、【数据库类型】、【数据库】、【窗体(Form)】、【记录源】、【控件选择】和【完成】,可根据向导提示操作。

图14.27是利用数据窗体向导创建的数据窗体,数据库为Student2K.mdb,记录源为“基本信息”表中的所有字段。

向导中的其他步骤均采用默认设置。

图14.27用数据窗体向导创建的数据窗体

14.4初识记录集对象

无论是使用ADO数据控件,还是使用ADO对象编程模型,都会涉及到记录集对象。

因此,在进一步讨论数据库操作之前,有必要初步了解一下记录集对象。

请看下面来自学生数据库的几个集合:

取“基本信息”表中所有学生的记录构成一个集合;

取“基本信息”表中所有男生的记录构成一个集合;

取“基本信息”表中张三的学号和姓名,根据其学号取“成绩”表(含学号、课号和分数三个字段)中该学生的各科成绩构成一个集合。

以上几个集合都是“记录的集合”,由此得出以下概念:

将数据库中一个或多个表中的部分或全部数据构成一个“记录的集合”,这个集合就称为“记录集”(Recordset)。

记录集由行(记录)和列(字段)构成。

若将记录集看作一个对象,这个对象就是记录集对象。

记录集对象具有特定的属性、方法和事件。

ADO数据控件的Recordset属性代表属于本控件的记录集对象。

记录集对象是ADO中的一个功能强大的对象,对数据库的绝大部分操作,如记录指针的移动,记录的查找、添加、删除和修改等,都是针对记录集对象进行的。

14.5用SQL语句生成记录集

14.5.1最简单的SQL语句

1.最简单的查询语句

下面的SQL语句是最简单的查询形式,生成的记录集包含整个表的全部数据:

SELECT*FROM基本信息

其中“*”指表中所有字段(列)。

FROM子句用于指定数据表。

2.SELECT语句的基本语法

在实际应用中,往往需要从一个或多个表中选择符合特定条件的记录构成记录集,因此应对SELECT语句的语法有一定的了解。

以下是SELECT语句的基本语法。

SELECT*|字段列表FROM表名[WHERE查询条件][GROUPBY分组字段[HAVING分组条件]][ORDERBY排序字段[ASC|DESC]]

说明:

*|字段列表:

“*”表示所有字段;“字段列表”指定字段,多个字段间用逗号分隔,来自不同表的同名字段前须加表的名称和圆点。

FROM子句:

指定表。

若指定多个表,用逗号分隔。

WHERE子句:

指定选择记录的条件。

GROUPBY及HAVING子句:

分组过滤,将分组字段中同值记录合并为一条记录。

ORDERBY:

排序。

ASC为升序(默认);DESC为降序。

【例14.2】选择“基本信息”表中的“学号”和“姓名”字段,“成绩”表中的“课号”和“分数”字段构成记录集。

SELECT基本信息.学号,姓名,课号,分数FROM基本信息,成绩WHERE基本信息.学号=成绩.学号

14.5.2限定记录集筛选条件

在SELECT语句的各子句中,WHERE子句使用频率最高。

该子句指明查询的条件。

在WHERE子句中可使用各种关系(比较)运算符表示筛选记录的条件。

【例14.3】选择“基本信息”表中所有男生构成记录集:

SELECT*FROM基本信息WHERE性别="男"

【例14.4】取“基本信息”表中张三的学号和姓名,根据其学号取“成绩”表中该学生的各科成绩构成记录集:

SELECT基本信息.学号,姓名,课号,分数FROM基本信息,成绩WHERE基本信息.学号=成绩.学号AND姓名="张三"

在WHERE子句中使用Like运算符可实现模糊查询。

SQL语句中Like运算符的通配符是“%”,可代表任何字符,字符数不限。

【例14.5】用Like运算符进行模糊查询。

①查询所有姓“张”的学生:

SELECT*FROM基本信息WHERE姓名Like"张%"

②查询所有姓名中含有“小”字的学生:

SELECT*FROM基本信息WHERE姓名Like"%小%"

③查询姓名最后一个字为“刚”的所有学生:

SELECT*FROM基本信息WHERE姓名like"%刚"

14.5.3在VB程序中如何使用SQL语句

在程序代码中,SQL语句必须以字符串形式提供。

例如:

Adodc1.RecordSource="SELECT*FROM基本信息"

如果SQL语句中含有字符串常量,必须将字符串常量放在一对单引号中。

【例14.6】在SQL语句中引用字符串常量。

DimstrSQLAsString

strSQL="SELECT*FROM基本信息WHERE性别='男'"

Adodc1.RecordSource=strSQL

如果SQL语句中引用了String型变量或其他控件的字符串类型的属性(如文本框的Text属性),应当采用下面的引用形式(注意单引号的位置):

"...'"&字符串变量或控件属性&"'..."

【例14.7】在SQL语句中引用字符串变量。

DimstrSQLAsString,strSexAsString

strSex="男"

strSQL="SELECT*FROM基本信息WHERE性别='"_

&strSex&"'"

Adodc1.RecordSource=strSQL

【例14.8】在SQL语句中引用控件的字符串类型的属性。

DimstrSQLAsString

Text1.Text="张"

strSQL="SELECT*FROM基本信息WHERE姓名Like'"_

&Text1.Text&"%'"

Adodc1.RecordSource=strSQL

如果SQL语句中引用了非字符串类型的变量或控件属性,不使用单引号。

【例14.9】在SQL语句中引用非字符串类型的变量。

DimstrSQLAsString,intGradeAsInteger

intGrade=60

strSQL="SELECT*FROM成绩WHERE分数>="_

&intGrade&"AND课程='英语'"

Adodc1.RecordSource=strSQL

14.5.4记录排序

用ORDERBY子句(ASC为升序,DESC为降序)对记录排序。

例如:

SELECT*FROM基本信息ORDERBY学号ASC

SELECT*FROM基本信息ORDERBY姓名DESC

14.5.5记录分组

用GROUPBY子句将指定字段中数值相等的多条记录合并为一条记录。

可用HAVING子句附加条件。

【例14.10】以“班级”作为分组字段,查询各班女生人数。

SELECT班级,Count(*)AS女生FROM基本情况GROUPBY班级,性别HAVING性别="女"

说明:

上面的语句中Count(*)表示统计记录总数,AS子句表示存放统计结果的临时字段别名。

其他SQL函数还有Sum、Avg、Max和Mi

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 考试认证 > 从业资格考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1