




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第十六章数据库功能,16.1数据库基本概念数据管理:手工管理文件管理数据库管理数据库功能:数据的组织;数据的管理。数据的组织:数据库(DataBase:DB)以一定的方式组织并存储在一起的相互有关的数据的集合。按组织方式的不同,分为三种模型:关系数据库、层次数据库和网状数据库。数据的管理:数据库管理系统(DBMS)用户与数据库之间的接口,提供对数据库使用和加工的操作,如对数据库的建立、修改、检索、计算、统计、删除等。VB可以处理多种数据库,如Access、FoxPro、DataBase、Excel、Paradox等格式的数据库。默认数据库:Access数据库(一种关系数据库),2,一、关系数据库的结构1.数据表:数据存储在一些二维表中,通过建立各表之间的关系来定义数据结构。2.表名称:每个数据表的名称。3.数据库:包含多个数据表4.数据库名称:ACCESS数据库扩展名.mdb例如:“学生.mdb”数据库1.“学生基本信息”数据表:,3,“专业”数据表:,“系”数据表,各数据表之间存在某种关系。如通过“专业编号”建立了每个学生与各专业之间的关系。通过“系编号”建立了每个专业与各系之间的关系。,4,5数据表的结构,记录:数据表中的每一行称为一个记录。字段:数据表中的每一列称为一个字段。字段名:每个字段一个名称字段类型:每个字段一种类型数据表的结构按字段定义,5,6,6.数据表中的关键字:可以唯一确定一个记录的字段主关键字:只能有一个候选关键字:可以有多个7.数据表间的关联按照某一个公共字段建立的一个表中记录同另一个表中记录之间的关系。8.外部键实现与另一个表之间沟通的字段称为“外部键”。9.索引为了加速查找而引入按某个字段(索引字段)排序每个表可以有多个索引,但只能有一个是主索引。每个索引有一个名称,7,二、数据访问对象模型在VB中,要对数据库进行访问,需要通过数据访问对象进行1.DAO:DataAccessObject数据访问对象2.RDO:RemoteDataObject远程数据对象3.ADO:ActiveXDataObjectActiveX数据对象ADO是DAO/RDO的后继产物,它扩展了DAO和RDO所使用的对象模型,包含较少的对象,更多的属性、事件和方法。通过ADO可以访问各种各样的数据源。三、结构化查询语言SQLStructuredQueryLanguage实现对数据库的检索、排序、统计、修改等多种操作,8,16.2可视化数据管理器提供可视界面,用于建立数据库;对数据库进行修改、添加、删除、查询等操作。一、启动:外接程序可视化数据管理器二、建立数据库:数据库结构的建立和数据的录入1.新建文件新建MicrosoftAccessVerson7.0MDB确定数据库文件保存位置及名称显示:数据库窗口、SQL语句窗口2.打开:文件打开数据库MicrosoftAccess三、建立数据表1.新建表2.添加字段和索引四、数据的增加、删除、修改首先确定对数据的操作、显示方式,9,(1)对记录集的访问方式VB使用记录集(Recordset)对象访问数据库中的记录,访问方式有三种。表类型(Table):直接更新数据表中的数据动态集类型(Dynaset):更新操作都先在内存中进行快照类型(Snapshot):打开的数据表或由查询返回的数据仅供读取(2)在数据编辑窗口数据记录的显示方式使用Data控件:不使用Data控件:使用滚动条使用DBGrid控件(3)事务方式开始事务:开始一个新的事务。回滚当前事务:撤消自开始事务以来所作的一切改变提交当前事务:确认自开始事务以来对数据库所做的修改,原有数据将不能恢复。,10,在数据库窗口中右击表名打开,11,五、查询1使用查询生成器实用程序查询生成器保存查询数据库窗口:查询名称打开:显示查询设计:显示SQL语句,可修改SQL语句来修改查询。单击“执行”按钮显示查询结果单击“保存”按钮保存查询单击“清除”按钮清除该SQL语句。2使用SQL语句(1)Select语句:SelectALL|DISTINCTFromWhereOrderByASC|DESC,功能:从指定的表中选出满足条件的记录,记录中包含指定的字段。,12,ALL:缺省值,显示查询到的所有记录。DISTINCT:在显示查询结果中如果有多个相同的记录,只取其中的一个。使用DISTINCT可以保证查询结果每一条记录的唯一性。指出所要查询的表,可以指定多个表,各表名之间用逗号隔开。指出查询的条件。:指明要在查询结果中包含的字段名,具体形式为:表名.字段名,各项之间用逗号隔开,如果选择所有字段,则不用一一列出字段名,只需写成:表名.*:将查询结果按该字段排序。ASC、DESC:ASC指定按升序排序,DESC指定按降序排序。,13,例1:选出学生基本信息表中所有男生记录,查询结果只包括班级、学号和姓名字段,相应的Select语句如下:Select学生基本信息.班级,学生基本信息.学号,学生基本信息.姓名From学生基本信息Where学生基本信息.性别=男对于单个表的查询,可以省去各字段名前面的表名,以上Select语句可以简写成:Select班级,学号,姓名From学生基本信息Where性别=男例2:显示学生基本信息表中男生的所有信息:Select*From学生基本信息Where性别=男例3:显示所有学生的学号、姓名和所在专业名、系名:Select学生基本信息.学号,学生基本信息.姓名,专业.专业名称,系.系名From学生基本信息,专业,系Where学生基本信息.专业编号=专业.专业编号And专业.系编号=系.系编号,14,(2)插入查询例:设新建一个“新系”表,其中包括“系编号”、“系名”InsertInto系Select系编号,系名From新系Where新系.系编号=005表示从“新系”数据表中选择系编号为005的记录,并将其添加到“系”表中。INSERTINTO系SELECT系编号,系名FROM新系表示从“新系”数据表中选择所有记录,并将其添加到“系”表中。INSERTINTO新系(系编号,系名)VALUES(007,城市建设)表示向“新系”表中添加一条新记录,系编号字段值为“007”,系名字段值为“城市建设”。,15,(3)删除查询从一个或多个表中删除指定的记录。例如:DeleteFrom新系Where系编号=005从“新系”表中删除所有系编号大于“005”的记录。(4)更新查询更改表中一个或多个行的列值。例:设在某“职工工资”数据表中包含“姓名”、“性别”、“基本工资”、“奖金”、“实发工资”字段。给所有女职工增加2%的奖金。使用语句:UPDATE职工工资SET基本工资=基本工资*1.02WHERE性别=女在增加奖金之后计算实发工资,可以使用以下语句:UPDATE职工工资SET实发工资=基本工资+奖金,16,六、数据窗体设计器将数据库中的数据或查询结果显示在界面上。在当前工程中建立数据窗体:实用程序数据窗体设计器命令16.3数据控件和数据绑定控件,一、数据控件(Data):内部控件1属性(1)DatabaseName属性:数据源的名称及位置(2)Connect属性:连接的数据库类型。(3)RecordSource属性:数据来源,可以是数据表名称、SQL语句或是一个查询名。,17,(4)Recordset属性:由Data控件所确定的记录集对象(5)BOFAction:指示BOF属性为True时进行什么操作。0-MoveFirst将第一个记录做为当前记录。1BOF将当前记录位置定位在第一个记录之前。记录集的BOF值保持True,此刻禁止Data控件上的MovePrevious按钮。(6)EOFAction:指示EOF属性为True时进行什么操作。0MoveLast保持最后一个记录为当前记录。1EOF将当前记录位置定位在最后一个记录之后。记录集的EOF值保持True,此刻禁止Data控件上的MoveNext按钮。2-AddNew移过最后一个记录时自动添加一个新记录。(7)ReadOnly:只读(True)(8)RecordsetType:表、动态集、快照,18,2方法(1)Refresh方法:如果DatabaseName、ReadOnly、或Connect属性的设置值发生了改变,可以使用Refresh方法来打开或重新打开数据库。(2)UpdateControls方法:从记录集中取得当前记录,并且在绑定控件中显示当前的数据。当用户在界面上更改了当前记录的数据之后,使用该方法将当前记录内容恢复为其原始值,取消已做的更改。(3)UpdateRecord方法:将被绑定控件的当前值保存到数据库中。,19,3事件:(1)Error事件:代码中的错误可以捕获,由错误处理程序处理其他对数据库操作错误时发生Error事件,可在该事件过程中编写错误处理代码。(2)Reposition事件:在一条记录成为当前记录之后产生该事件。(3)Validate事件:在移动到另一条记录之前、Update方法之前,以及进行Delete、Unload等操作之前产生该事件。,20,16.4Recordset对象的属性与方法1属性(1)AbsolutePosition属性:指定Recordset对象当前记录的序号位置。第一条记录的AbsolutePosition值为0。在第一条记录成为当前记录后具有明确值。例:在数据绑定控件上显示第5条记录Data1.Recordset.AbsolutePosition=5Data1.UpdateControls(2)Bookmark属性:返回唯一标识Recordset对象中当前记录的书签,或者将Recordset对象的当前记录设置为由有效书签所标识的记录。(3)BOF、EOF属性当前记录在最后一个记录之后时,EOF值为True当前记录在第一个记录之前时,BOF值为True,21,(4)RecordCount属性:指示当前记录的总数(5)NoMatch属性:指示当使用Seek方法或Find方法进行查找时,是否找到匹配的记录,当找到指定的记录时,值为True,否则,值为False(6)Fields属性Recordset对象的Fields属性是一个集合。集合中包含所有Field(字段)对象。每个Field对象对应于Recordset中的一列。使用Field对象的Value属性可设置或返回当前记录的数据。,22,例:在窗体上显示当前记录的“姓名”字段的内容:PrintData1.Recordset.Fields(姓名).Value例:将当前记录的“班级”字段改成“道99-3”:Data1.Recordset.Fields(班级).Value=道99-3或简写成:Data1.Recordset.Fields(班级)=道99-3(7)Index属性设置或返回表类型记录集中的当前索引名称,该索引名称必须是已经定义的一个索引。设置或返回的值为字符串类型。例:设置学生基本信息表的索引为名称为xh的索引:Data1.Recordset.Index=xh,23,2.方法(1)MoveFirst、MoveLast、MoveNext、MovePrevious方法MoveFirst:将当前行记录指针移到第一条记录MoveLast:将当前行记录指针移到最后一条记录MoveNext:将当前行记录指针移到前一条记录MovePrevious:将当前行记录指针移到后一条记录(2)Move方法:将当前记录向前或向后移动指定的条数格式:Movenn为整数时表示向后移动,n为负数时表示向前移动。(3)AddNew方法:在记录集中添加一条新记录。,24,例如,给“学生基本信息”表添加一条新记录:Data1.Recordset.AddNewData1.Recordset.Fields(学号)=980010104Data1.Recordset.Fields(姓名)=刘小波Data1.Recordset.Fields(班级)=建98-01Data1.Recordset.Fields(性别)=男Data1.Recordset.Fields(专业编号)=001Data1.Recordset.Fields(出生日期)=#1/23/1980#Data1.Recordset.Update,25,(4)Update方法:保存对Recordset对象的当前记录所做的所有更改。(5)Delete方法:删除当前记录。删除当前记录后,在移动到其他记录之前已删除的记录将保持为当前状态。一旦离开已删除记录,则无法再次访问它。(6)Edit方法:在对记录内容进行修改之前,需要使用该方法使记录处于编辑状态,例如,要将当前记录的“班级”字段改成“道99-3”,需要先使用Edit方法:Data1.Recordset.EditData1.Recordset.Fields(班级)=道99-3Data1.Recordset.Update,26,(7)FindFirst、FindLast、FindNext、FindPrevious方法在指定的Dynaset或Snapshot类型的Recordset对象中查找与指定条件相符的记录,并使之成为当前记录。如果要在表类型记录集中查找,需要使用Seek方法。FindFirst:查找满足条件的第一条记录FindLast:查找满足条件的最后一条记录FindNext:从当前记录开始查找下一条满足条件的记录FindPrevious:从当前记录开始查找上一条满足条件的记录,27,例:在学生基本信息表中查找出第一条女生记录。Data1.Recordset.FindFirst性别=女在学生基本信息表中查找下一个出生日期为80年12月12日的学生记录:Data1.Recordset.FindNext出生日期=#80-12-12#例:单击按钮Command2打印出所有的女生的姓名。PrivateSubCommand2_Click()Data1.Recordset.MoveFirstDoData1.Recordset.FindNext性别=女IfData1.Recordset.NoMatchThenExitDoPrintData1.Recordset.Fields(姓名)LoopEndSub,28,(8)Seek方法在表类型记录集中查找满足条件的记录,使用之前必须先打开索引,要查找的内容为索引字段的内容。Recordset.Seek,说明:(1)比较字符为字符串类型:=、可以有多个关键字,分别对应于当前索引的索引字段注意,Seek总是在当前记录集中找出满足条件的第一条记录,如果在同一个记录集中多次使用同一个Seek方法,那么找到的总是同一条记录。例如:打开学生基本信息表的学号索引(名称为xh),查找学号为“990020203”的记录:Data1.Recordset.Index=xhData1.Recordset.Seek=,990020203,29,16.5数据绑定控件要使数据绑定控件能够显示数据库记录集中的数据,必须首先在设计时或在运行时设置这些控件的两个属性:DataSource属性:返回或设置一个数据源,通过该数据源,数据绑定控件被绑定到一个数据库。DataField属性:返回或设置数据绑定控件将被绑定到的字段名。,30,例16-1:用文本框显示“学生”数据库的班级、学号、姓名、性别。界面如下图,(1)“上一个”:显示上一个记录,当显示到第一个记录时,继续单击“上一个”按钮,则该按钮变为无效,而把焦点定位到“下一个”按钮,(2)“下一个”:显示下一各记录,当显示完最后一个记录后,再单击“下一个”按钮,则该按钮无效,焦点定位到“上一个”按钮。,(3)文本框只用于浏览数据,不允许修改。运行时不显示Data控件,31,控件名属性名属性值Data1DatabaseNameE:mydb学生.mdbRecordSource学生基本信息VisibleFalseText1DatasourceData1DataField班级LockedTrueText2DatasourceData1DataField学号LockedTrueText3DatasourceData1DataField姓名Locked
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年广播信号传输服务项目合作计划书
- 2025年三烷基叔胺及其甲基氯化铵项目发展计划
- 2025企业员工食堂承包合同范本(标准版)
- 025、会所精装饰方案
- 物流行业月度个人工作计划
- 拓展人脉与职场发展的新年策略计划
- 秋季跨学科教学计划
- 2025年高镍锍合作协议书
- 2025-2030中国防火吸音毯行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国防撞传感器装置行业市场发展趋势与前景展望战略研究报告
- 2024年黄芩素行业分析报告及未来发展趋势
- 风湿免疫科学教学设计案例
- 金属风管预制安装施工技术
- 2023年数学竞赛AMC8真题D卷(含答案)
- 宴席设计实务(烹饪专业高职)全套教学课件
- 牙刷的营销方案和策略
- 公路工程项目管理重点
- 2023小米年度报告
- 公司招聘面试工作方案三篇
- 设计交底记录表
- 职工食堂餐饮服务投标方案(技术方案)
评论
0/150
提交评论