第9章 访问数据库 9.1 数据库的概念与建立 9.2 用Data控件访问数据库.

Slides:



Advertisements
Similar presentations
编程加工 信息的. 趣味导入拓展提升大显身手总结反思学以致用 传说古代印度有个国王叫舍罕,他很迷恋棋类,而 宰相达依尔是个聪明的大臣,发明了国际象棋。国王玩 得爱不释手,决定奖赏宰相。达依尔说:陛下,我别无 他求,请你在这张棋盘的第一个格子里赏我 1 粒麦子; 在第二个格子里赏我 2 粒麦子;在第三个格子里赏我.
Advertisements

題目:徽章之記憶 南台科技大學 機械系 車輛一乙 學號:4A 姓名:黃冠嘉 教師:謝慶存
計算機概論 第4章 基本視窗程式應用 4-1 程式語言簡介 4-2 演算法與流程圖 4-3 視窗程式語言設計 4-4 資料結構.
第13章 数据库的基本应用 Visual Basic 程序设计教程.
SQL的简单查询.
課程名稱:程式設計 授課老師:________
第四章 控制结构.
程式語言(I)- Visual Basic 6.0 第 9 章 結構化程式設計
高中信息技术新课程探讨 算法与程序设计教学实践与探讨 江苏省新海高级中学  张丽.
南台科技大學 機械工程系 車輛一甲 學號:4A 學生:黃信成 老師:謝慶存
Access数据库程序设计 总复习.
客户端用Net-Library和SQL SERVER连接
VB教学中游戏化教学案例设计.
网 络 课 程 马 鞍 学 网 络 山 课 程 大 络 网 Visual Basic程序设计 第 一 讲 最容易接受的编程语言
Visual Basic 6.0之事件 事件(Event)?
第五章 数组.
VBA应用开发与实例 李 辉 微软课程培训讲师. VBA应用开发与实例 李 辉 微软课程培训讲师.
Visual Basic程序设计.
Visual Basic快速入门 ADO数据控件与数据绑定控件 VB数据库编程举例 VB开发数据库应用系统实例分析
第6章 数 组 6.1 一维数组 6.2 控件数组 6.3 二维数组.
数组 第 6 章.
第5章 数组 Visual Basic程序设计.
課程名稱:資料庫系統 授課老師:李春雄 博士
VB如何存取資料庫 ? 資料庫 資料儲存 資料庫引擎 資料庫引擎 Jet 讀取、寫入與修改 資料控制項 資料庫存取物件(ADO) 使用者介面.
Visual Basic 程序设计教程 机械工业出版社同名教材 配套电子教案 2003 年 6月.
过程 第 7 章.
第十一讲 VB常用标准控件(2).
初识Visual Basic.
Visual Basic程序设计基础 计算机科学学院.
教 师:曾晓东 电 话: 数据库技术 教 师:曾晓东 电 话:
Access VBA程序设计 本章重点 Access Basic编程语言 运算符、函数与表达式 Access Basic语句 模块的使用
第4章 程序控制结构与算法基础.
計算機程式 廖文淵 Department of Computer Science and Engineering
新觀念的 VB6 教本 第七章 讓程式轉彎的控制敘述.
Visual Basic 程序设计教程 机械工业出版社同名教材 配套电子教案 2003 年 6月.
第4章 基本的控制结构 4.1 顺序结构 4.2 选择结构程序设计 4.3 循环结构 4.4 综合实例 退出.
第12章 VBA模块设计.
RWM600 (13.56MHz) Reader Antenna.
RWM600 (13.56MHz) Reader Antenna.
PR150 (125K) Reader RS232.
新觀念的 VB6 教本 第 6 章 資料型別.
PCR300 (13.56MHz) Reader RS232/USB.
第四章 命令按钮、标签和文本框 大多数应用程序中都有命令按钮CommandButton控件,用户可以单击按钮执行某项操作。
Visual Basic程序设计.
算法与程序设计 周少品.
VB程序设计语言 主讲教师:王 杨.
VB程序设计语言 主讲教师:王 杨.
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
資料庫程式設計 VB資料庫設計簡介 週次:3 建國科技大學 資管系 饒瑞佶.
程式設計 Visual Basic簡介 週次:2 建國技術學院 資管系 饒瑞佶 2003年9月17日.
VB程序设计语言 主讲教师:王 杨.
For x = 0 To 9 For y = 0 To 9 z = *x + 10*y …… Next y
江西财经大学信息管理学院 《数据库应用》课程组2007
VB语言程序设计教程.
107學年度高一程式設計 上機考試 投影片 加減乘除.
小结 郭清溥.
经典算法之 冒 泡 排 序.
PCR300 (13.56MHz) Reader RS232/USB.
现代信息技术 微电子技术 计算机技术 传感技术 通信技术 处理、存储信息的技术 传感、采集技术 传递信息的技术
第二章、第三章错题分析.
VB与数据库 数据库连接与查询.
选择结构设计 第 4 章 程序流程有三种最基本的控制结构,即顺序结构、选择结构和循环结构。
第四章 控制结构 1、顺序控制结构 2、选择结构 3、循环结构.
计算机应用基础 潍坊学院 计算机工程学院 主讲人:丁素英.
1位选手参加了歌唱比赛,评委们的评分如下:
程式設計 Visual Basic 週次:7 建國技術學院 資管系 饒瑞佶 2003年12月6日.
解析算法与枚举算法.
算法与Visual Basic程序基础(二)
信息的加工 Word中查找和替换、自动更正、批注、修订 Excel中公式和函数、排序和筛选、图表的建立和编辑 字符识别OCR.
程序调试与错误处理.
Presentation transcript:

第9章 访问数据库 9.1 数据库的概念与建立 9.2 用Data控件访问数据库

9.1 数据库的概念与建立 9.1.1 数据库概念 数据库是具有一定组织结构的相关信息的集合。它是将一些相关的数据表组织在一起,通过设置某些功能,使数据表之间建立关系,这样就构成了一个完整数据库。

数据库的结构形式(即数据之间的联系)称为数据模型。目前最为流行的是关系模型。 关系模型采用二维表格形式存储数据。

字段名 学生成绩表 记录 字段 班级 学号 姓名 数学 英语 语文 95 86 90 78 67 69 87 77 72 89 49 64 A A40001 张薇 95 86 90 B B40001 刘磊 78 67 69 A40003 吴晓琛 87 77 72 C C40005 李锡林 89 49 64 B40011 刘勇 51 65 70 A40004 金永清 81 66 63 A40006 郭丽娜 68 C40008 李冉 60 46 61 记录 字段

9.1.2 数据库和表的建立 【例9.1】建立一个学期成绩管理数据库中学生成绩表。

建立步骤: (1)启动数据管理器: 【外接程序】|【可视化数据管理器】

(2)建立数据库: 数据库窗口 SQL语句

(3)建立数据表结构:在数据库窗口中按鼠标右键,在弹出的快捷菜单中选择“新建表”后,打开图所示的“表结构”对话框。 输入表名 向表中添加字段

学生成绩表结构 字段名 类型 大小 班级 Text 6 数学 Integer 2(默认) 学号 8 英语 姓名 10 语文

(4)编辑数据表中的数据。在数据表名处单击鼠标右键,在弹出的快捷菜单中选择“打开”项,打开下图所示的记录操作对话框。 依次输入 6项字段值

9.2 用Data控件访问数据库 【例9.2】将例9.1 所建立的数据库中的记录信息显示在文本框中,在窗体上添加6个标签、6个文本框和1个Data数据控件。

可以浏览表中的不同记录信息

说明: Data数据控件是VB的标准控件,利用它能方便地创建应用程序与数据库之间的连接,并实现对数据资源的访问; 为了在程序运行时,使Data数据控件能够访问指定表中的记录信息,应设置该控件的DatabaseName属性和RecordSource属性; 要在各文本框中显示Data控件所连接的数据表中的数据,必须将文本框与Data数据控件进行绑定。

程序代码: Private Sub Form_Load() For i = 0 To 5 txtStu(i).Locked = True Next i End Sub   Private Sub Data1_Reposition() Data1.Caption = “第” & (Data1.Recordset.AbsolutePosition + 1) & "条" End Sub  设置文本框不可编辑 使某条记录成为当前记录后,触发此事件。 设置当前记录数

程序说明: 在Data1的Reposition事件中出现的Recordset是Data1控件所控制的记录集对象,通过此对象对数据表中的记录进行浏览和操作。访问数据库的记录集可用Data1.Recordset实现。

【例9.3】在例9.2所建立的窗体基础上增加4个命令按钮。 在数据表中添加一条空记录 修改当前显示的一条记录 删除当前显示的一条记录 单击时,退出程序

程序代码: Private Sub Form_Load() For i = 0 To 5 txtStu(i).Locked = True Next i End Sub

Private Sub cmdAdd_Click() cmdEdit.Enabled = Not cmdEdit.Enabled cmdDelete.Enabled = Not cmdDelete.Enabled For i = 0 To 5 txtStu(i).Locked = Not txtStu(i).Locked Next I If cmdAdd.Caption = "添加" Then Data1.Recordset.AddNew Data1.Caption = "新记录” cmdAdd.Caption = "保存” cmdExit.Caption = "取消” txtStu(0).SetFocus Else Data1.Recordset.Update Data1.Recordset.MoveLast cmdAdd.Caption = "添加” End If End Sub 将数据加入到新添加的空记录中 用修改后的数据替换原来的记录 使记录集中的最后一条记录成为当前记录

Private Sub cmdEdit_Click() cmdAdd.Enabled = Not cmdAdd.Enabled cmdDelete.Enabled = Not cmdDelete.Enabled For i = 0 To 5 txtStu(i).Locked = Not txtStu(i).Locked Next I If cmdEdit.Caption = "修改" Then Data1.Recordset.Edit cmdEdit.Caption = “保存” cmdExit.Caption = “取消” Else Data1.Recordset.Update cmdEdit.Caption = “修改” End If End Sub   使当前记录成为可编辑状态

Private Sub cmdDelete_Click() answer = MsgBox("确实删除该记录吗?", vbYesNo + vbQuestion, ”警告”) If answer = vbYes Then Data1.Recordset.Delete Data1.Recordset.MoveNext If Data1.Recordset.EOF Then Data1.Recordset.MoveLast End If End Sub   删除当前记录 记录指针下移一条 使最后一条记录成为当前记录

Private Sub cmdExit_Click() If cmdExit.Caption = "退出" Then End Else Data1.Recordset.CancelUpdate cmdAdd.Enabled = True cmdEdit.Enabled = True cmdDelete.Enabled = True For i = 0 To 5 txtStu(i).Locked = Not txtStu(i).Locked Next i cmdExit.Caption = "退出" cmdAdd.Caption = "添加" cmdEdit.Caption = "修改" Data1.Refresh End If End Sub  取消所做的添加、 修改记录的操作 刷新记录集中的记录

Private Sub Data1_Reposition() Data1.Caption = "第" & Data1.Recordset.AbsolutePosition + 1 & "条记录" End Sub

说明: 在程序运行中,应注意各命令按钮之间的互相制约关系,如单击“添加”按钮后,不允许再单击“修改”、“删除”等按钮。因此本例在“添加”按钮的Click事件中,用cmdEdit.Enabled = Not cmdEdit.Enabled等语句实现按钮的可用与不可用状态的设置;

对于添加记录的操作,需单击两次cmdAdd按钮后才能完成。第一次单击该按钮时,执行语句Data1. Recordset 对于添加记录的操作,需单击两次cmdAdd按钮后才能完成。第一次单击该按钮时,执行语句Data1.Recordset.AddNew,其作用是将一条空记录添加到记录集的末尾。此时可在文本框中输入各字段值; 第二次单击cmdAdd按钮时,执行语句Data1.Recordset.Update,其作用是先确认所做的添加操作后,再将新记录添加到数据库中; 语句Data1.Recordset.MoveLast的作用是将记录指针移到最后一条记录上,因为新添加的记录是最后一条;

修改记录中的语句Data1. Recordset 修改记录中的语句Data1.Recordset.Edit,其作用是调用Recordset的Edit方法,使当前记录成为可编辑的状态。在完成修改操作后,还需执行语句Data1.Recordset.Update,确认所做的修改操作;

对于删除记录的操作,语句Data1.Recordset.Delete,的作用是删除当前记录; 删除当前记录后应使下一条记录成为当前记录,为此执行语句Data1.Recordset.MoveNext; 代码中If语句的含义是如果记录指针指向最后一条记录的后面,则将记录指针移动到最后一条记录上,使之成为当前记录。其中EOF是Recordset的一个属性,当值为True时,表明记录指针已移到最后一条记录的后面;

对于取消所添加的新记录或对数据的修改操作,需执行语句Data1. Recordset 对于取消所添加的新记录或对数据的修改操作,需执行语句Data1.Recordset.CancelUpdate,其作用是放弃添加的新记录或对数据的修改。并通过执行语句Data1.Refresh,刷新与Data1相连接的记录集,同时把记录集中的第一条记录设置为当前记录。

【例9.4】编写查询数据程序。在启动窗体上添加1个数据控件、1个MSFlexGride网格控件、1个标签和1个组合框。在窗体2(自定义输入框窗体)上添加2个标签、2个文本框和1个命令按钮。 单击时,选择不同的查询方式 输入不同的查询条件

说明: MSFlexGride(网格控件)的作用是可以若干行和列表示记录集对象中的记录和字段,即以表格的形式显示数据; 将MSFlexGrid控件添加到窗体后,在该控件上按右键,选“属性”项打开MSFlexGride控件的“属性页”对话框,在“属性页”中可以设置该控件的显示格式。

窗体1的程序代码: Private Sub Form_Load() Combo1.AddItem "全体" Combo1.Text = Combo1.List(0) msfStu.ColWidth(0) = 600 msfStu.ColWidth(1) = 800 msfStu.ColWidth(2) = 800 msfStu.ColWidth(3) = 500 msfStu.ColWidth(4) = 500 msfStu.ColWidth(5) = 500 End Sub 在组合框中添加选项 设置网格控件各列的宽度

Private Sub Combo1_Click() If Combo1.ListIndex = 0 Then Data1.RecordSource = "select * from student" Data1.Refresh Else frmEx9_4_2.Show frmEx9_4_2.Text1.SetFocus End If End Sub 如果选定“全体” 显示表中的所有信息 刷新与Data1控件连接的记录集

窗体2的程序代码: Select Case frmEx9_4_1.Combo1.ListIndex Case 1  Private Sub Command1_Click() Select Case frmEx9_4_1.Combo1.ListIndex Case 1 find = Text1.Text frmEx9_4_1.Data1.RecordSource = "select * from student where 班级 = '" & find & "'" frmEx9_4_1.Data1.Refresh   从student表中查询与所输入班级相匹配的学生信息

frmEx9_4_1.Data1.RecordSource = "select * from student where 姓名 Case 2 find = Text1.Text & "*“ frmEx9_4_1.Data1.RecordSource = "select * from student where 姓名 like '"& find & "'" frmEx9_4_1.Data1.Refresh 从student表中查询与所输入的姓名或姓相匹配的学生信息

frmEx9_4_1.Data1.RecordSource = "select * from student where Case 3 find1 = Text1.Text find2 = Text2.Text frmEx9_4_1.Data1.RecordSource = "select * from student where 数学 >= " & find1 & " And 数学 <= " & find2 & "" frmEx9_4_1.Data1.Refresh End Select Text1.Text = "" Unload Me frmEx9_4_1.Show End Sub   从student表中查询数学成绩在所输入的范围内的学生信息

Private Sub Form_Activate() Select Case frmEx9_4_1.Combo1.ListIndex Case 1 Label1.Caption = "输入班级" Text2.Visible = False Label2.Visible = False Case 2 Label1.Caption = "姓名或姓" Case 3 Label1.Caption = "输入数学" Text2.Visible = True Label2.Visible = True End Select End Sub

本例通过SQL(结构化查询语言)中的查询语句select实现查询功能。 select语句的基本形式是: select * from 表名 where 查询条件式 “select *”表示选择表中的全部字段; “from 表名”表示从指定表中查询数据; “where 查询条件式”表示设置查询条件,用于查找表中满足条件的记录。