《数据库基本应用.pptx》由会员分享,可在线阅读,更多相关《数据库基本应用.pptx(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 第12章我们介绍了文件的基本操作,实际上使用数据库来存储和管理数据将比文件操作有更高的效率。VB具有了强大的数据库操作功能,使程序开发人员可以轻松地开发出各种数据库应用程序。第1页/共47页2本章介绍:数据库的基本概念VB可视化数据库管理器的用法VB操作数据库的两种工具 DATA数据控件 ADO数据对象显示数据的基本方法。第2页/共47页313.1.1 关系数据库1.数据库和数据表 数据库(DateBse)是许多相关数据根据一定的原则构成的数据集合。一个数据库由一个或多个数据表(Table)组成。数据表中的一列称为一个字段或域(Field),表中的一行数据称为一条记录(Record)。同一
2、个表中字段名不允许重名 表中同一字段的数据类型相同 所有记录具有同样的字段第3页/共47页4学生基本情况表 第4页/共47页513.1.2 可视化数据管理器2.VB可访问的数据库 VB默认的数据库格式与Access格式相同,其默认的数据库文件(.mdb)称为内部数据库。除此之外,在VB中还可以访问:外部数据库,如dBASE、FoxPro、Paradox等 ISAM(索 引 顺 序 访 问 方 法)数 据 库,以 及Lotus123和Excel等电子表格数据列表ODBC(开 放 式 数 据 互 接)数 据 库,如SQLServer等第5页/共47页6可视化数据管理器是VB提供的一个数据库操作的实
3、用工具,使用它可以方便地建立数据库,并对数据表的记录进行增加、删除、修改及查询。VB默认的数据库是Access,扩展名是.mdb。第6页/共47页71启动可视化数据管理器图 在VB IDE中,打开“外接程序”菜单的“可视化数据管理器”命令,即打开可视化数据管理器的“VisData”窗口,如图所示。第7页/共47页82.2.建立数据库的表结构建立数据库的表结构 建立数据库建立数据库新建数据表新建数据表确定数据表的字段以及字段确定数据表的字段以及字段名、类型和长度等信息名、类型和长度等信息 【例例】建立一个学生建立一个学生.mdb.mdb数据库,在该库中新建一个名为学生基数据库,在该库中新建一个名
4、为学生基本情况表的数据表。本情况表的数据表。字段名字段名字段名字段名学号学号学号学号姓名姓名姓名姓名性别性别性别性别出生日期出生日期出生日期出生日期籍贯籍贯籍贯籍贯专业专业专业专业类型类型类型类型TextTextTextTextTextTextData/TimeData/TimeTextTextTextText长度长度长度长度7 78 82 28 810102020操作步骤:建立数据库操作步骤:建立数据库新建数据表新建数据表建立表索引建立表索引(可选可选)生成表生成表 第8页/共47页93.修改表结构 “数据库窗口”快捷菜单中“设计”命令 4.输入、编辑、删除记录 在“数据库窗口”中双击数据表
5、第9页/共47页1013.1.3 使用SQL语句结构化查询语言(SQL)是一种操作关系数据库的工业标准语言。SQL由一系列SQL语句组成。用户可以在“SQL语句”窗口中输入SQL语句,也可以在程序中使用SQL语句中来实现各种功能。下面介绍SQL的基本语句。第10页/共47页111SELECT语句。SELECT语句可以从一个或多个表中选取特定的行和列。该语句基本格式如下:SELECT 字段名列表 From 表名 Where 查询条件Order By 排序字段ASC|DESC,【例】:ELECT 学号,姓名,性别 From 学生基本情况表 Where 专业计算机应用SELECT*From 学生基本
6、情况表 Where 性别女 Order By 专业 第11页/共47页122Insert语句。Insert语句用于向数据表中追加一条记录。语句格式如下:Insert Into 表名(字段列表)Values(字段值表)例如 Insert Into 学生成绩表(学号,英语,程序设计)Values(2001006,85,88)第12页/共47页133Delete语句。Delete语句用于删除指定条件的记录。语句格式如下:Delete From表名 Where条件 说明:默认Where子句,将删除指定表中的所有记录。例如 Delete From 学生成绩表 Where 学号=2001006第13页/共
7、47页144Update语句。Update语句用于修改指定条件的记录。语句格式如下:Update 表名 Set 字段=表达式,字段=表达式,Where 条件 例如,修改学生基本情况表中学号为“2001005”的专业,可使用的Update语句如下:Update 学生基本情况表 Set 专业=计算机应用 Where 学=2001005第14页/共47页15【例13-1】修改例11-1程序,用数据库方法进行用户名和密码验证。界面如图所示,frmlogin窗体中添加了一个Data控件。第15页/共47页16 建立管理员表,在管理员表中添加记录。Data控件属性设置属性属性属性值属性值说明说明名称名称D
8、ata1ConnectAccess 连接数据库类型连接数据库类型DatabaseName学生学生.mdb数据库名称数据库名称VisibleFalse不可见不可见第16页/共47页17 Private Sub cmdOK_Click()Dim Sql As string Sql=select*from 管理员表 where 用户名=+UserName.Text+Sql=Sql+and 密码=+Password.Text+Data1.RecordSource=Sql 用Sql语句返回记录集 Data1.Refresh 刷新数据库 If Not Data1.Recordset.EOF And nPa
9、ss 3 Then 在数据库中找到了对应的用户名和密码 frmLogin.Hide frmmain.Show Else End If End Sub第17页/共47页181.窗体上添加Data控件 2.三个重要属性Connect:指 定 所 连 接 的 数 据 库 类 型,默 认 为AccessDatabaseName:选择要访问的数据库文件 RecordSource:确定要访问的数据来源(数据表或SQL查询语句)3.其它常用属性RecordSetType:设置记录集的类型ReadOnly:设置是否以只读方式打开数据库 第18页/共47页1913.3.1 Data控件的常用属性 程序运行时,根
10、据Data控件设置的属性打开数据库,返回一个记录集对象(RecordSet),RecordSet对象提供和物理数据库相应的一组逻辑记录。Data控件对数据的操作主要是对RecordSet对象进行的,RecordSet对象也有自己的属性和方法。第19页/共47页20属性属性说明说明BOF记录指针是否指向记录指针是否指向RecordSet对象第一条记录之前对象第一条记录之前EOF记录指针是否指向记录指针是否指向RecordSet对象最后一条记录之后对象最后一条记录之后RecordCount返回返回RecordSet对象的记录的个数对象的记录的个数AbsolutePosition返回当前记录的记录号
11、。取值范围从返回当前记录的记录号。取值范围从0开始,到开始,到RecordCount-1。NoMatch用用Find查询方法在表中查询满足某一条件的记录,如果查询方法在表中查询满足某一条件的记录,如果未找到符合条件的记录,则该属性值为未找到符合条件的记录,则该属性值为True,否则值为,否则值为False。Fields记录集中的字段,记录集中的字段,Fields(i)表示当前记录的第表示当前记录的第i个字段,个字段,i从从0开始;开始;Fields(字段名字段名)表示当前记录的指定字段表示当前记录的指定字段第20页/共47页2113.3.2 Data控件和RecordSet对象的常用方法1Da
12、ta控件的常用方法(1)Refresh方法格式:Data控件名.Refresh在程序运行中,如改变了Data控件的Connect、DatabaseName、RecordSource或ReadOnly等属性的值,则必须调用Refresh方法,使所作的更改生效。第21页/共47页22(2)UpdateRecord方法格式:Data控件名.UpdateRecord当用户对数据库作了修改后,调用此方法使所作的修改生效。UpdateRecord 方法只保存那些来自被绑定的控件。第22页/共47页232RecordSet对象的常用方法(1)记录的定位方法格式:Data控件名.RecordSet.方法名功能
13、:在记录集上前后移动以改变当前记录。其中方法有:MoveFirst:将记录指针定位到第一条记录。MoveLast:将记录指针定位到最后一条记录。第23页/共47页24MoveNext:将记录指针定位到下一条记录。MovePrevious:将记录指针定位到上一条记录。(2)Update方法格式:Data控件名.RecordSet.Update功能:更新记录内容。通常在调用了Addnew方法后,调用该方法。第24页/共47页25(3)AddNew方法格式:Data控件名.RecordSet.AddNew功能:添加一条新的空白记录。用户可以给当前记录的各字段赋值,然后调用Update方法对数据表更新
14、,否则用AddNew方法添加的记录无效。例如:Data1.RecordSet.AddNew Data1.RecordSet.Fields(0)=王刚Data1.RecordSet.Update第25页/共47页26(4)Delete方法格式:Data控件名.RecordSet.Delete功能:删除当前记录。使用该方法删除一条记录后,需用MoveNext方法将记录指针移到下一条记录。第26页/共47页27(5)Edit方法格式:Data控件名.RecordSet.Edit功能:将当前记录的内容进行修改之前,使用Edit方法使记录处于编辑状态。与Addnew方法类似,必须再调用Update或Up
15、dateRecord方法来更新,才使用所作的修改生效。第27页/共47页28(6)记录的查询方法格式:Data控件名.RecordSet.方法名功能:在记录集中查询满足条件的记录。如果找到满足条件的记录,则记录指针将定位在找到的记录上。如果找不到满足条件的记录,则记录指针将定位记录集的末尾。其中方法有:FindFirst:查询满足条件的第一条记录。FindLast:查询满足条件的最后一条记录。FindNext:从当前记录开始往后查找满足条件的第一条记录。FindPrevious:从当前记录开始往前查找满足条件的第一条记录。第28页/共47页29 通常可以使用Find方法查找某字段的值与一表达式
16、的值相匹配的记录,通过NoMatch属性判断是否找到。例如,在“学生基本情况表”中,查找第一条姓名为“王东”的记录,可以用如下的语句:Data1.Recordset.FindFirst 姓名王东If Data1.Recordset.NoMatch Then MsgBox 数据表中没有符合条件的记录!End If第29页/共47页3013.3.3 Data控件的常用事件1Validate事件在一条不同的记录成为当前记录之前,Update 方法之前,或者Delete、Unload 或 Close 操作之前会引发该事件。即将记录指针从X记录移到Y记录时,引发该事件。引发该事件时,当前记录仍为X记录。
17、Validate事件过程的格式为:Private Sub Data1_Validate(Action As Integer,Save As Integer)第30页/共47页31其中,Action参数用来标识引发该事件的操作。借用该参数可以根据不同的操作作不同的处理。Save参数是一个布尔表达式,用来表示是否保存已修改的数据。如果该事件退出时 save 为 True,则激活 Edit 和 UpdateRecord 方法。2Reposition事件在一条记录成为当前记录之后引发该事件。即将记录指针从X记录移到Y记录时,引发该事件。引发此事件时,当前记录是Y记录。第31页/共47页32绑定:通过对
18、普通控件的属性设置,使得这些控件与Data控件记录集中的字段建立链接关系。1.Data的绑定控件 具有DataSource和DataField属性的控件可以和Data控件进行绑定,如标签、文本框等。2.绑定控件的属性设置DataSource:选择所绑定的Data控件 DataField:确定需显示或更新的数据表字段,即Data控件连接的数据表字段 第32页/共47页33【例13-2】设计一个程序,管理“学生.mdb”数据库中“学生基本情况表”的记录的内容,此数据表中的记录如表13.1所示。程序运行的界面如图所示。第33页/共47页34分析:程序运行时要显示如图的界面,相应文本框需要分别绑定到数
19、据控件,同时由于文本框控件已绑定,文本框中任何数据的修改都会直接改变数据库中的数据,因此需要对已更改的数据作出判断,这一过程可以通过Data控件的Validate事件完成。另外,通过Data控件的Reposition事件设置它的Caption属性。数据控件Data1和文本框的属性设置如表13.9所示。第34页/共47页35对象对象属性属性属性值属性值Data1ConnectAccessDatabaseName学生数据库所在路径及名称学生数据库所在路径及名称(学生学生.mdb)RecordSource学生基本情况表学生基本情况表Text1Text6DataSourceData1DataField
20、分别为:学号、专业、姓名、性别和籍贯分别为:学号、专业、姓名、性别和籍贯第35页/共47页36ADO:ActiveX Data Objects(ActiveX数据对象)创建ADO控件(1)“工程”部件”(2)点击工具箱中,在窗体上画出ADO对象第36页/共47页3713.5.2 ADO控件的属性、方法和事件设置窗体上ADO对象的ConnectionString属性第37页/共47页38 第38页/共47页39设置窗体上ADO对象的RecordSource属性 选择数据表为记录源 由SQL查询来确定记录源第39页/共47页40 ADO控件的方法和事件 ADO控件与Data控件类似,对数据的操作主
21、要通过Recordset对象的方法来实现。ADO控件提供可响应的事件较多,常用的是WillMove事件和MoveComplete事件。当用某种方法改变纪录集的指针使其从一条记录移到另一条记录,产生WillMove事件。当一条记录成为当前记录后,产生MoveComplete事件,它在WillMove事件之后发生。第40页/共47页41DataGrid控件与ADO控件绑定后,可一次显示多条记录,并允许对显示的记录进行编辑修改,并可将修改的结果自动更新到数据库中。使用DataGrid控件:(1)“工程”部件”(2)点击工具箱中 (3)在窗体上画出 DataGrid对象第41页/共47页42【例13-
22、3】用DataGrid控件显示学生基本情况表中的数据,界面如图所示 第42页/共47页43【操作步骤】在窗体上放置一个ADO控件和一个DataGrid控件,设置ADO控件与数据库的连接,设置DataGrid控件的DataSource属性为Adodc1,运行程序后就可以在DataGrid控件中显示学生基本情况表中的所有数据。第43页/共47页44 事务(Transaction)是数据库系统中的一个非常重要的概念。简单地说,一组对数据库的操作组成一个事务被提交执行,那么事务处理就必须做到:要么整个操作都成功,要么什么操作都不做。数据库本身肩负着管理事务的责任。只要应用程序指定了某段程序为一个事务并
23、做了相应的处理(提交或回退),数据库系统会自动维护事务本身的特性。第44页/共47页45 VB以BeginTrans、CommitTran和RollbackTrans过程的形式提供了事务处理机制。BeginTrans开始记录对数据库的更新,用于以后可能的恢复。BeginTrans调用可以嵌套5层。激活CommitTrans,实现从最近的BeginTrans开始的所有改变。对于嵌套事务,直到关闭了所有事务记录后才执行更新。激活RollbackTrans可以取消从最近调用BeginTrans开始所做的所有改变。第45页/共47页46【13-4】利用ADO控件和DataGrid控件,设计成绩查询程序,界面如图13-15所示。界面中包含一个ADO控件、一个DataGrid控件、一个标签、一个文本框和两个命令按钮,命令按钮采用控件数组形式。第46页/共47页Visual Basic程序设计教程47感谢您的观看。第47页/共47页
限制150内