第7章 数据库访问技术第7章 数据库访问技术27.1 数据库基础知识7.2 可视化数据管理器VISDATA 7.3 利用Data控件访问 数据库7.4 利用ADO技术访问数据库7.5 SQL语言7.6 应用案例与设计—简单职工数据管理器的设计7.1 数据库基础知识7. 1.1 数据库基础知识7.1.2 Visual Basic数据库访问技术的发展数据库基础所谓数据库,简单地说就是存储数据的仓库。数 据不是简单杂乱地堆放到数据库中,它们是按着一定的规则和结构有组织地存放到数据库中。(1)视图(2)键(3)外来键(4)索引 Vis ual Basic数据库访问技术的发展1. Data Access Objects(DAO)DAO数据访问对象是Visual Basic最先采用的面向对象的数据库访问接口。 2.Remote Data Objects(RDO)远程数据对象(RDO)是位于O DBC API之上的一个对象模型,它绕过Microsoft Jet数据库引擎,而依赖于ODBC API、ODBC驱动程序以及后端数 据库引擎实现大部分的功能。 3.ActiveX Data Object(ADO)ActiveX数据对象(ADO)是从Visual Basic 6.0开始最新支持的数据访问对象。 7.2 可视化数据管理器VISDATA 7.2.1 可视化数据管理器VISDA TA 7.2.2 可视化数据管理器应用实例 可视化数据管理器VISDATA生成多种类型的数据库建立数据库表对数据进行安全性管理创 建数据窗体可视化数据管理器应用实例“职工档案”数据库由若干数据表组成,主要用来存储某单位职工的各种信息,“职工档案”数据库中有一个 “职工信息”表,表结构如表7.2所示。可视化数据管理器应用实例(续)表7.2 “职工信息”表结构可视化数据管理器应用实例(续)1 .创建数据库2.添加数据库表3.添加索引4.添加记录5.数据窗体设计器7.3 利用Data控件访问数据库Data控件是Visual Basic的内部控件之一,它可以通过Microsoft Jet数据库引擎来访问Access、FoxPro和Paradox等数据库 ,还可以通过ODBCDirect来访问ODBC数据源。Data控件的常用属性(1)Connect属性(2)DatabaseName 属性(3)RecordSource属性(4)RecordsetType属性(5)ReadOnly属性(6)BOFAction 属性 (7)EOFAction属性(8)Exclusive属性 Data控件的常用事件(1)Validate事件Private Sub object_Validate([Index As Integer,] Action As Integer,Save A s Integer)其中,可选参数Index用来指定Data控件在控件数组中的索引值;Action参数用来说明触发Validate 事件的操作Save参数用来说明与该Data控件绑定的控件内容是否发生了改变。Data控件的常用事件(续)例如,Private Su b Data1_Validate(action As Integer, save As Integer) If Text1.Da taChanged And (Text1.Text < "a" Or Text1.Text > "z") Then MsgB ox "input error" Text1.DataChanged = False End IfEnd Sub Data 控件的常用事件(续)(2)Reposition事件Private Sub Data1_Reposition()Text1.Text =Data1.Recordset.AbsolutePosition+1End SubData控件的常用方法与数据库访问有关的方法: (1)Refresh方法Refresh方法用来刷新与Data控件相连接的记录集。2)UPDATERecord方法UPDATERec ord方法用来将绑定控件的当前内容写入到数据库中(3)UPDATEControls方法UPDATEControls方法用来将数据从 数据库中重新读到绑定控件中(4)Close方法Close方法用来关闭数据库或记录集,并将数据对象设置为空Recordset对象在V isual Basic中,对数据库内的表是不允许直接访问的,而只能通过记录集(Recordset)对象进行记录的操作和浏览。Rec ordset对象(续)Recordset对象(续)1.Recordset对象的类型表(Table)类型动态集Dynaset类型快照 Snapshot类型2.Recordset对象的常用属性AbsolutePosition属性RecordCount属性Nomatc h属性BOF属性和EOF属性Bookmark属性Recordset对象(续)3.Recordset对象的常用方法Move方法Mov eFirst方法MoveLast方法MoveNext方法MovePrevious方法Find方法FindFirst方法FindLa st方法FindPrevious方法 FindNext方法Recordset对象(续)AddNew方法Edit方法DELETE方法 UPDATE方法CancelUPDATE方法Close方法数据绑定的概念及数据绑定控件1.简单的数据绑定控件常见属性DataCha nged属性DataSource属性DataField属性2.专用的数据绑定控件DBCombo控件和DBList控件DBGrid控 件MsFlexGrid控件数据绑定的概念及数据绑定控件(续)【例7.1】 利用Data控件访问在7.2节中建立的数据库“职工档案 ”,并显示“职工信息”表中所有字段信息。设计步骤如下:(1)建立新的标准EXE工程,并在窗体中添加1个Data控件、1个框架控件、 8个Label控件及8个TextBox控件。各控件在窗体中位置如图7.15所示。数据绑定的概念及数据绑定控件(续)图7.15 例 7.1运行界面数据绑定的概念及数据绑定控件(续)(2)设置各控件属性如表7.5所示。数据绑定的概念及数据绑定控件(续)说明:Dat a控件有4个按钮,从左向右分别代表移动记录指针到第一条记录;到前一条记录;到后一条记录;到最后一条记录。通过这4个按钮,可以移动记 录指针到不同位置,并在绑定控件中显示该记录的信息。 运行程序,结果如图7.15所示。数据绑定的概念及数据绑定控件(续)【例7.2】 修改例7.1,在例7.1的窗体上增加4个命令按钮,为其编程代替Data控件的记录移动功能。设计步骤如下:(1)修改例7.1窗体, 增加4个Command控件。各控件在窗体中位置如图7.16所示。 数据绑定的概念及数据绑定控件(续)图7.16 例7.2运行界面 数据绑定的概念及数据绑定控件(续)(2)修改Data控件属性,设置新增命令按钮属性,属性设置如表7.6所示。 数据绑定的概念及数据 绑定控件(续)(3)编写代码。Private Sub Command1_Click()Data1.Recordset.MoveFi rstEnd SubPrivate Sub Command2_Click()Data1.Recordset.MovePreviou sIf Data1.Recordset.BOF Then Data1.Recordset.MoveFirstEnd Sub 数据绑定的概念及数据绑定控件(续)Private Sub Command3_Click()Data1.Recordset.Move NextIf Data1.Recordset.EOF Then Data1.Recordset.MoveLastEnd Su bPrivate Sub Command4_Click()Data1.Recordset.MoveLastEnd Sub (4)运 行程序,结果如图7.16所示。数据绑定的概念及数据绑定控件(续)【例7.3】在例7.2的基础上实现对数据库的数据编辑功能。设计步骤 如下:(1)修改例7.2窗体,在窗体中增加5个Command控件,如图7.17所示的控件。数据绑定的概念及数据绑定控件(续)图7. 17 例7.3运行界面 数据绑定的概念及数据绑定控件(续)(2)设置新增命令按钮属性,属性设置如表7.7所示。 数据绑定的概念及 数据绑定控件(续)(3)编写代码Private Sub Form_Load()Text1.Text = "" ''清空文本框内容 Text2.Text = ""Text3.Text = ""Text4.Text = ""Text5.Text = ""Text6 .Text = ""Text7.Text = ""Text8.Text = ""End Sub数据绑定的概念及数据绑定控件(续)P rivate Sub Command5_Click() Dim str1, str2 As String str1 = Tri m(InputBox("请输入姓名:", "查找姓名"))''输入姓名 If str1 <> "" Then str2 = "xm=''" & str1 & "''" Data1.Recordset.FindFirst str2 ''在数据库中查找对 应记录 If Data1.Recordset.NoMatch Then MsgBox "查无此人!" '' 没有找到则弹出提示框 Data1.Recordset.MoveFirst ''找到则使记录指针定位到第一个满足条件的 记录上 End If End IfEnd Sub数据绑定的概念及数据绑定控件(续)Private Sub Command6 _Click() Dim str1 As String str1 = MsgBox("输入新纪录", vbOKCancel, "添加新记录") If str1 = vbOK Then Data1.Recordset.AddNew ''增加 一条新记录 End IfEnd Sub数据绑定的概念及数据绑定控件(续)Private Sub Command9_Click() Dim str1 As String str1 = MsgBox("是否真的保存?", vbOKCancel, "保存提示" ) ''提示是否保存记录 If str1 = vbOK Then Data1.UpdateRecord ''保存记录 End IfEnd Sub 数据绑定的概念及数据绑定控件(续)Private Sub Command8_Click() Dim str1 As String str1 = MsgBox("y/n", vb OKCancel, "delete") ''提示是否删除记录 If str1 = vbOK Then Data1.Re cordset.DELETE ''删除记录 Data1.Recordset.MoveFirst End IfE nd Sub 数据绑定的概念及数据绑定控件(续)Private Sub Command7_Click() EndEnd Su b(5)运行程序。程序执行后结果如图7.17所示。数据绑定的概念及数据绑定控件(续)【例7.4】 修改例7.1,增加使用DBLis t控件显示职工姓名,选择某姓名,则显示该职工全部信息功能。7.4 利用ADO技术访问数据库在Visual Basic 6.0中, ADO对象模型是主要的数据访问接口。ADO对象模型规定了一组可编程的分层对象集合,在Visual Basic应用程序中,通过创建这 组对象集合来连接数据库,实现对数据库的各种操作。使用ADODC控件访问数据库1.ADODC控件的常用属性与设置方法Connecti onString属性UserName属性和Password属性CommandType属性和RecordSource属性2.ADOD C控件的常用事件WillMove和MoveComplete事件WillChangeField和FieldChangeComplet e事件使用ADODC控件访问数据库(续)3.ADODC控件的常用方法ADODC控件的常用方法与Data控件十分相似4. ADO数据 绑定控件使用ADODC控件访问数据库(续)【例7.5】 利用ADODC数据绑定控件重做例7.4,对功能做进一步修改,根据Data List中选定职工姓名控制光标在DataGrid中指定行移动。【例7.6】 利用ADODC控件重做例7.3。利用ADO编程访问数 据库1.ADO对象模型简介图7.32 ADO对象模型利用ADO编程访问数据库(续)2.采用ADO对象编程方式访问数据库的步骤(1 )使用Connection对象建立与数据库的连接(2) 利用建立好的连接,通过Connection 、Command对象执行SQL 命令,或利用Recordset对象取得结果记录集进行查询、处理等(3)关闭连接并释放对象利用ADO编程访问数据库(续)【例7.7】 利用ADO编程重做例7.6。设计步骤如下:(1)修改例7.6窗体,删除ADODC控件,将DataGrid控件的DataSource 属性设置为空。(2)选择“工程”菜单中的“引用”选项,然后在列表中选择 “Microsoft ActiveX Data Objec t 2.0 Library”,以实现对ADO2.0的访问。利用ADO编程访问数据库(续)(3)编写代码。Private conn As ADODB.Connection ''Connection对象Private rs As ADODB.Recordset '' Recordset对象Private cmd As ADODB.Command '' Command对象Private Su b Form_Load()Dim strquery As String Set conn = New ADODB.Connect ion ''创建Connection对象 Set cmd = New ADODB.Command ''创建Command对象 利用ADO编程访问数据库(续) Set rs = New ADODB.Recordset ''创建Recordset对象 conn.Open "data source=职工档案" ''设置Connection对象连接数据库源 cmd.ActiveC onnection = conn ''设置Command对象的Connection对象 cmd.CommandText = "select from 职工信息 " ''设置Command 对象的sql语句 cmd.CommandType = adCmdText ''设置 Command 对象类型 利用ADO编程访问数据库(续)cmd.CommandTimeou t = 15 ''设置 Command 对象执行时限 rs.LockType = adLockOptimistic '' 设置 Recordset对象锁定类型rs.CursorType = adOpenKeyset ''设置 Recordset对 象游标类型 rs.Open cmd ''设置 Recordset对象打开Command 对象 Set DataGrid1.Da taSource = rs ''设置 DataGrid对象的数据源为Recordset对象End Sub利用ADO编 程访问数据库(续)Private Sub Command1_Click() ''添加记录 rs.AddNewEnd Sub Private Sub Command2_Click() ''删除记录rs.DeleteEnd SubPrivate S ub Command3_Click() ''保存记录rs.UpdateEnd SubPrivate Sub Comman d5_Click() ''移动到第一条记录rs.MoveFirstEnd Sub 利用ADO编程访问数据库(续)Priva te Sub Command6_Click() ''移动到上一条记录rs.MovePreviousEnd SubPriva te Sub Command7_Click() ''移动到下一条记录rs.MoveNextEnd SubPrivate Sub Command8_Click() ''移动到最后一条记录rs.MoveLastEnd Sub利用ADO编程访问数 据库(续)(5)运行应用程序,结果如图7.31所示。图7.317.5 SQL语言结构化查询语言SQL(Structure Que ry Language)是一种用来和关系数据库进行交互通信的数据库语言。SELECT语句SELECT语句的语法格式为:SELECT [ALL | DISTINCT] <查询结果表达式> [,<查询结果表达式>]|……FROM <表名或视图名> [,<表名 或视图名>]… …[WHERE <条件表达式>][GROUP BY <列名> [HAVING <条件表达式>]][ORDER BY <列名> [ASC|DESC]];SELECT语句(续)例如,(1)查询职工表中职工编号、职工姓名、职工性别。SELEC T zgbh,xm.xb FROM职工信息;(2)查询职工表中所有男性职工的职工编号、职工姓名、性别。SELECT zgbh,xm .xb FROM职工信息 WHERE xb=''男'';(3)查询职工表中所有男性且工资大于1500元的职工的职工编号、职工姓名、性别 。SELECT zgbh,xm.xb FROM职工信息 WHERE xb=''男'' AND gz>1500;INSERT语句INSE RT语句的语法格式为:INSERT INTO<表名>[(字段列表)] ;INSER T语句(续)例如:(1)向职工信息表中插入职工编号为5、姓名为张一航、性别为女的记录。INSERT INTO 职工信息(zgbh, xm,xb) VALUES(5, ''张一航'', ''女'');(2)将职工信息表中插入职工编号为6、姓名为李斯、性别为女、出生日期为1 990年1月1日、职称为助教、工资为1500、电话号码为8888888、家庭住址为北京市的记录。INSERT INTO 职工信息 VALUES(5, ''张一航'', ''女'', ''1990-1-1'', ''助教'',1500, ''8888888'', ''北京市'');UP DATE 语句UPDATE 语句的语法格式为:UPDATE <表名> SET 字段名=表达式,……,字段名=表达式 [WHERE <条件>];例如,将职工编号为6的职工工资修改为2000。UPDATE 职工信息 SET gz=2000 WHER zgbh=6;DELETE 语句DELETE语句的语法格式为:DELETE FROM <表名> [WHERE <条件>];例如,删除职工信息表职工编号为6的职工数据DELETE From 职工信息 WHERE zgbh=6;7.6 应用案例与设计—简单职工数据管理器的设计应用案例要求主要采用ADO编程技术来实现简单职工数据管理器,其功能分为以下2个:⑴基本数据浏览功能,能显示数据,根据查询条件查询指定数据;⑵基本数据维护功能,主要包括插入、删除等数据编辑功能。实训七 数据库应用 1、利用DataGrid控件和Adodc控件实现学生成绩查询。 2、利用ADO对象编程方式创建一个登录界面和学生成绩管理界面。 3、设计一个通讯录程序。 ⑴ 要求能够记录联系人的通信信息。 ⑵ 要求能够维护联系人的通信信息。 ⑶ 要求能够将联系人进行分类。 ⑷ 要求能够快速查找指定联系人。 ⑸ 要求能够浏览全部联系人的信息。 ⑹ 要求能够删除联系人的通信信息。 |
|