




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第12章 数据库应用,12.1 数据库基本概念 在实际应用中,关系数据库是应用较为广泛的数据库。关系模型建立在严格的数学理论基础之上,其概念清晰、简单,能够用统一的结构来表示实体集和它们之间的联系,另外,结构化查询语言SQL为关系数据库提供了数据访问标准。 1数据库 是按一定结构存储在计算机存储设备上的相互关联的数据的集合,它具有较小的冗余,是多种应用数据的集成,并可被多个应用所共享。 2表 是关系数据库中存储数据的基本单位,是由行、列组成的二维表格。如:“职工部门”表、“职工档案”表和“职工工资”表分别见表12-1、表12-2、表12-3。,3字段 表中的一列称为一个字段,每个字段都有字段名、字段数据类型和字段宽度。,4表结构 一个表所包含的所有字段名、字段数据类型和字段宽度构成了表结构。“职工部门”表、“职工档案”表和“职工工资”表的表结构分别见表12-4、表12-5、表12-6。这里的表结构以Access数据库表的结构为例,在其他数据库中的表结构与Access类似,但不同的数据库存在一定的差别。,5记录 表中的一行称为一个记录,它由若干字段组成。 6主关键字段 如果表中某个字段或某几个字段的组合能惟一地确定表中的一条记录,则称该字段或这几个字段的组合为关键字段,一个表可以有多个关键字段,其中,有一个是主关键字段,其余的是候选关键字段。 7外关键字段 如果一个表中的字段或字段组合不是该表的关键字段,但它们是另外一个关联表的关键字段,则称其为该表的外关键字段。如:“职工部门”表的“部门编号”是主关键字段,“职工档案”表的“部门编号”是外关键字段,通过主关键字段和外关键字段可以实现表与表之间的关联。,8表间关系(关联) 表间关系是通过主关键字段和外关键字段建立表与表之间的关联。表间关系有三种形式:一对一、一对多和多对多。如:“职工部门”表与“职工档案”表通过“部门编号”字段关联,是一对多的关系;“职工档案”表与“职工工资”表通过“职工编号”字段关联,是一对一的关系。 9索引 索引的目的是为了提高查询的速度。在一个表中可以建立多个索引,但只能有一个主索引。,12.2 常用SQL语句 结构化查询语言(Structured Query Language,SQL)是关系数据库的标准语言,不仅具有丰富的数据操纵功能,而且具有数据定义和数据控制功能,是集数据操纵、数据定义和数据控制功能于一体的关系数据库语言。 12.2.1 Select语句 1Select语句的语法格式 Select语句实现数据的查询功能,包含多个子句。其语法格式如下:,SELECT ALL|DISTINCT|TOP n PERCENT 字段列表 INTO 新表名 FROM 表名列表 WHERE 查询条件表达式 ORDER BY 排序字段列表 ASC|DESC GROUP BY 分组字段列表 HAVING 分组条件表达式 说明: (1)SELECT子句后可以包含多个字段名,相互间用逗号分隔,可以用一个星号“*”,表示查询表中的所有字段,也可以使用统计函数对数据进行统计,SQL语句常用统计函数见表12-7;ALL表示查询表中所有满足条件的记录(默认,可以省略);DISTINCT表示去掉查询结果中的重复记录;TOP n表示仅返回前n条记录;TOP n PERCENT表示仅返回前n%的记录; 默认情况下,查询结果中的列名就是相应的字段名,也可以用As关键字为列或表达式指定别名。,(2)INTO子句表示将查询结果保存到一个新的数据表,可以省略; (3)FROM子句表示从哪些表中查询数据,如果有多个表,相互之间用逗号分隔; (4)WHERE子句表示查询的条件,支持关系运算符和布尔运算符; (5)ORDER BY子句表示将查询的结果按哪些字段排序,如果有多个字段,相互之间用逗号分隔;ASC表示升序(默认,可以省略),DESC表示降序; (6)GROUP BY子句表示将查询的结果按哪些字段分组,主要用于分组统计,一般与统计函数配合使用,而且在分组统计结果中,只能有分组字段和统计字段; (7)HAVING子句表示对分组统计结果设置条件,仅返回满足条件的分组统计结果,该子句与GROUP BY子句配合使用,支持关系运算符和布尔运算符。,2多表查询 对数据库表数据进行查询时,经常需要对多个表的数据查询,为了实现多表查询,可以在FROM子句后写上这些表的表名,在WHERE子句后写上这些表的连接条件字段,其语法格式如下: SELECT ALL|DISTINCT|TOP n PERCENT 字段列表 INTO 新表名 FROM 表名1,表名2, WHERE表名1.字段名=表名2.字段名 一般情况下,两个表的连接条件字段是这两个表的公共字段,因此,需要加上表名区分是哪一个表的字段,即表名.字段名。,12.2.2 Insert语句 Insert语句用于向数据表中插入记录,其语法格式如下: INSERT INTO 表名 VALUES(字段值1,字段值2,) 或 INSERT INTO 表名(字段名1,字段名2,) VALUES(字段值1,字段值2,),12.2.3 Update语句 Update语句用于更新(或修改)数据表中满足条件的记录,该语句先找出满足条件的记录再修改对应字段的值,其语法格式如下: UPDATE 表名 SET 字段名1=字段值1,字段名2=字段值2, WHERE 条件表达式,12.2.4 Delete语句 Delete语句用于删除数据表中满足条件的记录,其语法格式如下: DELETE FROM 表名 WHERE 条件表达式,12.3 ADO数据控件 在Visual Basic中,主要提供了三种数据访问对象作为数据库访问接口,即数据访问对象DAO(Data Access Object,用工具箱中的Data控件实现本地数据库的访问)、远程数据对象RDO(Remote Data Object)和ActiveX数据对象ADO(ActiveX Data Object,用ADO数据控件或ADO对象实现本地或远程数据库的访问)。目前,普遍使用的是ADO。 12.3.1 ADO简介 ADO是建立在OLE DB之上的数据库访问技术,OLE DB为不同的数据源提供了通用的高效数据访问方法,这些数据源包括关系和非关系数据库、电子邮件、文本、图形、自定义业务对象等。此前传统的数据库访问接口是开放数据库连接ODBC(Open DataBase Connectivity)。 ADO数据控件(ADODC)用于访问OLE DB所支持的数据库,ADODC是ActiveX控件,使用前要在“工具箱”的空白区域右击,在快捷菜单中单击“部件”命令,在“部件”对话框的“控件”选项卡中,选中“Microsoft ADO Data Control 6.0(SP6)(OLEDB)”,将ADODC添加到工具箱中。,12.3.2 ADODC与数据库的连接 以ADODC与Access数据库的连接为例,与其他数据库的连接类似。 假设在本地计算机有一个Access数据库“D:职工管理.mdb”,数据库中包含“职工部门”表、“职工档案”表和“职工工资”表,建立ADODC与该数据库的连接步骤如下: (1)将ADODC添加到窗体上,默认名称为ADODC1; (2)在ADODC1上右击,在快捷菜单中选择“ADODC属性”命令,在“属性页”对话框的“通用”选项卡中设置ADODC1与数据源的连接,如图12-1所示。 ADODC连接方式有三种: 使用Data Link文件:数据链接文件是定义与数据库如何连接的描述文件; 使用ODBC数据资源名称:通过ODBC连接数据库,这是传统的连接数据库的方法,使用这种连接之前,要先创建一个数据源名DSN(Data Source Name)来描述数据库的类型、位置等信息;,使用连接字符串:是最常用的数据库连接方式,单击“生成”按钮,按照系统提示可自动生成连接字符串。 (3)单击“生成”按钮,在“数据链接属性”对话框中,选择“Microsoft Jet 4.0 OLE DB Provider”,如图12-2所示,在对话框的下一个界面,选择或输入数据库名称“D:职工管理.mdb”,如图12-3所示,单击“测试连接”按钮,弹出“测试连接成功”对话框,单击“确定”按钮,返回“属性页”对话框,在文本框中生成完整的连接字符串:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:职工管理.mdb;Persist Security Info=False。连接字符串包含数据库引擎、数据源和安全性设置。 (4)单击“属性页”对话框中的“记录源”选项卡,可以选择命令类型、表或存储过程名称,这里选择命令类型为2-adCmdTable,接着,选择相应的表,如图12-4所示,单击“确定”按钮完成ADODC与该数据库的连接。,记录源的命令类型有四种: 8-adCmdUnknown和1-adCmdText:用SQL语句生成记录集; 2-adCmdTable:使用数据表作为记录集; 4-adCmdStoredProc:使用存储过程生成记录集。,12.3.3 ADODC的常用属性 (1)ConnectionString属性 ADODC与数据库连接的字符串。 (2)CommandType属性 ADODC连接的记录源的命令类型,有四种类型。 (3)RecordSource属性 ADODC连接的记录源,可以是表或存储过程名称。 (4)UserName和Password属性 用于设置访问数据源的用户名和密码。,12.3.4 ADODC的记录集对象 在Visual Basic中,数据库表是不允许直接访问的,只能通过记录集Recordset对象对其进行浏览和操作,记录集对象可以表示一个或多个数据库表中字段的集合,记录集与数据库表很相似,都是由行、列组成,但记录集的数据可以来自一个或多个表。 1ADODC的Recordset对象的常用属性 (1)BOF属性和EOF属性 BOF属性用于判断记录指针是否超过第一条记录,如果超过第一条记录该属性值为True,否则为False;EOF属性用于判断记录指针是否超过最后一条记录,如果超过最后一条记录该属性值为True,否则为False。 (2)RecordCount属性 返回Recordset对象中的记录数。 (3)AbsolutePosition属性 返回Recordset对象中当前记录的序号(从0开始,即第一条记录的序号为0),该属性是只读属性。,(4)Bookmark属性 返回或设置Recordset对象中当前记录的书签,使用该属性可以保存当前记录的位置,以便随时返回该记录。 (5)Fields属性 Recordset对象中当前记录的字段集合,可通过Fields(序号),序号从0开始;或Fields(“字段名“)访问当前记录各字段的值。 访问Recordset对象中当前记录各字段的值,也可以通过(“字段名”)、!字段名、!字段名等实现。 (6)Sort属性 设置Recordset的排序字段。,2ADODC的RecordSet对象的常用方法 (1)MoveFirst、MovePrevious、MoveNext、MoveLast方法 这四个方法分别是将当前记录指针指向第一条记录、上一条记录、下一条记录、最后一条记录。,(2)Move方法 将当前记录指针向前或向后移动指定的记录数,其语法格式如下: Move n 当n为正整数时表示向后移动记录指针,当n为负整数时表示向前移动记录指针。 (3)AddNew方法 在记录集中添加一条新记录,一般与Update方法配合使用。 (4)Delete方法 删除当前记录,即记录指针所指的记录。 (5)Update方法 将修改后的记录内容保存到数据库表中。 (6)CancelUpdate方法 取消数据更新。,(7)Find方法 在Recordset中查找满足条件的记录,如果找到满足条件的记录,则记录指针指向该记录,否则,记录指针将置于记录集的末尾。,注意:添加新记录、删除记录或者修改记录数据后,只有执行了Update方法或者移动当前记录指针后,才能将数据保存到数据库表中。,12.4 基本数据绑定控件与高级数据绑定控件 12.4.1 基本数据绑定控件 为了用控件显示记录集的数据,需要将记录集的某个字段或者整个记录集与控件绑定起来。在Visual Basic的标准控件中,具有数据绑定功能的控件有:标签(Label)、文本框(TextBox)、列表框(ListBox)、组合框(ComboBox)、图片框(PictureBox)、图像控件(Image)、复选框(CheckBox)。还有早期的ActiveX控件MSFlexGrid等。,要将基本数据绑定控件与记录集绑定需要设置的属性如下: (1)DataSource属性:用于设置与该控件绑定的数据源的名称,如:ADODC、数据环境等的名称。 (2)DataField属性:用于设置在该控件上显示的数据源的字段名,但MFlexGrid等表格控件可以显示整个记录集,因此,没有该属性; (3)DataMember属性:当DataSource属性被设置为一个数据环境(DataEnvironment)时,由于数据环境可以同时包含多个数据库表、视图、存储过程和SQL语句,需要指出通过该属性连接到哪一个数据库表、视图、存储过程和SQL语句。 注意:对于基本数据绑定控件,一般只需要设置DataSource属性和DataField属性,就可以将控件与记录集的某个字段绑定。,12.4.2 高级数据绑定控件 1DataList和DataCombo控件 DataList和DataCombo控件是ActiveX控件,使用前要在“部件”对话框的“控件”选项卡中,选中“Microsoft DataList Controls 6.0(SP3)(OLEDB)”,然后才能添加到窗体中。DataList和DataCombo控件的最基本区别是DataCombo控件可以输入数据。 DataList和DataCombo控件的常用属性如下: (1)DataSource属性 设置需要绑定的数据源。 (2)DataField属性 设置需要绑定的数据源的字段。 (3)RowSource属性 设置DataList和DataCombo控件的列表项来自哪个数据源。 (4)ListField属性 设置DataList和DataCombo控件的列表项来自数据源的哪个字段。,(5)BoundColumn属性 设置DataList和DataCombo控件的绑定字段是RowSource中的哪个字段,默认为ListField属性的设置字段,可以设置与RowSource中的其他字段绑定,这样,通过BoundText属性可以获得RowSource中当前记录绑定字段的值。 由于BoundColumn属性和ListField属性可以分别设置不同的字段,但又是同一个数据源,因此,可以获得同一条记录不同字段的值,对于数据操作很灵活。 (6)BoundText属性 返回BoundColumn属性绑定字段当前记录的值,如果没有设置BoundColumn属性,则返回DataList和DataCombo控件中选定的项或DataCombo控件中输入的项。 (7)Text属性 返回DataList和DataCombo控件中选定的项或DataCombo控件中输入的项。,2DataGrid控件 DataGrid控件是ActiveX控件,使用前要在“部件”对话框的“控件”选项卡中,选中“Microsoft DataGrid Control 6.0(SP6)(OLEDB)”,然后才能添加到窗体中。DataGrid控件添加到窗体上后,可以编辑、删除、重排DataGrid控件的列,也可以添加列标头,调整列的宽度等。 DataGrid控件的常用属性如下: (1)DataSource属性 设置需要绑定的数据源。 (2)AllowAddNew、AllowDelete、AllowUpdate属性 这三个属性的含义分别为:是否允许添加新记录、删除记录、更新记录。,【例12-1】用ADO数据控件(ADODC)设计一个职工管理数据库系统。 整个系统包括三个大的部分:职工信息查询、数据管理和退出系统。职工信息查询包括:职工部门信息查询、职工档案信息查询、职工工资信息查询、职工档案部门信息查询(从“职工档案”表和“职工部门”表中查询)、职工档案工资信息查询(从“职工档案”表和“职工工资”表中查询);数据管理包括:职工部门信息管理、职工档案信息管理、职工工资信息管理。职工管理数据库系统菜单见表12-8。,12.5 使用数据环境访问数据库 数据环境提供了一个交互式的设计环境,通过设置Connection对象和Command对象的属性,可以快速完成与数据源的连接,数据环境可以连接不同的数据库、不同的表、视图、存储过程和SQL语句。 12.5.1 创建数据环境 添加数据环境的方法有如下两种: (1)选择“工程”菜单中的“添加Data Environment”命令; (2)选择“文件”菜单中的“新建工程”命令,在“新建工程”对话框中,双击“数据工程”图标。,创建数据环境的步骤如下: (1)添加一个数据环境DataEnvironment1,在其中自动创建一个Connection对象Connection1,如图12-10所示,在Connection1上右击,在快捷菜单中单击“属性”命令,在“数据链接属性”对话框中,选择“Microsoft Jet 4.0 OLE DB Provider”(以Access数据库为例,连接其他数据库的方法类似,),在对话框的下一个界面,选择或输入数据库名称“D:职工管理.mdb”,单击“测试连接”按钮,弹出“测试连接成功”对话框,单击“确定”按钮,Connection1与数据库建立了连接; (2)单击“标准”工具栏上的“数据视图窗口”按钮,打开数据视图窗口,分别单击“Connection1”和“表”前的“+”号,可以看到数据源中包含的表,如图12-11所示,将“表”文件夹拖放到DataEnvironment1中,数据源中的“表”被拖到了DataEnvironment1中,如图12-12所示,同理,“视图”和“存储过程”也可以做类似的拖动。,12.5.2 通过数据环境自动生成数据绑定控件 创建了数据环境后,选择“窗口”菜单中的“水平平铺”命令,将数据环境和设计窗体水平平铺在一起,可以直接将数据环境包含的表或者表中的字段直接拖放到窗体上,将自动生成相应的数据绑定控件,也可以通过命令按钮改变记录指针的位置,对数据进行浏览,还可以实现查询、添加、删除、修改、更新记录等操作;另外,将数据环境包含的表或者表中的字段直接拖放到数据报表中,可以生成数据报表中的字段。 但需要强调的是:对数据环境中的记录集,如:“职工部门”表,编写程序改变记录指针的位置以及实现查询、添加、删除、修改、更新记录等操作时,记录集名称前需要加“rs”。,12.6 数据报表 选择“工程”菜单中的“添加Data Report”命令,将数据报表添加到当前工程中,同时,在“工具箱”中自动添加了一个“数据报表”标签,其中包含了制作报表的六个控件,如图12-13所示。数据报表的创建一般用数据环境作为数据源。“数据报表”标签中报表控件的功能见表12-9。报表设计器包括五个默认的数据区域,这五个数据区域的功能见表12-10。,【例12-2】创建职工档案报表。 (1)添加数据环境DataEnvironment1,建立与Access数据库“D:职工管理.mdb”的连接,并将表添加到数据环境中; (2)添加1个数据报表DataReport1,设置DataReport1的DataSource属性值为DataEnvironment1,DataMember属性值为“职工档案”,将数据环境与数据报表水平平铺,将“职工档案”表中需要的字段拖放到细节区,此时,在细节区自动产生相应的报表标签和报表文本框两种控件,将自动产生的报表标签拖放到页标头区; (3)在报表标头区画1个报表标签,设置其Caption属性值为“职工档案报表”,FontSize属性值为三号;在页注脚区右击,在快捷菜单中分别选择“插入控件”中的“当前日期(长格式)”命令和“当前页码”命令; (4)显示报表,如图12-14所示,其语法格式如下: 数据报表名.Show,(5)打印报表,其语法格式如下: 数据报表名.PrintReport (ShowDialog, Range, PageFrom, PageTo) 说明: (1)ShowDialog:是否显示“打印”对话框,默认值为False; (2)Range, PageFrom, PageTo分别为打印范围、起始页和终止页,这三个参数都是可选的参数。 注意:设计数据报表时,一定要在属性窗口中先设置数据报表的DataSource属性值和DataMember属性值。,12.7 使用数据窗体向导访问数据库 数据窗体向导是Visual Basic提供的一个功能强大的数据库应用程序生成工具,利用这个向导可以很方便地创建数据库访问窗体,数据窗体向导是外接程序,使用前需要通过“外接程序”菜单中的“外接程序管理器”命令,将其添加到“外接程序”菜单中。,【例12-3】创建主表/明细表窗体。 (1)选择“外接程序”菜单中的“数据窗体向导”命令,在“数据库类型”对话框中,选择“Access”,在“数据库”对话框中,选择或输入数据库名称“D:职工管理.mdb”; (2)在下一步对话框中,选择“主表/细表”,如图12-15所示;在“主表记录源”对话框中,选择“职工部门”表,并选择所需字段,如图12-16所示;在“详细资料记录源”对话框中,选择“职工档案”表,并选择所需字段,如图12-17所示;在“记录源关系”对话框中,选择两个表的链接字段“部门编号”,如图12-18所示,单击“完成”按钮,生成主表/明细表窗体。 (3)将创建的主表/明细表窗体设为启动窗体,程序运行结果如图12-19所示。,注意:运行主表/明细表窗体时,如果系统提示错误,请选择“工程”菜单中的“引用”命令,在“引用”对话框中,选中“Microsoft ActiveX data Objects 2.5 Library”,也可以选择“2.6 Library”、“2.7 Library”或“2.8 Library”等。,12.8 ADO对象模型 ADO对象模型主要包含三个常用的对象:Connection对象、Command对象、Recordset对象。Connection对象也称连接对象,用于建立与数据库的连接;Command对象也称命令对象,用于对数据库表进行记录的添加、删除、修改、查询等操作;Recordset对象也称记录集对象,用于访问Connection对象或Command对象返回的记录集。 12.8.1 ADO对象的常用属性和方法 1Connection对象 Connection对象的常用属性见表12-11,常用方法见表12-12。,2Command对象 Command对象的常用属性见表12-13,常用方法见表12-14。,3Recordset对象 Recordset对象的常用属性,除了ADODC的Recordset对象的常用属性:BOF属性、EOF属性、RecordCount属性、AbsolutePosition属性、Bookmark属性、Fields属性和Sort属性外,ADO对象模型的Recordset对象的常用属性还有: (1)ActiveConnection属性 设置Recordset对象所用的连接。 (2)Source属性 设置Recordset对象的数据源,可以是表名、SQL语句等。 (3)State属性 返回Recordset的状态,其属性值见表12-15。,(4)CursorLocation属性 设置记录集的位置,属性取值为:adUseClient(在客户端)或adUseServer(在服务器端,默认)。 (5)CursorType属性 设置记录集的游标类型,属性取值为:adOpenDynamic(动态游标,可以做记录的添加、删除、修改)、adOpenForwardOnly(仅向前游标,默认)、adOpenKeyset(键集游标)、adOpenStatic(静态游标,只能做查询)。,(6)LockType属性 记录集的锁定类型,取值为:adLockReadOnly(只读方式,默认)、adLockPessimistic(保守式锁定,编辑时立即锁定数据源的记录)、adLockOptimistic(开放式锁定,仅在调用Update方法时锁定数据源的记录)、adLockBatchOptimistic(开放式成批更新)。 Recordset对象的常用方法,除了AD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年西藏自治区选调生招聘面试模拟题及答题要点解析
- 高三后期复习反馈改进措施
- (2025年标准)股东合作承诺协议书
- 中班幼小衔接社交能力计划
- 咨询公司总账会计岗位职责
- 2024-2025学年九年级下学期班级纪律管理工作计划
- 2025年网络安全中级技能挑战模拟题及答案详解
- 物流仓储招标代理质量控制措施
- 物业品质管理部安全职责
- 鲁棒轨迹规划算法-洞察及研究
- 2025年9月新版用工合同(合作协议书)范本(可规避风险)
- 人民调解员培训课件
- 血液透析学习汇报
- 2025重庆机场集团有限公司社会招聘202人考前自测高频考点模拟试题及完整答案详解1套
- 安徽省江南十校2025年物理高一下期末检测模拟试题含解析
- 培训钉钉课件
- 新建洞室储气库压缩空气储能系统的经济性及成本分析
- 砖厂职业危害管理制度
- 肝功能障碍患者的麻醉管理要点
- 2025年粮油仓储管理员(高级)职业技能鉴定考试练习题库(含答案)
- 【课件】新高三启动主题班会:启航高三逐梦未来
评论
0/150
提交评论