1 / 53

Visual Basic 6.0 可视化编程应用

Visual Basic 6.0 可视化编程应用. 四川达县职业中学 周龙江. 四川达县职业中学 周龙江. 第 7 章 数据库管理. 学习目标: 了解数据库的相关概念 掌握数据管理器的使用 掌握 VB 对数据库的三种访问技术 掌握应用 SQL 对数据库进行查询. 第 7 章 数据库管理. 教学内容: 7.1 VB 数据库 技术基础 7.2 可视化数据管理器 7.3 数据控件 ( Data) 7.4 应用 SQL 进行 数据库查询 7.5 数据访问对象 ( DAO ) 7.6 ADO 数据 控件. 返回目录.

Download Presentation

Visual Basic 6.0 可视化编程应用

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Visual Basic 6.0可视化编程应用 四川达县职业中学 周龙江 四川达县职业中学 周龙江

  2. 第7章 数据库管理 学习目标: • 了解数据库的相关概念 • 掌握数据管理器的使用 • 掌握VB对数据库的三种访问技术 • 掌握应用SQL对数据库进行查询

  3. 第7章 数据库管理 教学内容: 7.1 VB数据库技术基础 7.2 可视化数据管理器 7.3 数据控件(Data) 7.4 应用SQL进行数据库查询 7.5 数据访问对象(DAO) 7.6 ADO数据控件

  4. 返回目录 7.1 VB数据库技术基础-基本概念 1. 数据库和数据表 • 数据库(DateBse)是许多相关数据根据一定的原则构成的数据集合。一个数据库由一个或多个数据表(Table)组成。 • 数据表中的一列称为一个字段或域(Field),表中的一行数据称为一条记录(Record)。 • 同一个表中字段名不允许重名 • 表中同一字段的数据类型相同 • 所有记录具有同样的字段

  5. 返回目录 7.1 VB数据库技术基础-基本概念 2. VB可访问的数据库 VB默认的数据库格式与Access97格式相同,其默认的数据库文件(.mdb)称为内部数据库。 除此之外,在VB中还可以访问: • 外部数据库,如dBASE、FoxPro、Paradox等ISAM(索引顺序访问方法)数据库,以及Lotus123和Excel等电子表格数据列表 • ODBC(开放式数据互接)数据库,如SQLServer等

  6. 返回目录 7.1 VB数据库技术基础-数据库访问技术 1. VB数据库应用程序的组成 用户界面、数据库引擎和数据库 (VB提供的是Microsoft Jet数据库引擎) 2. 应用程序与Jet数据库引擎的接口 • Data控件:提供无需编程就能访问数据库的 能力。实际应用时,还需绑定其它控件,并编 写简单的程序代码。 • 数据访问对象(DAO):供了一个由一系列对象和集合组成的分层结构模型,可方便地访问和处理数据库。 3. ActiveX数据对象(ADO) 建立在被称为OLE DB的最新数据访问接口之上的高性能的、统一的数据访问对象。

  7. 返回目录 7.2 可视化数据管理器-建立数据库 1. 启动数据管理器 “外接程序→可视化数据管理器” 2. 建立数据库的表结构 建立数据库→新建数据表→确定数据表的字段以及字段名、类型和长度等信息

  8. 返回目录 7.2 可视化数据管理器-建立数据库 [例7.1] 建立一个students.mdb数据库,在该库中新建一个名为student的数据表。 操作步骤: 建立数据库→新建数据表→建立表索引(可选) →生成表

  9. 返回目录 7.2 可视化数据管理器-编辑数据表 1. 修改表结构 “数据库窗口”快捷菜单中“设计”命令 2. 输入、编辑、删除记录 在“数据库窗口”中双击数据表

  10. 返回目录 7.3 数据控件(Data)-Data控件使用基础 1. 窗体上添加Data控件 2. 三个重要属性 • Connect:指定所连接的数据库类型,默认为Access • DatabaseName:选择要访问的数据库文件 • RecordSource:确定要访问的数据来源(数据表或SQL查询语句) 3. 其它常用属性 • RecordSetType:设置记录集的类型,见教材表7.3 • ReadOnly:设置是否以只读方式打开数据库 记录集是Data控件能访问的所有记录的集合

  11. 返回目录 7.3 数据控件(Data)-Data控件使用基础 4. 常用方法与事件 • Refresh方法:刷新Data控件的属性设置 例如,若重新设置了控件的Connect、DatabaseName、RecordSouce、ReadOnly等属性值后,必须调用Refresh方法使所作的更改生效。 • Reposition事件:重定位事件 例如,当记录集指针从一条记录(假设为A记录)移到另一条记录(假设为B记录)时,将发生该事件(当前记录是B记录)。

  12. 返回目录 7.3 数据控件(Data)-Data控件使用基础 例,如下的事件响应代码可在数据控件Data1上显示记录集中当前记录的记录号及记录总数: Private Sub data1_Reposition() DataId = Data1.Recordset.AbsolutePosition + 1 DataCount = Data1.Recordset.RecordCount Data1.Caption = Str(DataId) & “/” & Str(DataCount) End Sub 注: • 记录集(Recordset)是Data控件所有可访问记录的集合 • AbsolutePosition属性表示当前记录指针的位置 • RecordCount属性表示记录集的记录总数

  13. 返回目录 7.3 数据控件(Data)-Data的绑定控件 绑定:通过对普通控件的属性设置,使得这些控件与Data控件记录集中的字段建立链接关系。 1. Data的绑定控件 具有DataSource和DataField属性的控件可以和Data控件进行绑定,如标签、文本框等。 2. 绑定控件的属性设置 • DataSource:选择所绑定的Data控件 • DataField:确定需显示或更新的数据表字段,即Data控件连接的数据表字段

  14. 返回目录 7.3 数据控件(Data)-Data的绑定控件 [例7.2]建立Xs.vbp:通过如下窗体显示students.mdb数据库中student表的内容。

  15. 返回目录 7.3 数据控件(Data)-Data的绑定控件 [例7.2的操作步骤] (1) 设计窗体:启动VB,新建一个工程,然后设计窗体。 (2) 设置Data控件的属性,见教材表7.4 (3) 设置文本框的绑定属性,见表7.5 (4) 编写 “结束”按钮的Click事件响应代码 Private Sub Cmd_exit_Click() End End Sub (5)保存:Xs.Vbp、FrmXs.frm (6)运行:单击Data控件上的前后四个按 钮可遍历student数据表中的内容。

  16. 返回目录 7.3 数据控件(Data)-Data控件的记录集 • 记录集(Recordset)是Data控件所有可访问记录的集合 • 对数据库内容的编辑操作主要通过记录集对象来进行 1.浏览记录 • Bof 和 Eof 属性 Bof为True:记录指针指向首记录前 Eof为True:记录指针指向末记录后 • AbsolutePosition属性 返回当前记录指针的位置(0对应第一条记录) • RecordCount属性 返回记录集的记录总数 若Bof和Eof的属性值都为True,则记录集为空

  17. 返回目录 7.3 数据控件(Data)-Data控件的记录集 • BookMark属性:设置或返回记录的书签 • LastModified属性:返回最近一次改过的记录书签值 • Move方法组:用于移动记录指针 • MoveFirst:移至第一条记录 • MoveLast:移到最后一条记录 • MovePrevious:记录指针前移一条记录 • MoveNext:记录指针后移一条记录

  18. 返回目录 7.3 数据控件(Data)-Data控件的记录集 [例7.3]在例7.2的基础上进行修改: 用Move方法组实现Data控件四个 按钮的相应功能,并在Data1控件上 显示当前记录号。 [操作步骤] (1) 在窗体上添加4个命令按钮: 分别命名为Cmd_Move(0)~ Cmd_Move(3) 设置相应的Caption属性 (2) 编写Cmd_Move命令按钮数组的Click事件响应代码 (3) 编写Data1控件重定位事件(Reposition)响应代码

  19. 返回目录 7.3 数据控件(Data)-Data控件的记录集 2.增加、修改和删除记录 • 相关方法 • AddNew:数据表中添加一条空记录 • Edit:将当前记录的内容调入缓冲区 • Delete:删除当前记录 • Update:将缓冲区中的内容写入数据库 • CancelUpdate:缓冲区中的内容不写入数据库 • 增加新记录 ① 调用AddNew方法:在数据表中添加一条空记录 ② 对新记录的各字段进行赋值 ③ 调用Update方法:更新数据表内容

  20. 返回目录 7.3 数据控件(Data)-Data控件的记录集 • 修改记录 ① 调用Edit方法:将当前记录的内容调入缓冲区 ② 修改当前记录 ③ 调用Update方法:将修改的内容写入数据表 注:若在绑定控件上修改当前字段值后移动记录指针,则系统自动将所作的修改更新到数据库中。 • 删除记录 ① 调用Delete方法:删除当前记录 ② 移动记录指针:避免记录指针指向无效数据 注:记录一经删除,就不可恢复。删除记录必须慎重。

  21. 返回目录 7.3 数据控件(Data)-Data控件的记录集 [例7.4]在例7.3的基础上进行修改: 在窗体上添加“增加记录”、“修改记录”和“删除记录”三个按钮,通过调用AddNew、Edit、Delete方法实现对数据库的相关操作。 [操作步骤] (1) 在窗体上添加3个命令按钮: Cmd_Add、Cmd_Update、 Cmd_Dele (2) 编写上述按钮的Click事件 响应代码

  22. 返回目录 7.3 数据控件(Data)-Data控件的记录集 “增加记录”按钮的Click事件响应代码流程图

  23. 返回目录 7.3 数据控件(Data)-Data控件的记录集 3.查找记录 • Find方法组(适用于Dynaset和SnapShot类型的记录集) • FindFisrt:查找满足条件的第一条记录 • FindLast:查找满足条件的最后一条记录 • FindPrevious:当前记录起往前找满足条件的第一条记录 • FindNext:当前记录起往后找满足条件的第一条记录 语法格式:记录集.<Find方法> 条件表达式 例如,Data1.Recordset.FindFirst "class= '网络技术'" Data1.Recordset.FindNext "name Like'王*'" 注:如果条件中包含变量,则必须使用字符串连接符& className=“网络技术” Data1.Recordset.FindFirst "class=" & "'" & className & "'"

  24. 返回目录 7.3 数据控件(Data)-Data控件的记录集 • NoMatch属性 用Find方法组进行查询时,如果未找到符合条件的记录,则该属性的值为True,否则为False。 例如: Data1.Recordset.FindNext "name Like'王*'" If Data1.Recordset.NoMatch Then MsgBox "没有姓王的学生" End If

  25. 返回目录 7.3 数据控件(Data)-Data控件的记录集 • Seek方法(适用于Table类型记录集) 格式:记录集.seek 比较运算符,<索引字段的取值> Seek方法是通过索引字段快速找到符合条件的记录,所以在使用该方法前必须先打开其相关的索引。 例如: Data1.DatabaseName = "students.mdb " Data1.RecordSource = "student" Data1.RecordType = 0 '设置记录集类型为表类型 Data1.Refresh Data1.Recordset.Index = "stuid " '打开名称为stuid的索引 Data1.Recordset.Seek "=" , "013002"

  26. 返回目录 7.3 数据控件(Data)-Data控件的记录集 [例7.5]在例7.4的基础上进行修改: 增加一个登录窗体FrmLog, 只有当用户输入user表中正确的 用户名和相应的密码后,才可以 进入FrmXs(学生情况)窗体。 [操作步骤] (1)在数据库中增加user数据表:

  27. 返回目录 7.3 数据控件(Data)-Data控件的记录集 (2) 添加新窗体,保存为FrmLog。 属性设置见教材表7.6 (3) 执行“工程→属性”命令, “启动对象”选FrmLog (4) 编写 “确定”按钮的Click事件响应代码 验证用户名是否为空 验证密码是否为空 查找用户名是否存在 若不存在,给出“非法用户”的提示信息 如果存在还需判断密码是否正确 不正确提示重新输入;正确则显示FrmXs窗体

  28. 返回目录 7.4 应用SQL进行查询-SELECT语句 SELECT语句的语法: Select 字段1,字段2 ...,字段n From 表名 Where 查询条件 Group By 分组字段 Order By 字段[Asc|Desc] 例如: Select * from student Select name,id,class from student where sex= '女' Select name from student where sex='女' and class= '网络技术'

  29. 返回目录 7.4 应用SQL进行查询-多表查询 多表查询:查询时将两个以上表中的内容通过相关字段连接在一起。各字段名前应加上相应的表名:表名.字段名 例如: Select student.* , class.classname From student , class Where student.classid = class.classid [例7.9]以例7.5为基础对Xs.Vbp工程进行修改,要求: • 用Select语句描述数据源:连接student和class表中的数据 • 多表查询的结果通过FrmXs窗体显示,并且不允许用户对显示的数据进行修改 • 新增一个FrmEdit窗体,在该窗体中完成增加记录或修改记录的操作

  30. 返回目录 7.4 应用SQL进行查询-多表查询 [操作步骤] (1) 修改Students.mdb数据库 • 根据教材表7.10修改student数据表: 删除class字段;增加classid字段,宽度为2, “顺序位置”为2 • 在student数据表各记录的classid字段中输入代码: 01 (表示“网络技术”班级),02 (表示“汽车营销”班级) • 根据表7.11新建class数据表,并输入相应记录

  31. 返回目录 7.4 应用SQL进行查询-多表查询 (2) 打开Xs.Vbp,对FrmXs窗体上的控件进行属性设置: • 设置Data1控件的RecordSource属性: Select student.*, class.classname From student, class Where student.classid = class.classid • 设置Txt_class的DateField 属性:classname • 将各文本框控件的Locked 属性设置为True

  32. 返回目录 7.4 应用SQL进行查询-多表查询 (3) 新增FrmEdit窗体(在该窗体中完成新增或修改操作) • “性别”字段采用单选按钮控件数组Opt_sex • 班级通过下拉列表(Cmd_class)选择 • Data1:DatabaseName设为Students.mdb,RecordSource选student,Visible设为False • Data2:DatabaseName设为Students.mdb,RecordSource选class,Visible设为False • 编写以下事件的响应代码: 窗体Load事件 窗体Activate(激活)事件 “确定”按钮的Click事件 “返回”按钮的Click事件

  33. 返回目录 7.4 应用SQL进行查询-多表查询 (4) 修改FrmXs窗体中部分控件的事件响应代码 Private Sub Cmd_add_Click() flag = 1 : FrmEdit.Show 1 End Sub Private Sub Cmd_Dele_Click() MsgBox "该功能有待开发!", , "删除记录" End Sub Private Sub Cmd_Update_Click() flag = 2 : FrmEdit.Show 1 End Sub (5) 添加var.bas模块(定义全局变量) Public flag As Integer

  34. 返回目录 7.4 应用SQL进行查询-使用MSFlexGrid控件 1. 添加MsFlexGrid控件 (1) 执行“工程→部件”命令 (2) 选“Microsoft FlexGrid Control 6.0” 2. MSFlexGrid控件的常用属性 • AllowUserResizing:设置是否允许对行列大小进行调整 • Col、Row:设定或访问当前单元格 • Cols、Rows:返回或设置控件中的列和行的总数 • ColSel、RowSel :设置选中的列或行 • Clip:返回或设置控件选定区域中的内容 • ColWidth、RowHeight:返回或设置某列的列宽或某行的行高 • ColAlignment:返回或设置某一列的对齐格式 • Sort:根据设定的属性值排序所选择的行

  35. 返回目录 7.4 应用SQL进行查询-使用MSFlexGrid控件 3. MSFlexGrid控件的常用方法 • AddItem:在控件中添加一行 例如,以下代码将数据添加到第1行(原第1行变成第2行): MSFlexGrid1.AddItem “何君” & Chr(9) & “男” & Chr(9) & “上海”, 1 注:如果代码最后的1省略,则数据将被添加到最后一行 • Clear:清除控件中的所有内容(不清除行和列) • RemoveIte:删除控件中指定的行。 注:固定行(即呈灰色的行)不可删除。例如,执行以下代码将报错“不能在固定行上使用RemoveItem”的对话框: MSFlexGrid1.RemoveItem 0

  36. 返回目录 7.4 应用SQL进行查询-使用MSFlexGrid控件 [例7.10]以例7.9为基础对Xs.Vbp工程进行修改,要求: • 新增FrmBrowse窗体,在该窗体中完成按班级的查询操作 • 在FrmXs窗体上增加可进入查询窗体的“查询记录”按钮 [操作步骤] (1) 打开Xs.Vbp,新增FrmBrowse窗体: • 设计窗体界面,属性设置见教材表7.12

  37. 返回目录 7.4 应用SQL进行查询-使用MSFlexGrid控件 • 编写窗体激活事件的响应代码Form_Activate( ) 默认查询全部记录

  38. 返回目录 7.4 应用SQL进行查询-使用MSFlexGrid控件 • 编写的“选择查询班级”组合框的Click事件响应代码 Cmb_class_Click( ) • 编写“返回” 按钮的Click事件响应代码Cmd_exit( )

  39. 返回目录 7.4 应用SQL进行查询-使用MSFlexGrid控件 (2) 在FrmXs窗体上增加可进入查询窗体的“查询记录”按钮 Cmd_Browse,并编写相应的事件响应代码: Private Sub Cmd_Browse_Click() FrmBrowse.Show 1 End Sub

  40. 返回目录 7.5 数据访问对象(DAO) DAO:Data Access Objects(数据访问对象) 1. 使用DAO的前提 “工程”→引用”,选中Microsoft DAO 3.51 Object Library”

  41. 返回目录 7.5 数据访问对象(DAO) 2. 创建工作区 确定引用库之后,可利用数据库引擎对象(DBEngine)创建工作区对象(WorkSpace对象): Set workspace对象变量 = CreateWorkspace(name, user, password, type) 注: 缺省的工作区对象是Jet类型的DBEngine.WorkSpaces(0),对于简单的数据库应用程序来说,无需创建WorkSpace对象,可直接使用系统缺省工作区的属性和方法。

  42. 返回目录 7.5 数据访问对象(DAO) 3. 打开数据库 利用WorkSpace对象的OpenDatabase方法,常用格式: Set 数据库对象 = 工作区对象.OpenDatabase (dbname, options) 其中: dbname:需打开的数据库名称,包含路径。 Options:对于Jet类型的Workspace对象,该参数用来指定数据库的打开方式。取值为False(默认值)时,为共享方式;否则为独占方式。 例如, Set db = DBEngine.Workspaces(0).OpenDatabase("testdb.mdb")

  43. 返回目录 7.5 数据访问对象(DAO) 4. 创建记录集 利用数据库对象的OpenRecordset方法,常用格式: Set 记录集对象 = 数据库对象.OpenRecordset (source, type) 其中: source:指定记录集内容(数据表名、查询名或SQL语句) type:指定记录集类型,默认打开表型记录集 例如, Set db = DBEngine.Workspaces(0).OpenDatabase("testdb.mdb") Set rsSele = db.OpenRecordset("TestSeleDb")

  44. 返回目录 7.5 数据访问对象(DAO) 5. 记录集对象的属性与方法 大多与Data控件的Recordset对象的属性及方法一致 [例7.11]从TestDB.mdb(考试题库)中随机动态抽取指定数目的选择题和填充题到Test.mdb(学生考试库) 注:数据库结构见教材 [操作步骤] (1) 新建工程 • 设计窗体 • 工程存为TestSele.vbp 窗体存为FrmSele.frm

  45. 返回目录 7.5 数据访问对象(DAO) (2) 引用DAO对象库 “工程”→引用”,选中Microsoft DAO 3.51 Object Library” (3) 编写程序代码 • 使用DAO打开题库和学生考试库 • 清空学生考试库 • 打开进行查询的相关的索引 • 生成考试库中的选择题表 • 生成考试库中的填充题表 • 关闭试题库和学生考试库, 并给出选题完成的提示信息

  46. 返回目录 7.6 ADO数据控件-ADO使用基础 ADO:ActiveX Data Objects(ActiveX数据对象) 1. 使用ADO数据控件 (1) “工程”→部件” (2) 点击工具箱中 在窗体上画出ADO对象

  47. 返回目录 7.6 ADO数据控件-ADO使用基础 (3) 设置窗体上ADO对象的ConnectionString属性

  48. 返回目录 7.6 ADO数据控件-ADO使用基础

  49. 返回目录 7.6 ADO数据控件-ADO使用基础 (4) 设置窗体上ADO对象的RecordSource属性 选择数据表为记录源 由SQL查询来确定记录源

  50. 返回目录 7.6 ADO数据控件-ADO使用基础 [例7.12]用ADO控件对TestDB.mdb中的TestseleDb表进行增加、修改、删除、跳转等操作。 [操作步骤] (1) 新建工程 • 设计窗体 • 设置Adodc控件的属性 • 设置绑定控件的属性 • 工程存为TestManage.vbp 窗体存为FrmManage.frm (2) 编写事件响应代码 • 窗体Load事件 • 各按钮的Click事件

More Related