Presentation is loading. Please wait.

Presentation is loading. Please wait.

第12章 数据库访问技术 本章主要内容: ● 数据库的概念 ● Access数据库 ● 使用数据控件 ●  使用ADO控件.

Similar presentations


Presentation on theme: "第12章 数据库访问技术 本章主要内容: ● 数据库的概念 ● Access数据库 ● 使用数据控件 ●  使用ADO控件."— Presentation transcript:

1 第12章 数据库访问技术 本章主要内容: ● 数据库的概念 ● Access数据库 ● 使用数据控件 ●  使用ADO控件

2 12.1 数据库的概念 12.1.1 数据库的概念 12.1.2 关系型数据库 1. 数据库 2. 数据库管理系统 3. 数据库应用程序
12.1 数据库的概念 数据库的概念 1. 数据库 2. 数据库管理系统 3. 数据库应用程序 4. 数据库系统 关系型数据库 关系型数据库由表、记录、字段组成。表的数据组织形式类似与一张二维关系表,每行称为一条记录,每列称为一个字段。一个数据库由若干张表来组成,表与表之间通过关系来连接。

3 12.2 Access数据库 12.2.1 创建Access数据库和表
Access 2000数据库管理系统是Microsoft Office 2000的一个组件,是最常用的本地数据库之一。在VB中可以方便地使用Data控件和ADO控件,操作Access数据库。 创建Access数据库和表 1. 创建Access数据库 创建Access数据库的步骤为: ① 执行“开始”菜单“程序”选项下的“Microsoft Access”命令,启动Access 2000,打开如图121所示的对话框。 ② 选中“空Access数据库”后,单击“确定”按钮。 ③ 在打开的“文件新建数据库”对话框中,输入数据库文件名(如stu),并选择保存的位置后,单击“创建”按钮。

4 ④ 系统将弹出“stu:数据库”,至此一个空Access数据库创建完毕,并以指定的文件名(
④ 系统将弹出“stu:数据库”,至此一个空Access数据库创建完毕,并以指定的文件名(*.mdb)保存在指定的文件夹中。用户可以在此创建需要的表,也可以退出Access待以后需要时将其打开完成后续工作。

5 2. 创建Access数据表 新建或打开数据库后,在图12-1所示的数据库对话框中,用户可以选择使用设计器、使用向导或通过输入数据的方法创建表。这里只介绍使用设计器创建表的方法。 ① 双击“使用设计器创建表”选项打开图12-2所示的创建表结构对话框. ② 依次输入各字段的名称和数据类型,在“字段属性”栏中输入字段的大小、格式等属性值。

6 一般在每个表中均应指定一个字段为该表的主键(如本例的“学号”字段),主键应唯一的代表一条记录,即所有记录中该字段没有重复的值。有了主键可以方便地与数据库中其他表进行关联,并利用主键值相等的规则结合多个表中的数据创建查询。 ③ 输入完毕后关闭设计表结构对话框,系统会提示为新建的表命名(本例命名为“基本情况”)。命名后,新建的表将出现在数据库窗口中。 ④ 如果需要修改表结构,可以在数据库窗口中选择了表名称后,单击工具栏中“设计”按钮,重新进入创建表结构窗口进行必要的修改。 ⑤ 双击表名称打开图12-3所示的表数据输入窗口,依次将各种数据输入到数据表中,需要注意的是表中主键字段的值不允许空缺。

7 ⑥ 输入完毕后关闭输入窗口,将数据保存在数据库文件中。

8 创建查询 如果在数据库中存在有多张数据表,并且各表中存在有相同的字段信息。此时为了避免数据冗余,通常利用数据表中的关系来减少表中的字段,如图12-4所示的“成绩”表中就省略了“姓名”、“性别”、“年龄”等字段。当需要使用综合信息时可以通过创建查询实现对多表的信息组合。

9 创建查询的步骤如下: ① 单击数据库窗口中的“查询”按钮,双击“在设计视图中创建查询”选项,如图12-5所示,打开查询设计器。

10 ② 在“显示表”对话框中,选择需要的表后单击“添加”按钮将其添加到查询中(本例将“成绩表”和“基本情况”添加到查询中)。
由于我们在前面将“学号”字段定义成了主键,此时将自动建立一个“一对一”的关系(用一条连线表示)。将各表中需要的字段依次拖动到查询字段列表区中,构成查询的字段框架,如图12-6所示。

11 如果需要向查询中添加一些计算字段,如总分、平均分等,可以使用字段生成器。方法为:
① 在需要的位置上(如本例的“高等数学”之后),单击鼠标右键,在弹出的快捷菜单中执行“生成器”命令,打开图12-7所示的“表达式生成器”窗口。 ② 输入表达式字段名后,用“:”分割后面的表达式内容。选择“成绩表”后,在字段列表区中双击将需要的字段添加到表达式,单击工具栏中对应的符号按钮,生成表达式的计算式。 ③ 输入完毕后,单击“确定”按钮。

12 ④ 如果希望在“平均分”字段中设置保留小数点的位数,可以在平均分字段中单击鼠标右键,在弹出的快捷菜单中执行“属性”命令,在格式栏中输入“0
④ 如果希望在“平均分”字段中设置保留小数点的位数,可以在平均分字段中单击鼠标右键,在弹出的快捷菜单中执行“属性”命令,在格式栏中输入“0.0”表示保留一位小数,如图12-8所示。

13 ⑤ 设计完成关闭设计器窗口时,系统会提示输入新建查询的名称,并将其显示到数据库窗口中,双击查询名称可以看到查询中包含的数据,如图12-9所示。
需要说明的是,查询并没有新建任何数据的副本,只是将不同数据表的字段进行了重新组合,这些数据依然存放在原数据表中。

14 12.3 使用数据控件 VB通过使用数据控件(Data)、数据绑定控件(如文本框、组合框等标准控件)、数据访问对象、远程数据控件、ADO数据控件来实现对数据库的访问。在这些工具中Data控件和数据绑定控件是初学者最常用的工具,它们具有快捷、方便及功能强大等特点。甚至不需要编写任何程序代码,而通过设置几个关键属性,使用一些类似于文本框这样的数据绑定控件就可以实现对数据库的一般访问。 【例12-1】

15 数据控件的属性 数据控件是VB的标准控件之一,可以直接从工具箱中加入窗体。Data控件的属性中,3个基本属性(Connect、DatabaseName和RecordSource)决定了所要访问的数据资源。 1. Connect(连接)属性 该属性用于定义所要连接的数据库类型,如“Access”表示连接Access 97格式的数据库。Access 2000表示连接Access 2000格式的数据库。需要说明的是,如果在VB 6.0中使用Access 2000数据库,必须从Microsoft网站上下载并安装VsSp5补丁程序。否则在Connect属性取值列表中不会出现Access 2000选项。

16 2. DatabaseName(数据库名)属性
该属性决定Data控件连接到哪个数据库上。对于多表数据库(如Access等),该属性为具体的数据库文件名,如:Data1.DatabaseName="d:\students.mdb"。对于单表数据库(如FoxPro等),该属性为数据库存放的目录,数据库文件名应存放在Data控件的RecordSource属性中。如,当需要访问FoxPro数据库“d:\fox\abcd.dbf”时,应按如下方法设置属性: Data1.DatabaseName="d:\fox" Data1.RecordSource="abcd.dbf" 如果在设计或运行时,改变了Data控件的DatabaseName属性,应使用Refresh(刷新)方法重新打开新数据库。

17 12.3.2 数据控件的事件 3. RecordSource(记录源)属性
该属性主要用来设置Data控件打开的数据库表名或查询名。可以是一个表名、一个数据库中已存在的查询或一条SQL语句。如果在运行时通过代码改变了该属性值(连接到其他数据源),则必须使用Refresh方法使改变生效,并需要重建记录集(Recordset)。 数据控件的事件 Data控件与其他VB控件一样支持许多事件,但除此之外Data控件还支持Error、Reposition、Validate等与数据库访问有关的事件。 1. Error事件 该事件主要用来处理不能被任何应用程序捕获的错误。事件的语法格式为:

18 Private Sub Data1_Error(DataErr As Integer, Response As Integer)
… (错误处理代码) End Sub 其中DataErr返回一个错误号。Response的值缺省为1,表示显示错误信息,该值为0表示程序继续执行。 2. Reposition事件 当用户单击Data控件上某个箭头按钮,或者在代码中使用了某个Move或Find方法使某条新记录成为当前记录时,将激发Reposition事件。

19 3. Validate事件 在一条不同的记录成为当前记录之前,Update方法之前(用UpdateRecord方法保存数据时除外)及Delete、Unload或Close操作前,会发生该事件。其语法格式如下: Private Sub object_Validate (Action As Integer, Save As Integer) … (事件处理代码) End Sub 其中Action是一个整数,用来指示引发这种事件的操作。Save是一个逻辑表达式,用来表示被连接的数据是否改变。

20 数据控件的方法 数据控件和其他控件一样也有自己的一些方法,常用的有Refersh、UpdataRecord、UpdataControls和Colse方法。 1. Refresh方法 该方法主要用来建立或重新显示与Data控件相连接的数据库记录集。若在程序运行时修改了数据控件的DatabaseName、ReadOnly、Exclusive或Connect属性,就必须使用该方法来刷新记录集。该方法执行后,记录指针将指向记录集中的第一条记录。 2. UpdateRecord方法 通过该方法可以将数据绑定控件上的当前内容写入到数据库中,即可以在修改数据后调用该方法来确认修改。用这种方法在Validate事件期间将被连接的当前内容保存到数据库中,而不再激发Validate事件。

21 3. UpdateControls方法 通过该方法可以将数据从数据库中重新读入到数据绑定控件中,即可以使用该方法放弃对数据绑定控件中数据的修改。 4. Close方法 该方法主要用于关闭数据库或记录集,并且将该对象设置为空。 注意:在关闭数据库或记录集之前,必须使用Updata方法更新数据库或记录集中的数据,以保证数据的正确性。

22 记录集对象(Recordset) 在VB中数据库表是不能直接被访问的,VB6.0通过Microsoft Jet 3.51数据库引擎提供的记录集(Recordset)对象来检索和显示数据库记录。一个Recordset对象表示一个或多个数据库表中对象集合的多个对象,或运行一次查询所得到的记录结果。一个Recordset对象相当于一个变量,与数据库表相似,记录集也是由行和列组成的,但不同的是记录集可以同时包含多个表中的数据。 VB的Jet数据库引擎提供了大量的记录集属性和方法。 1. Recordset对象的属性 Recordset对象的常用属性有BOF和EOF属性、Absolute属性、Bookmark属性、RecordCount属性和Position属性。

23 (1) BOF和EOF属性 这两个属性用来指示记录指针是否指向了第一条记录之前或最后一条记录之后。如果这两个属性同时为True表示该记录集中无任何记录。 (2) AbsolutePosition属性 该属性用于返回当前记录的序号。但不能将其作为记录编号的代替物,因为当执行了删除、添加、查询等操作后,记录的位置可能会改变。 (3) Bookmark属性 该属性返回或设置当前记录集指针的书签,Bookmark的采用的是String类型。在程序中可以使用该属性重定位记录集的指针。下列语句使指针移到其他位置后迅速返回原位: mybookmark=Data1.Recordset.BookMark ' 设置书签保存当前记录指针位置

24 Data1.Recordset.MoveFirst ' 将记录指针移动到第一条记录
Data1.Recordset. BookMark=mybookmark ' 使记录指针返回到原位置 (4) RecordCount属性 该属性是只读属性,用来获取记录集中记录数。在多用户环境中,该属性返回的值可能是一个不准确的数,这与记录集对象被刷新的频率有关。为了获得准确的数据,在使用该属性前应先调用MoveLast方法。 2. Recordset对象的方法 Recordset对象的常用方法有AddNew方法、Edit方法、Delete方法、Move方法和Find方法。

25 (1) AddNew和Edit方法 AddNew方法为数据库表添加一条记录。调用该方法将清除数据绑定控件中的所有内容,并且将一条空记录添加到记录集的末尾。 Edit方法使当前记录集进入可以被修改状态。 新添加或修改后的记录,只有在执行了Update方法或通过Data控件移动当前记录时,才会添加到数据库文件中。 (2) Delete方法 该方法删除记录集中的当前记录。记录删除后,其内容仍显示在数据绑定控件中,应使用Move方法移动记录指针。删除记录时应先检查与该记录相关的关系后再删除,若数据库中存在某种必要的引用,则无法删除被引用记录。

26 (3) Move方法 该方法用于记录指针的移动。常用与浏览数据库中的数据。包括以下4种方法: l MoveFirst:使记录集中的第一条记录成为当前记录。 l  MoveLast:使记录集中的最后一条记录成为当前记录。 l MoveNext:下移一条记录,使下一条记录成为当前记录。 l  MovePrevious:上移一条记录,使上一条记录成为当前记录。 当一个记录集刚被打开时,第一条记录为当前记录。

27 (4) Find方法 该方法用于在Dynaset和快照类型的记录集中,查找符合指定条件的记录。若找到符合条件的记录则将记录指针指向该记录,并将Recordset对象的Nomatch属性设为True。否则将指针指向记录集的末尾,并将Recordset对象的Nomatch属性设为False。包括以下4种方法: l        FindFirst:查找符合条件的第一条记录。 l        FindLast:查找符合条件的最后一条记录。 l        FindNext:查找符合条件的下一条记录。 l        FindPrevious:查找符合条件的上一条记录。 如语句: Data1.Recordset.FindFirst "姓名 like '李'" ' 查找姓名中包含“李”的第一条记录 【例12-2】

28 12.4 使用ADO控件 12.4.1 ADO数据控件的属性和方法
ADO(ActiveX Data Object)数据访问接口,是美国微软公司提出的长期的数据访问策略。用户可以使用ADO快速建立数据库连接,并通过它方便地操作数据库。 ADO数据控件的属性和方法 ADO数据控件与VB内部控件Data控件很相似,用户可以利用其属性、方法和事件快速地创建与数据库的连接。 1. ADO数据控件与数据库相关的常用属性 (1) ConnectionString属性 该属性是一个字符串,可以包含一个连接所需的所有设置值,在该字符串中所传递的参数是与驱动程序相关的。例如ODBC驱动程序允许该字符串包含驱动程序、提供者、缺省的数据库、服务器、用户名称以及密码等。该属性的参数如表12-2所示。

29 表12-2 ConnectionString属性的参数
参 数 说 明 Provider 指定用于连接的数据源名称 File Name 指定基于数据源的文件名(如,一个永久性数据源对象) Remote Provider 指定在打开一个客户端连接时使用的数据源名称 Remote Server 指定打开客户端连接时使用的服务器的路径与名称 (2) UserName 当数据库受密码保护时,需要指定该属性。与Provider属性类似,该属性可以在ConnectionString中指定。如果同时提供了一个ConnectionString属性以及一个UserName属性,则ConnnectionString中的值将覆盖该属性的值。

30 (3) Password 在访问一个受保护的数据库时是必须的。与Provider属性和UserName属性类似,如果在ConnectionString属性中指定了密码,则将覆盖在该属性中指定的值。 (4) RecordSource 该属性通常包含一个数据库表名、一个查询或一个存储过程调用,用于决定从数据库中检索什么信息。 (5) CommandType 该属性用于指定RecordSource属性的取值类型是一个表的名称、一个查询、一个存储过程还是一个未知的类型,如表12-3所示。

31 ADO控件的属性一般可以通过控件的属性页进行设置。 【例12-3】
表12-3 CommandType属性的取值 常 数 说 明 8 adCmdUnknown CommandText属性中的命令类型未知(缺省值) 1 adCmdText 为一条SQL语句 2 adCmdTable 为一个数据库表名 4 adCmdStoredProc 为一个存储过程 ADO控件的属性一般可以通过控件的属性页进行设置。 【例12-3】

32 2. ADO Recordset对象的方法 除了与Data数据控件相似的UpDateControls方法、UpDataRecord方法、AddNew方法、Delete方法和Move方法外,ADO常用的方法还有CancelUpdate和UpdateBatch方法。 (1) CancelUpdate方法 取消添加、修改记录的操作,恢复到更改以前的状态。 (2) UpdateBatch方法 保存添加的记录或修改以后的内容。

33 使用数据窗体向导 使用数据窗体向导的步骤如下: ① 从“外接程序”菜单或“添加窗体”对话框中启动“数据窗体向导”,若以前使用过该向导,并保存了配置文件,在图12-22所示的“数据窗体向导—介绍”对话框中可以装载原来的设置,并单击“下一步”按钮。 ② 在打开的“数据窗体向导—数据库类型”对话框中,选择本地数据库Access或远程数据库Remote(ODBC)的数据库类型,选择完毕后单击“下一步”按钮。 ③ 根据上面用户的选择,将打开不同的对话框。图12-23所示为Access的“数据窗体向导—数据库”对话框,图12-24所示为Remote(ODBC)的“数据窗体向导—连接信息”对话框。本例选择了本地硬盘上的“成绩管理.mdb”Access数据库。单击“下一步”按钮。

34 ④ 在“数据窗体向导—From”中,用户可以指定窗体名称、窗体布局样式和绑定类型。在该对话框中VB为用户提供了5种窗体布局方式,当选择了某种样式后,在预览区可以看到大体的外观,如图12-25所示。本例选择了单个记录、ADO控件,窗体名为frmChengji(代码中用),单击“下一步”。

35 ⑤ 在“数据窗体向导—数据源”对话框中,指定某一表为数据源,并从可用字段中选择需要显示在窗体中的字段,调整显示字段的排列顺序,设置排序依据,设置完毕后单击“下一步”按钮。
⑥ 在“数据窗体向导—控件选择”对话框中,用户可以选择窗体中出现的可选按钮控件(删除、添加、刷新等)。单击“下一步”按钮。 ⑦ 在“数据窗体向导—已完成”对话框中,用户可以将以上各项设置保存成配置文件以备今后继续使用。

36 12.5 习题 (8) 单击“完成”按钮,VB将自动生成窗体及主要代码,如图12-26和图12-27所示。
至此一个具有基本数据库管理功能的应用程序设计完毕,用户可以在此基础上对代码或窗体控件进行修改,以增强程序的功能。若希望程序启动时直接显示数据窗体,应在“工程”菜单中设置“工程属性”,将数据窗体指定为启动窗体。 12.5 习题


Download ppt "第12章 数据库访问技术 本章主要内容: ● 数据库的概念 ● Access数据库 ● 使用数据控件 ●  使用ADO控件."

Similar presentations


Ads by Google