《数据库应用》PPT课件_第1页
《数据库应用》PPT课件_第2页
《数据库应用》PPT课件_第3页
《数据库应用》PPT课件_第4页
《数据库应用》PPT课件_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2020/7/7,第1页,第7章 数据库应用,学生信息管理系统 数据库基础 VB对数据库的访问 使用SQL语句生成记录集 数据库记录的操作 ADO编程模型简介 知识延伸数据报表,2020/7/7,第2页,知识回顾,Windows API函数的引用 必须先声明再使用,2020/7/7,第3页,本章目标,掌握通过ADODC控件管理数据库 掌握通过ADODB对象管理数据库 熟悉数据库操作的SQL语句 熟悉数据报表的制作,2020/7/7,第4页,引例七,(单击查看代码),2020/7/7,第5页,数据库基础,数据库就是一组排列成易于处理和读取的相关信息的集合。 关系模型已经成为数据库设计事实上的标准

2、。,2020/7/7,第6页,关系型数据库,表由若干行和若干列组成的二维表格。 一个关系型数据库由多个这样的二维表格相关联而成。,行/记录,列/字段,列标题/ 字段名,主键,2020/7/7,第7页,创建Access数据库,两种创建方式 Microsoft Office Access VB内置的“可视化数据管理器”(VisData) 版本较早,功能较弱 相应的Access数据库只能到7.0版本 不能识别现在的Access2000或Access2003版本,2020/7/7,第8页,在VB环境中创建数据库,启动数据管理器 VB环境选择“外接程序 ” “可视化数据管理器 ” 建立数据库 文件 新建

3、 Microsoft Access Version 7.0 MDB(7) 在弹出对话框中输入文件名,单击保存后,建立一个不包含数据表的空数据库 建立数据表 右键单击“数据库窗口”空白处,选择“新建表” 通过“添加字段”,创建该表的字段信息 添加索引 为了提高访问速度,可以在添加索引 输入记录,2020/7/7,第9页,Office Access创建数据库,建立数据库 “新建数据库” “空Access数据库” 建立数据表 数据库窗口中双击“使用设计器创建表 ” 在表设计器中输入字段名称、数据类型、字段大小及其他属性 关闭表设计器时,给表起名称 输入记录 建立表与表之间的关系 单击工具栏中的“关系

4、”按钮 在“关系”窗口设置相应表的关系,2020/7/7,第10页,VB对数据库的访问,ADO 是一种基于对象的数据访问接口 ADO访问数据库有两种主要形式 ADO数据控件(ADODC) 优点:代码少 缺点:功能简单,不够灵活 ADO对象编程模型(ADO代码) 优点:灵活性高,可编制复杂代码 缺点:代码编写量大, 开发步骤 与数据库建立连接,打开数据库 从数据库中读取数据并在适当的控件中显示 对所获得的数据进行浏览以及增、删、改等操作,并将修改后的数据存入数据库,2020/7/7,第11页,ADO数据控件,ADO数据控件(ADODC) 是ActiveX控件 位于Microsoft ADO Da

5、ta Control 6.0,工具箱内ADODC图标形状,画在窗体上的ADODC图标外观,2020/7/7,第12页,连接数据库及指定记录源 右键单击ADODC控件,在弹出菜单中选择“属性”,连接数据库 通过设置“连接字符串”(ConnectionString属性)可以连接数据库 指定记录源,三种连接方式,Access数据库(V7.0以下): Microsoft Jet 3.51 OLE DB Provider Access数据库(V7.0以上): Microsoft Jet 4.0 OLE DB Provider SQL Server数据库: Microsoft OLE DB Provide

6、r for SQL Server,命令类型 (CommandType),记录来源 (RecordSource),2020/7/7,第13页,记录源的指定,命令类型: CommandType属性 设置ADODC控件是执行什么样的命令获得所需要的数据 四种取值 1 adCmdText:执行的命令是一句SQL语句 2 adCmdTable:执行的命令是一个表的名称 4 adCmdStoredProc:执行的命令是一个存储过程的名称 8 adCmdUnknown:默认值,表示为设定执行命令的类型 记录源: RecordSource属性 设置ADODC具体的执行命令 需根据CommandType属性的赋

7、值,决定RecordSource属性具体的赋值内容 例如 ADODC1.CommandType = adCmdText ADODC1.RecordSource = “select * from 学籍 ADODC1.CommandType = adCmdTable ADODC1.RecordSource = “学籍,如果RecordSource属性的赋值与CommandType所给类型 不一致,在运行程序时,可能会提示“from子句语法错误”,如果用代码重新设置了记录源,必须使用 ADODC1.Refresh 刷新对数据库的访问,2020/7/7,第14页,数据绑定控件,数据控件只能连接数据库产

8、生记录集,不能显示记录集中的数据,要显示记录集中的数据必须通过能与它绑定的控件来实现。,2020/7/7,第15页,在绑定控件中显示数据 DataSource属性 数据源属性 指定(绑定到)ADO数据控件 DataField属性 数据字段属性 绑定到特定字段 当移动记录指针后,会自动将修改后的内容写入到数据库 用代码设置绑定控件 Set Text1.DataSource = ADODC1 Text1.DataField = 姓名,2020/7/7,第16页,练习例题,(查看代码),2020/7/7,第17页,不用绑定方法实现显示数据 是指不对数据显示控件的DataSource和DataFiel

9、d属性进行设置 是通过代码将当前记录某个字段的值显示在控件(如文本框)中 显示字段内容 控件属性 = 记录集(“字段”) 例如: Text1.Text = ADODC1.Recordset(“姓名 ”) 给字段重新赋值 记录集(“字段”) = 控件属性 例如: ADODC1.Recordset(“姓名 ”) = Text1.Text,获取某个字段值得形式: 记录集(“字段名”) 记录集!字段名 记录集.Fields(索引),2020/7/7,第18页,(查看代码),2020/7/7,第19页,使用数据窗体向导,通过数据窗体向导能建立一个访问数据的窗口。 两种方法: 方法一: 执行“外接程序 外

10、接程序管理器”打开“外接程序管理器”,选择“VB 6 数据窗体向导”加载到“外接程序”菜单中。 执行“外接程序 VB 6 数据窗体向导”命令 方法二: 工程 添加窗体 “新建”选项卡 VB数据窗体向导,2020/7/7,第20页,第一步:选择“数据窗体向导”命令 第二步:选择数据库类型 第三步:选择具体的数据库文件 第四步:设置应用窗体的工作特性 第五步:选择记录源 第六步:选择所需要的操作按钮,数据窗体向导具体步骤,2020/7/7,第21页,使用SQL生成记录集,记录集Recordset 定义:将数据库中一个或多个表中的部分或全部数据构成一个“记录的集合” 记录集由行(记录)和列(字段)构

11、成 记录集对象具有特定的属性、方法和事件 ADO数据控件的Recordset属性代表属于本控件的记录集对象 生成记录集最常用的方法是利用SQL语句 SQL Structure Query Language,结构化查询语言 设置记录集时使用SELECT语句,2020/7/7,第22页,2020/7/7,第23页,使用SELECT语句查询,基本语法 Select 字段表 From 表名 Where 查询条件 Group By 分组字段HAVING 分组条件 Order By 字段Asc|Desc 可以在设计或代码中对数据控件的RecordSource属性设置SQL语句,也可将SQL语句赋予对象变量

12、 在建立SQL语句时,如果需要通过变量构造条件,则需要在应用程序中将变量连接到SELECT语句。,2020/7/7,第24页,练习例题,SELECT * FROM 学籍 备注:获得“学籍”表中的所有记录信息,SELECT 学籍.学号,姓名,课号,分数 FROM 学籍,成绩 WHERE 学籍.学号 = 成绩.学号 备注:注意字段列表中的“学号”的书写,SELECT * FROM 学籍 WHERE 性别=“男”,2020/7/7,第25页,SELECT 学籍.学号,姓名,课号,分数 FROM 学籍,成绩 WHERE 学籍.学号 = 成绩.学号 AND 姓名=“张彤均”,SELECT * FROM

13、学籍 WHERE 姓名 LIKE “张%”,SELECT * FROM 学籍 ORDER BY 学号 ASC,2020/7/7,第26页,SELECT 班号,Count(*) AS 女生人数 FROM 学籍 GROUP BY 班号 HAVING 性别=“女” 备注:As关键字表示给该字段起别名 Count(*):表示统计记录总数,用DISTINCT关键字: SELECT DISTINCT 班号 FROM 学籍 WHERE 班号NULL AND 班号” 用Group By子句: SELECT 班号 FROM 学籍 GROUP BY 班号 HAVING 班号NULL AND 班号”,2020/7/

14、7,第27页,ADODC1.RecordSource = “SELECT * FROM 学籍 WHERE 学号=” & Text1.Text & “”,2020/7/7,第28页,数据集的操作,数据库记录的操作是针对记录集对象的操作 如何移动记录指针 使用ADO数据控件 使用程序代码 步骤一:在窗体上放置4个按钮,分别为“首记录”、“上一记录”、“下一记录”和“末记录” 步骤二:单击按钮时,分别用如下代码移动记录集对象指针 Adodc1.Recordset.MoveFirst 首记录 Adodc1.Recordset.MovePrevious 上一记录 Adodc1.Recordset.Mov

15、eNext 下一记录 Adodc1.Recordset.MoveLast 末记录,2020/7/7,第29页,记录集指针,BOF,EOF,2020/7/7,第30页,BOF和EOF,BOF:位于第一条记录之前(记录集头) EOF:位于最后一条记录之后(记录集尾) 当记录指针移到BOF时若再向前(MovePrevious)移动,或移到EOF时再向后(MoveNext)移动,都会引发错误。 处理错误的方式: BOF错误处理 Adodc1.Recordset.MovePrevious If Adodc1.Recordset.BOF = True Then Adodc1.Recordset.MoveF

16、irst EOF错误处理 Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF = True Then Adodc1.Recordset.MoveLast,2020/7/7,第31页,记录集的增删改查操作,查找 记录集的Find方法 格式 记录集.Find 条件,跳行,搜索方向,开始位置 参数说明 条件:字符串,类似SQL中的WHERE子句 跳行:默认为0;当取1的时候,可连续执行Find方法,If Adodc1.Recordset.RecordCount 0 Then Adodc1.Recordset.MoveFirst Adodc1.Recor

17、dset.Find “姓名 = 张彤均” If Adodc1.Recordset.EOF = True Then MsgBox “未找到姓名为张彤均的记录!” End If End If,2020/7/7,第32页,用循环方式查找,Adodc1.Recordset.MoveFirst Do While Not Adodc1.Recordset.EOF If Adodc1.Recordset(“姓名”) = “张彤均” Then Exit Do 找到,退出循环 End If Adodc1.Recordset.MoveNext Loop If Adodc1.Recordset.EOF = True

18、 Then 若指针指向记录集尾,说明未找到 Else 否则,说明找到符合条件的记录 End If,2020/7/7,第33页,用SQL语句查找,Dim strSQL As String StrSQL = “SELECT * FROM 用户 WHERE 用户名=” & txtUserID.Text & “” Adodc1.RecordSource = strSQL Adodc1.Refresh If Adodc1.Recordset.BOF = True And Adodc1.Recordset.EOF = True Then MsgBox “无此用户!” End If,2020/7/7,第34

19、页,添加记录,三步骤 调用记录集的AddNew方法 记录集.AddNew 给新添加的空记录相应字段赋值 调用记录集的Update方法更新数据库 例如: Adodc1.Recordset.AddNew Adodc1.Recordset(“学号”) = “01010001001” Adodc1.Recordset(“姓名”) = “张彤均” Adodc1.Recordset(“性别”) = “男” Adodc1.Recordset(“出生日期”) = “1987-6-15” Adodc1.Recordset(“班号”) = “01010001” Adodc1.Recordset.Update,20

20、20/7/7,第35页,练习例题,把运行时输入的数据添加入数据库 Adodc1.Recordset.AddNew Adodc1.Recordset(“学号”) = Trim(txtNo.Text) Adodc1.Recordset(“姓名”) = Trim(txtName.Text) Adodc1.Recordset(“性别”) = Trim(txtXB.Text) Adodc1.Recordset(“出生日期”) = DTPicker1.Value Adodc1.Recordset(“班号”) = Left(Trim(txtNo.Text), 8) Adodc1.Recordset.Upda

21、te 如果在未调用记录集的Update方法之前移动了记录指针,系统将自动调用Update方法;,2020/7/7,第36页,修改记录,两步骤 给要修改记录的相应字段重新赋值 调用记录集的Update方法更新数据库 例如 Adodc1.Recordset(“学号”) = “01010001001” Adodc1.Recordset!姓名= “张彤均” Adodc1.Recordset.Update 或者 Adodc1.Recordset.Fields(0) = “01010001001” Adodc1.Recordset.Fields(1) = “张彤均” Adodc1.Recordset.Up

22、date,2020/7/7,第37页,删除记录,只需一步 调用记录集的Delete方法 记录集.Delete 例如 Adodc1.Recordset.Delete Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF And Adodc1.Recordset.RecordCount 0 Then Adodc1.Recordset.MoveLast End If 注意:此时不需要Update方法,直接就执行数据库的删除。因此,在执行删除操作的时候,最好是使用MsgBox函数要求用户再次确认是否删除。,2020/7/7,第38页,练习例题,(查看代码)

23、,2020/7/7,第39页,ADO编程模型,位于 工程 引用 Microsoft ActiveX Data Object 2.x Library ADO的核心 Connection对象 Command对象 Recordset对象 ADO对象的声明 格式:Dim 变量名 As New ADODB.对象 或者 Dim 变量名 As ADODB.对象 Set 变量名= New ADODB.对象 必须先声明再使用,2020/7/7,第40页,Connection对象 用于建立与数据源的连接 声明变量:Dim con As New ADODB.Connection 一个Connection对象可以为多

24、个Recordset和Command对象提供数据库连接服务 因此,可在标准模块中声明一个全局的Connection对象变量使用 Recordset对象 表示记录集,用于记录指针的移动和记录的查找、添加、修改或删除 声明变量:Dim rs As New ADODB.Recordset Command对象 用于对数据源执行指定的命令 变量声明:Dim cmm As New ADODB.Command 这三个对象功能有交叉,因此可不必用Command,2020/7/7,第41页,使用ADO编程模型的一般步骤,第一步:声明ADO对象变量 第二步:与数据库建立连接,Dim cnn As ADODB.Co

25、nnection 声明连接对象 Dim rs As ADODB.Recordset 声明记录集对象,Dim MyPath As String 用于存放路径 MyPath = App.Path 设为本工程所在路径 若非根目录,路径后面加“” If Right(MyPath,1) “” Then MyPath = MyPath & “” 建立与数据库的连接。 cnn.Provider = “Microsoft Jet OLEDB 4.0” 指定提供者 设置数据源(指定数据库) cnn.ConnectionString = “Data Source = ” & MyPath & “Student.m

26、db” cnn.Open 与数据库建立连接,2020/7/7,第42页,第三步:设置记录集相关属性 记录集的这些属性必须在记录集关闭时设置 第四步:打开记录集,锁定类型:开放式记录锁定 rs.LockType = adLockOptimistic 游标类型:键集游标,允许在记录集中进行所有类型的移动 rs.CursorType = adOpenKeyset 设置记录集使用的连接对象为打开的Connection对象 Set rs.ActiveConnection = cnn 设置记录集的记录源 rs.Source = “SELECT * FROM 学籍”,若记录集处于关闭状态则将其打开 If r

27、s.State = adStateClosed Then rs.Open,2020/7/7,第43页,第五步:对记录集进行操作 包括增、删、改、查以及记录指针的移动 第六步:ADO对象的关闭,If rs.state = adStateOpen Then rs.Close If cnn.state = adStateOpen Then cnn.Close 此时并没有村内存中删除 要想从内存删除,要执行 Set rs = Nothing Set cnn = Nothing,2020/7/7,第44页,记录集的Open方法,语法 记录集.Open 记录源,活动连接,游标类型,锁定类型,命令类型 参数说明 记录源:对应记录集的Source属性 活动连接:对应记录集的ActiveConnection属性 游标类型:对应记录集的CursorType属性 锁定类型:对应记录集的LockType属性 命令类型:相当ADODC的CommandType属性 例如 rs.Open “SELECT * FROM 学籍” , cnn, adOpenKeyset, adLockOptimistic, adCmdText,2020/7/7,第45页,练习例题,2020/7/7,第46页,知识延伸,数据报表 数据报表设计器(Data Report Desi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论