版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章数据库编程1flyxb@163.com第7章数据库编程1flyxb@163.com教学目标了解关系数据库的基本知识了解数据库的结构化查询语言SQL。了解数据库访问技术和数据访问对象。熟练掌握使用数据控件和绑定控件创建数据窗体的方法和步骤。掌握使用数据环境设计器创建数据访问对象,并在此基础上进行数据窗体和数据报表的设计。掌握使用数据窗体向导创建数据窗体,并通过阅读所生成的代码了解如何用编写代码的方法创建和运用数据对象。2flyxb@163.com教学目标了解关系数据库的基本知识2flyxb@163.com7.关系数据库数据库就是按照一定的数据模型来组织和存放的相关数据的集合。关系数据库是以关系模型为基础的数据库,主要特点是使用二维表的方式组织数据,通过若干个表(Tabel)存储数据,并利用关系(Relation)将这些表联系在一起。常见的有FoxPro、Access、Sybase、Oracle和SQLServer等。3flyxb@163.com7.关系数据库数据库就是按照一定的数据模型来组织和存放的相关关系数据库的基本概念1.表在关系数据库中,数据以二维表(行和列)的形式存储。一般情况下,可将描述不同事物的数据分别保存在数据库中不同的表中,例如与部门相关的信息保存在部门表中、员工的基本信息保存在员工表中。例如下所示的员工表。工号姓名部门ID性别出生日期电话01006陈镭1男1985-10-98837000601007罗薇1女1987-4-298837000701008王亮2男1986-6-188837000801012金君君2男1987-5lyxb@163.com关系数据库的基本概念1.表工号姓名部门ID性别出生日期电话关系数据库的基本概念2.记录表中的每一行表示一条记录,一条记录描述事物的一个实例。例如员工表中的每一行描述一个员工的基本信息。3.字段表中的每一列称为一个字段,每一个字段描述事物的一个属性。例如,上述员工表中有6列即6个字段,分别描述员工的工号、姓名等6个不同属性。创建一个数据库表时,要设置每个字段的数据类型(如文本、数值、日期等)和最大长度等属性。5flyxb@163.com关系数据库的基本概念2.记录5flyxb@163.com关系数据库的基本概念4.主键主键惟一标识了表的每一行。主键可以是一个字段,也可以是多个字段的组合。5.外键外键也是由一个字段或多个字段组成,而这些字段又是其它表的主键。通过外键可以与主键所在表建立关联。6.关系关系是建立在两个表的公共字段(一般是主键和外键)之间的一种关联。关系类型可以是一对一、一对多或多对多。6flyxb@163.com关系数据库的基本概念4.主键6flyxb@163.com7.2结构化查询语言SQL结构化查询语言SQL(StructureQueryLanguage)是关系数据库操作的标准语言。SQL语言用简洁高效的语法实现对关系数据库的各种操作,分为数据定义语言(DDL)命令和数据操作语言(DML)命令。DDL命令创建和定义新的数据库、字段和索引;而DML命令完成从数据库中进行选择、插入、更新和删除等操作。7flyxb@163.com7.2结构化查询语言SQL结构化查询语言SQL(Struc最常用的数据操作命令。1.选择查询从一个或多个表中检索出所需的数据。SELECT字段列表FROM表名[WHERE条件][GROUPBY分组字段][ORDERBY字段]字段列表可以是一个字段或用逗号分隔的多个字段,也可以是由表达式表示的计算字段,如果要选择表中的所有字段,可用“*”代替。FROM子句用于指定查询的数据来源(一个或多个表)。WHERE子句用于构造查询条件。此条件表达式是由关系运算符或逻辑运算符构成的逻辑表达式。8flyxb@163.com最常用的数据操作命令。1.选择查询8flyxb@163.co1.选择查询例如,要从“员工”表中查询出所有姓“张”的员工姓名、性别和年龄,SQL语句为:SELECT姓名,性别,YEAR(NOW())-YEAR(出生日期)AS年龄FROM员工WHERE姓名Like“张%”GROUPBY子句用于对结果进行分组。分组中经常使用合计函数(又称聚集函数)对数据进行统计运算,它返回应用于一组记录的统计结果值。9flyxb@163.com1.选择查询例如,要从“员工”表中查询出所有姓“张”的员工姓常用的合计函数函数描述AVG返回指定字段的平均值COUNT返回选定记录的个数SUM返回指定字段中所有值的总和MAX返回指定字段中的最大值MIN返回指定字段中的最小值例如,统计男女员工的人数、最大年龄、平均年龄。SELECT性别,COUNT(*)AS人数,MAX(YEAR(NOW())-YEAR(出生日期))AS最大年龄,AVG(YEAR(NOW())-YEAR(出生日期))AS平均年龄FROM员工GROUPBY性别10flyxb@163.com常用的合计函数函数描述AVG返回指定字段的平均值COUNT2.插入记录(INSERTINTO语句)可添加一条或多条记录到数据表中。INSERTINTO表名(字段列表)VALUES(值列表)例如,在“员工”表中增加一条新记录:INSERTINTO员工(工号,姓名,性别,出生日期)VALUES(’03704’,'赵守一’,‘男’,#1988-6-1#)11flyxb@163.com2.插入记录(INSERTINTO语句)可添加一条或多条2.插入记录(INSERTINTO语句)将查询结果插入到另一表中的语句格式如下:INSERTINTO目标表名[(字段列表)]SELECT<字段列表>FROM<源表>例如,将“员工”表中1945年以前出生的员工记录添加到“退休员工”表中:INSERTINTO退休员工(姓名,性别,出生日期)SELECT姓名,性别,出生日期FROM员工WHERE出生日期<#1945-01-01#12flyxb@163.com2.插入记录(INSERTINTO语句)将查询结果插入到3.更新记录UPDATE表名SET字段1=表达式1[,字段2=表达式2,…][WHERE<条件>]例如,将所有员工的电话号码前加上一位“8”:UPDATE员工SET电话="8"&电话13flyxb@163.com3.更新记录UPDATE表名SET字段1=表达式14.删除记录删除记录的语句格式如下:DELETEFROM<表名>WHERE<条件>例如,删除“员工”表中1945年以前出生的员工记录。DELETEFROM员工WHERE出生年月<#1945-1-1#14flyxb@163.com4.删除记录删除记录的语句格式如下:14flyxb@163.7.3数据库访问技术7.3.1数据访问对象微软先后提供了3种数据访问对象:数据访问对象DAO(DataAccessObjects)远程数据对象RDO(RemoteDataObjects)ActiveX数据对象ADO(ActiveXDataObjects)这3种接口分别代表了微软数据访问技术的不同发展阶段。15flyxb@163.com7.3数据库访问技术7.3.1数据访问对象15flyx7.3.2ADO的主要对象(P225)ADO作为面向对象的数据访问接口,编程时主要涉及3个对象:连接对象(Connection):与数据库建立连接命令对象(Command):对数据进行各种操作记录集对象(RecordSet):存储在缓存中供访问处理的结果数据16flyxb@163.com7.3.2ADO的主要对象(P225)ADO作为面向7.3.3通过数据对象进行数据访问的方法和一般步骤(P225)方法特
点适用人员或场合数据控件Data(DAO)或Adodc(ADO)可以在设计时通过数据控件的属性页或属性窗口设置有关属性,只要将控件与数据控件绑定,几乎不需编写代码即可实现简单的数据访问数据对象编程和SQL语法都不熟悉的初学者,可简单快捷地对单一数据源进行访问数据窗体向导自动生成使用ADO,具有完整数据访问功能的窗体(包括绑定控件、ADO控件和程序代码)快速生成数据窗体供使用或学习借鉴17flyxb@163.com7.3.3通过数据对象进行数据访问的方法和一般步骤(P27.3.3通过数据对象进行数据访问的方法和一般步骤(P225)数据环境设计器用可视化方法创建ADO数据对象和SQL命令,在一个连接下可创建多个命令对象及其子命令、分组等,并在使用这些数据的窗体和报表设计中支持拖放编辑。可用直观的方式实现多种较复杂的数据操作不太熟悉ADO编程和SQL语法,但需要对多项数据源进行大量较复杂操作的读者编写代码完全用程序代码创建和设置、操作数据对象,编写代码的工作量较多,但最为灵活具有一定编程基础和熟悉SQL语法的读者,对数据可以任意方式进行访问外接的可视化数据管理器(VisData.exe)可对常见数据库进行简单的可视化操作,也能快速创建数据窗体,但它不支持最新的数据访问技术ADO。目前已较少使用18flyxb@163.com7.3.3通过数据对象进行数据访问的方法和一般步骤(P27.3.4数据控件Data和Adodc数据控件通过可视化的形式创建和运用数据对象,不用编写程序代码,只需通过简单的属性设置(主要是与数据库的连接属性和指定具体数据的记录源属性),就能连接到现有的数据库,并从中获取数据。其中,Data控件是基于DAO的数据控件,它属于VB标准控件,可直接在VB控件工具箱中找到。Adodc则是基于ADO的ActiveX控件,需要通过“工程”→“部件”添加到工具箱.19flyxb@163.com7.3.4数据控件Data和Adodc数据控件7.3.5数据绑定控件利用数据对象获得了数据库中的数据后,若要对这些数据进行查看和编辑,还需要使用显示和编辑数据的控件,并将这些控件与数据对象绑定起来。所谓绑定,就是使控件能直接显示和处理数据源中对应的数据,并且两者保持同步。VB工具箱中的文本框Text、列表框LisBoxt、组合框ComboBox、图片框PictureBox、Image等控件都可以通过DataSource、DataMember、DataFields属性与数据源(记录集或数据控件)绑定,用以显示和编辑数据。20flyxb@163.com7.3.5数据绑定控件利用数据对象获得了数据库中的数据后7.3.5数据绑定控件另外,VB还提供了一些功能更强大、使用更方便的ActiveX数据绑定控件,包括数据网格控件DataGrid、数据列表和组合框控件DBList/DBCombo以及DataList/DataCombo、MSHFlexGrid、RichTextBox和MSChart等控件。要想使用这些ActiveX控件,可选择“工程”菜单中的“部件”命令,从弹出的“部件”对话框中选中相应部件前的复选框,使其出现在工具箱中。21flyxb@163.com7.3.5数据绑定控件另外,VB还提供了一些功能更强大、1.DataGrid控件绑定的文本框控件Text只能显示和处理数据中当前一个记录的一个字段,而使用DataGrid控件则可同时显示和编辑整个二维数据表格。DataGrid控件的几个主要属性如表。数据类属性作用DataSource指定所绑定的数据源:ADO数据控件或记录集DataMember若数据源中包含多个成员,则该属性指定绑定的数据成员AllowAddNew是否允许添加记录AllowDelete是否允许删除记录AllowUpdate是否允许更新记录22flyxb@163.com1.DataGrid控件绑定的文本框控件Text只2.DataList和DataCombo控件属性名称说明举例绑定数据DataSource用于设置绑定的数据源Adodc1(记录源为“员工”表)DataMember在数据源包含多个成员的场合下,用于设置绑定数据源中的数据成员数据源为控件时,该项为空;数据源为数据环境时,为其中的某命令对象DataField设置与数据源绑定的字段名称部门ID列表项数据RowSource指定填充列表项的数据源Adodc2(记录源为“部门”表)RowMember在列表项的数据源包含多个成员的场合下,设置填充列表项的数据成员数据源为控件时,该项为空;数据源为数据环境时,为其中的某命令对象ListField指定填充列表项的字段部门名称BoundColumn用来选择从列表项数据源返回的字段部门ID23flyxb@163.com2.DataList和DataCombo控件属性名称说明举例7.4使用DAO的Data控件访问数据库1.Connect属性该属性用于返回和设置连接的数据库类型名称,可访问Access、dBase、Excel、FoxPro、Lotus、Paradox、Text
共7种数据库类型,默认为Access数据库类型。注意:只有安装了VBSP5后才能支持Access2000格式。2.DatabaseName属性设置和返回Data控件中数据源的名称和位置,可以包含路径。3.RecrodSource属性设置和返回与Data控件相关联的记录源,可以是数据库中的基本表或查询数据的SQL语句。24flyxb@163.com7.4使用DAO的Data控件访问数据库1.Connect[例7-1]使用DAO的Data控件访问数据库。设计一个简单的数据库管理应用程序,用于浏览和编辑Staff.mdb数据库的员工信息。Data25flyxb@163.com[例7-1]使用DAO的Data控件访问数据库。设计一①放置和设置Data控件。首先新建一个工程,用工具箱中的标准控件在窗体上添加一个Data数据控件。设置的属性如下表所示,其它属性取默认值。属
性作
用设
置
值Connect连接的数据库类型Access2000DatabaseName数据库文件的路径和名称相对路径Staff.mdb或绝对路径C:\VB\Staff.mdbRecrodSource记录源,可以是表或SQL命令文本员工26flyxb@163.com①放置和设置Data控件。首先新建一个工程,用工具箱中的标②放置和设置数据绑定控件。在窗体上放置若干标签、文本框Text1~Text4和OLE控件OLE1。属性设置如右表。对象DataSource属性DataField属性Text1Data1工号Text2姓名Text3性别Text4出生日期OLE1相片27flyxb@163.com②放置和设置数据绑定控件。在窗体上放置若干标签、文本框Te③运行调试程序将该窗体设为启动窗体,运行程序后通过单击Data控件两端的按钮,就可以看到绑定控件中的内容随着记录的变化而变化。由此可见,对于Access数据库的简单本地访问,使用Data数据控件很方便。但Data控件属于DAO对象,属于微软早期的技术,其编程模型和编程方法比较复杂,功能也较弱。若要开发针对其他数据库或较复杂的数据访问程序,建议采用ADO对象。28flyxb@163.com③运行调试程序将该窗体设为启动窗体,运行程序后通过单击D7.5使用ADO的Adodc控件访问数据库[例7-2]通过ADO控件创建数据访问窗体,如图7-4所示。该窗体用于显示和编辑数据库中选定部门“员工”表的数据,其中组合框用于选择部门,表格用于显示员工数据,ADO控件Adodc1和Adodc2用于连接数据库获取数据。29flyxb@163.com7.5使用ADO的Adodc控件访问数据库[例7-2]通1.添加和放置ActiveX数据控件该窗体中的Adodc控件和DataGrid、DataCombo控件都是ActiveX控件,在使用之前应先将这些控件添加到工具箱中。选择“工程”菜单中的“部件”命令,或在工具箱上单击鼠标右键,从弹出的快捷菜单中选择“部件”命令,打开“部件”对话框。在“部件”对话框中选中MicrosoftADODataControl6.0(OLEDB)、MicrosoftDataGridControl6.0(OLEDB)和MicrosoftDataListControls6.0(OLEDB),将Adodc、DataGrid和DataList、DataCombo控件添加到工具箱中。30flyxb@163.com1.添加和放置ActiveX数据控件该窗体中的Adodc控件2.设置ADO数据控件的主要属性⑴连接属性ConnectionString该属性为字符串变量,用来设置ADO控件和数据库连接的连接字符串,通过这个连接可以建立与数据源的连接信息,实现ADO控件与相应的数据库进行连接。该属性包含的内容较多,通常用可视化的方法通过ADO属性页来设置。
打开ADO属性页的方法:在窗体上用鼠标右击ADO数据控件,在弹出的快捷菜单中选择“ADODC属性”,或在“属性”窗口中单击ConnectionString属性右边的“…”按钮。31flyxb@163.com2.设置ADO数据控件的主要属性⑴连接属性Connect⑵Recordsource属性该属性用来设置与ADO连接的数据库中的记录源。在ADO属性页对话框中,通过“记录源”选项卡,可以从以下4种命令类型中选择一种:
8-adCmdUnknown:未知,为系统默认值。
1-adCmdText:文本命令类型。
2-adCmdTable:数据表。
4-adCmdStoredProc:存储过程。
32flyxb@163.com⑵Recordsource属性该属性用来设置与ADO3.设置数据绑定控件的数据属性将DataGrid1的DataSource属性设置为Adodc1,在DataGrid1控件上单击鼠标右键,从弹出的快捷菜单中选择“检索字段”,在打开的对话框中选择“是”按钮,这样“员工”表中的所有字段都将在DataGrid1的列标题中显示出来。右击DataGrid1,从弹出的菜单中选择“编辑”命令,对列表框的列宽进行调整。33flyxb@163.com3.设置数据绑定控件的数据属性将DataGrid1的3.设置数据绑定控件的数据属性为了用Adodc2获取的各部门名称填充组合框DataCombo1,,将组合框DataCombo1的相关属性按下表进行设置。属
性设置属性值RowSourceAdodc2ListField部门名称BoundColumn部门IDText选择部门34flyxb@163.com3.设置数据绑定控件的数据属性为了用Adodc2获取的4.根据需要编写代码动态改变数据控件的记录源方法1:将部门条件表达式作为记录集的Filter属性进行过滤。PrivateSubDataCombo1_Change()'组合框内容变化事件Adodc1.Recordset.Filter="部门ID='"&DataCombo1.BoundText&"'"EndSub35flyxb@163.com4.根据需要编写代码动态改变数据控件的记录源方法1:将部门条4.根据需要编写代码动态改变数据控件的记录源方法2:将部门条件表达式作为SQL命令Where子句的条件,重新设置Adodc1的DataSource属性。PrivateSubDataCombo1_Change()‘组合框内容变化事件
Adodc1.RecordSource="select*from员工where部门ID='"_&DataCombo1.BoundText&"'"
Adodc1.Refresh'刷新Adodc1EndSub36flyxb@163.com4.根据需要编写代码动态改变数据控件的记录源方法2:将部门条7.6利用数据环境设计器访问数据库数据环境设计器可以在只使用一个数据库连接的情况下,利用SQL生成器用可视化的方法创建多个具有各种复杂操作功能的ADO命令对象,并且在设计时支持拖放编辑,即可以直接从数据环境设计器将命令对象拖放到数据窗体和数据报表。这种方法特别适合需要进行复杂数据库操作的应用程序。37flyxb@163.com7.6利用数据环境设计器访问数据库数据环境设计器7.6.1设计数据窗体[例7-3]利用数据环境设计器设计数据访问窗体。创建如图7-10所示的“员工信息查询”窗体。分别用组合框选择部门和职务,文本框用于输入要查找的关键字,单击“确定”按钮后,在网格中显示出符合条件的记录。38flyxb@163.com7.6.1设计数据窗体[例7-3]利用数据环境设计器设计设计步骤:①在工程中添加数据环境设计器DataEnvironment。如果在创建工程时选择的是“数据工程”,则在工程中就会有一个数据环境设计器DataEnvironment1,若在工程资源管理器中看不到该设计器,可以选择“工程”→“添加DataEnvironment”添加数据环境设计器。②在数据环境中创建连接对象。添加数据环境设计器后,双击设计器中的DataEnvironment1,打开数据环境设计器窗口,右击DataEnvironment1下的连接对象Connection1,从弹出的快捷菜单中选择“属性”,可对该连接对象进行数据连接属性的设置。39flyxb@163.com设计步骤:①在工程中添加数据环境设计器DataEnvi设计步骤:③添加命令对象。从Connection1的快捷菜单中选择“添加命令”,可以在连接对象下添加一个命令对象,默认的命令名称为Command1。④设置命令对象。在命令对象的快捷菜单中选择“属性”,设置数据源等。⑤在窗体中放置数据绑定控件。用鼠标右键将该命令从“数据环境设计器”窗口拖放到窗体,在快捷菜单中选择绑定控件的类型:数据网格、绑定控件或FlexGrid控件(对于从数据环境设计器拖放的控件,已自动设好其数据绑定属性)。40flyxb@163.com设计步骤:③添加命令对象。40flyxb@163.com设计步骤:⑥编写事件代码。PrivateSubCommand1_Click()DimtjAsStringtj=IIf(DataCombo1.Text="","部门ID>0","部门ID="&DataCombo1.BoundText)tj=IIf(DataCombo2.Text="",tj,tj&"and职务ID="&DataCombo2.BoundText)tj=IIf(Text1="",tj,tj&"and姓名like'%"&Text1&"%'")DataEnvironment1.rscmdStaff.Filter=tj'利用记录集的Filter属性进行条件筛选DataGrid1.RefreshEndSub41flyxb@163.com设计步骤:⑥编写事件代码。41flyxb@163.com7.6.2利用数据环境设计器设计数据报表数据报表设计器属于ActiveXDesigner组中的一个成员,在使用前需选择“工程”→“添加DataReport”命令,将报表设计器加入到当前工程中,产生一个DataReport对象,双击DataReport对象后可进行报表设计。
①报表标头区包含整个报表最开头的信息,报表注脚区包含整个报表尾部的信息,一个报表只有一个报表头和一个报表注脚区,一般在报表标头区使用“标签”控件建立报表标题,在报表注脚区用报表函数控件显示数据的统计结果。42flyxb@163.com7.6.2利用数据环境设计器设计数据报表数据报表设计器属于7.6.2利用数据环境设计器设计数据报表②页标头区设置报表每一页顶部的标题信息。③页注脚区包含每一页底部的信息。④细节区包含报表的具体数据,其高度将决定报表数据的行高。当报表运行时,细节区部分随每条记录重复输出显示。43flyxb@163.com7.6.2利用数据环境设计器设计数据报表②页标头区设置报[例7-4]利用数据报表设计器设计“员工信息报表”。①在工程中添加报表。通过“工程”菜单中的“添加DataReport”将数据报表DataReport1加入到工程中。②将报表绑定到数据对象。在工程资源管理器中双击DataReport1,在属性窗口的下拉列表中选中报表DataReport1,将DataSource属性设为数据环境DataEnvironment1,DataMember属性设为命令对象cmdStaff。44flyxb@163.com[例7-4]利用数据报表设计器设计“员工信息报表”。①在[例7-4]利用数据报表设计器设计“员工信息报表”。③在报表中添加绑定控件。从数据环境设计器窗口将命令对象中所需的字段拖放到报表细节区域,然后将其中的字段标题拖到页标头节,调整位置和设置格式。④在报表中添加其他控件。单击工具箱中的“数据报表”按钮,打开报表控件工具,根据需要在报表的细节区域添加直线,在标头节添加标题(标签控件),在报表的注脚节添加合计函数(函数控件)并通过FunctionType属性的常数或值确定函数功能。45flyxb@163.com[例7-4]利用数据报表设计器设计“员工信息报表”。③在函数控件的FunctionType常数与功能FunctionType常数值功能rptFuncSum0(缺省的)合计数据字段的值rptFuncAve1计算数据字段的平均值rptFuncMin2返回数据字段的最小值rptFuncMax3返回数据字段的最大值rptFuncRCnt4计数部分中的行数rptFuncVCnt5计数包含非空值的字段rptFuncSDEV6计算标准偏差rptFuncSERR7计算标准错误46flyxb@163.com函数控件的FunctionType常数与功能Functio[例7-4]利用数据报表设计器设计“员工信息报表”。对报表页脚中的统计函数控件设置如下表所示。
属性
结果DataSourceDataMemberDataFieldFunctionType人数统计DataEnvironment1cmdStaff工号rptFuncRCnt平均年龄DataEnvironment1cmdStaff年龄rptFuncAve⑤将报表设为启动对象,运行程序以预览报表。此外,也可以在例7-3的员工查询窗体中添加“报表”按钮,再添加一行单击事件代码:DataReport1.Show后,即可在查询后单击该按钮预览报表。47flyxb@163.com[例7-4]利用数据报表设计器设计“员工信息报表”。对报表7.7编写程序代码访问数据库完全用编写代码的方法使用ADO实现数据访问,虽然代码编写量比上述方法大,但最为灵活。与在VB中用代码创建其他对象一样,需要进行以下操作:①在工程中引用对象的类型库(例:选择“工程”菜单中的“引用”后选中MicrosoftActiveXDataObject2.xLibrary)。②声明和初始化对象。③设置对象属性。④打开对象。⑤利用对象的属性、方法和事件进行操作。⑥关闭和释放对象。例7-5通过VB数据窗体向导创建数据访问窗体。见P24148flyxb@163.com7.7编写程序代码访问数据库完全用编写代码的方法使7.8数据访问综合实例[例7-6]在工程中创建员工考评窗体,如图7-16所示。要求:利用组合框选择部门后,左侧列表框显示该部门员工名单,单击其中的任一姓名后,表格中显示出该员工历年的考评记录,并可以修改。同时,使“打印年度报表”按钮不可用。49flyxb@163.com7.8数据访问综合实例[例7-6]在工程中创建员工考评窗[例7-6]选择年度后,表格中显示出所有员工该年度的考评记录,如图7-17所示;若年度清空,表格中显示出所有员工各年度的考评记录。单击“打印年度报表”按钮,打印预览出所显示的考评记录的报表。50flyxb@163.com[例7-6]选择年度后,表格中显示出所有员工该年度的考评记录[例7-6]在本例中,由于要访问的数据较多,因此采用数据环境设计器和编写代码相结合的方法。①对运行过程中保持不变的数据,如组合框下拉列表中的“部门”信息和“年度”信息,采用在数据环境设计器中分别创建命令对象cmdDep和CmdYear,在设计时设置组合框数据属性与其绑定。②对需要根据用户操作而变化的数据,如列表框中的名单要根据用户所选的部门确定,采用编写代码的方法动态创建记录集对象。51flyxb@163.com[例7-6]在本例中,由于要访问的数据较多,因此采用数[例7-6]③而对表格中显示的考评记录,由于选择姓名和选择年度后要显示的数据内容不同,因此可采用编写代码的方法,根据用户的操作,将DataGrid1与不同的命令对象进行绑定,即所谓的动态绑定。这些在数据环境设计器中创建的命令对象,运行时也要通过程序代码按选定的条件进行筛选。添加“数据环境设计器”、创建到Staff.mdb的连接Connnction1、添加命令cmdDep(数据源为Staff.mdb中的“部门”表)52flyxb@163.com[例7-6]③而对表格中显示的考评记录,由于选择姓名和选择①在数据环境中添加和设置命令。添加命令cmdKP,数据源为SQL命令文本,直接输入或通过“SQL生成器”生成命令:SELECT工号,年度,出勤率,任务完成率,工作表现得分,综合评价得分FROM年度考评ORDERBY年度锁定类型设为“开放式”,以便允许录入和编辑考评成绩。添加命令cmdKPRPT,数据源为SQL命令文本,通过“SQL生成器”生成包含3张表的查询命令:SELECT部门.部门名称,员工.工号,员工.姓名,年度考评.年度,年度考评.出勤率,年度考评.任务完成率,年度考评.工作表现得分,年度考评.综合评价得分FROM员工,年度考评,部门WHERE员工.工号=年度考评.工号AND员工.部门ID=部门.部门IDORDERBY员工.工号锁定类型设为“只读”,只供浏览打印。53flyxb@163.com①在数据环境中添加和设置命令。添加命令cmdKP,数据源为①在数据环境中添加和设置命令。添加命令cmdYEAR,数据源为SQL命令文本,直接输入或通过“SQL生成器”生成命令:SELECTDISTINCT年度FROM年度考评其中,关键字DISTINCT用来过滤掉结果中的重复行。②添加窗体。添加窗体,命名为frmKP,放置ActiveX控件DataCombo1(选择部门)、DataCombo2(选择年度)、DataList1(选择员工)、DataGrid1(显示或编辑结果)。54flyxb@163.com①在数据环境中添加和设置命令。添加命令cmdYEAR,数据③设置绑定控件的有关数据属性。设置DataCombo1的有关数据属性,实现用部门表的数据填充DataCombo1的列表属性属性值RowSourceDataEnvironment1RowMembercmdDepListField部门名称BoundColumn部门IDText删空55flyxb@163.com③设置绑定控件的有关数据属性。设置DataCombo1的③设置绑定控件的有关数据属性。设置DataCombo2的有关数据属性,实现用年度考核表中的年度数据填充DataCombo2的列表属性属性值RowSourceDataEnvironment1RowMembercmdYEARListField年度BoundColumn年度Text删空56flyxb@163.com③设置绑定控件的有关数据属性。设置DataCombo2的③设置绑定控件的有关数据属性。设置DataGrid1的属性。在DataGrid1属性页的“通用”中设置“允许添加”、“允许删除”、“允许更新”,有关绑定属性放在代码中动态绑定。④创建报表。选择“工程”菜单中的“添加DataReport”命令,在工程中添加报表DataReport2。打开DataReport2,通过属性窗口将报表的DataSource属性设为DataEnvironment1,DataMember属性设为cmdKPRPT;从数据环境设计器将cmdKPRPT拖放到其中,将每个字段的标签控件移到页标头,文本控件放到细节区域,调整各控件的位置和节的高度。57flyxb@163.com③设置绑定控件的有关数据属性。设置DataGrid④创建报表。通过属性窗口将报表标头命名为Head,其中放置Label控件,命名为title。在报表注脚节放置函数控件,分别绑定到各考评数字字段,报表页脚中的函数控件设置如下表所示。属性控件DataSourceDataMemberDataFieldFunctionType总人数DataEnvironment1cmdKPRPT工号rptFuncRCnt平均出勤率DataEnvironment1cmdKPRPT出勤率rptFuncAve平均综合考评DataEnvironment1cmdKPRPT综合考评分数rptFuncAve58flyxb@163.com④创建报表。通过属性窗口将报表标头命名为Head,其⑤编写控件的事件代码。“部门选择”组合框的事件代码。当组合框选项发生变化时,对列表框的数据属性重新赋值,使得按所选部门的名单重新填充列表DataList1的列表项。PrivateSubDataCombo1_Change()DimrsNameAsADODB.Recordset‘声明ADO记录集对象rsNameSetrsName=NewADODB.Recordset‘创建ADO记录集对象rsNamersName.Open"select工号,姓名from员工where部门ID='"_&DataCombo1.BoundText&"'",DataEnvironment1.Connection1‘打开记录集对象rsName,数据源为SQL命令文本,连接为数据环境中的Connection1SetDataList1.RowSource=rsName‘设置列表项来源为记录集对象rsNameDataList1.ListField=“姓名”‘设置列表项取自“姓名”字段DataList1.BoundColumn="工号"‘设置列表返回“工号”字段EndSub59flyxb@163.com⑤编写控件的事件代码。“部门选择”组合框的事件代码。59⑤编写控件的事件代码。“员工选择”列表框的事件代码。单击其中的姓名时,将返回的工号作为记录集rscmdKP的筛选条件,使绑定的表格DataGrid1显示筛选出的员工考评记录。PrivateSubDataList1_Click()DataCombo2.Text=""'年度组合框清空cmdPRT.Enabled=False'使打印报表按钮不可用DataEnvironment1.rscmdKP.Filter="工号='"&DataList1.BoundText&"'"'记录集rscmdKP按DataList1所选员工的工号筛选DataEnvironment1.rscmdKP.Sort="年度"SetDataGrid1.DataSource=DataEnvironment1DataGrid1.DataMember="cmdKP"'DataGrid1绑定到命令cmdKPEndSub60flyxb@163.com⑤编写控件的事件代码。“员工选择”列表框的事件代码。60f⑤编写控件的事件代码。“年度选择”组合框事件代码。对cmdKPRPT的记录集rscmdKPRPT,利用Filter属性过滤出所选年度的记录。PrivateSubDataCombo2_Change()IfDataCombo2.Text<>""ThenDataEnvironment1.rscmdKPRPT.Filter="年度="&DataCombo2.TextElseDataEnvironment1.rscmdKPRPT.Filter="年度>0"EndIfSetDataGrid1.DataSource=DataEnvironment1DataGrid1.DataMember="cmdKPRPT"EndSub61flyxb@163.com⑤编写控件的事件代码。“年度选择”组合框事件代码。61fl⑤编写控件的事件代码。“打印报表”按钮事件代码。使报表标题根据所选年度显示为:"XXXX年度考评报表”。PrivateSubcmdPRT_Click()DataReport2.Sections("Head").Controls("title")=DataCombo2.Text&"年度考评报表”'Head和title分别是在报表属性窗口给报表标头节和标题标签控件所设置的的称DataReport2.Show‘打印预览报表EndSub62flyxb@163.com⑤编写控件的事件代码。“打印报表”按钮事件代码。62fly第7章数据库编程63flyxb@163.com第7章数据库编程1flyxb@163.com教学目标了解关系数据库的基本知识了解数据库的结构化查询语言SQL。了解数据库访问技术和数据访问对象。熟练掌握使用数据控件和绑定控件创建数据窗体的方法和步骤。掌握使用数据环境设计器创建数据访问对象,并在此基础上进行数据窗体和数据报表的设计。掌握使用数据窗体向导创建数据窗体,并通过阅读所生成的代码了解如何用编写代码的方法创建和运用数据对象。64flyxb@163.com教学目标了解关系数据库的基本知识2flyxb@163.com7.关系数据库数据库就是按照一定的数据模型来组织和存放的相关数据的集合。关系数据库是以关系模型为基础的数据库,主要特点是使用二维表的方式组织数据,通过若干个表(Tabel)存储数据,并利用关系(Relation)将这些表联系在一起。常见的有FoxPro、Access、Sybase、Oracle和SQLServer等。65flyxb@163.com7.关系数据库数据库就是按照一定的数据模型来组织和存放的相关关系数据库的基本概念1.表在关系数据库中,数据以二维表(行和列)的形式存储。一般情况下,可将描述不同事物的数据分别保存在数据库中不同的表中,例如与部门相关的信息保存在部门表中、员工的基本信息保存在员工表中。例如下所示的员工表。工号姓名部门ID性别出生日期电话01006陈镭1男1985-10-98837000601007罗薇1女1987-4-298837000701008王亮2男1986-6-188837000801012金君君2男1987-5-158837001266flyxb@163.com关系数据库的基本概念1.表工号姓名部门ID性别出生日期电话关系数据库的基本概念2.记录表中的每一行表示一条记录,一条记录描述事物的一个实例。例如员工表中的每一行描述一个员工的基本信息。3.字段表中的每一列称为一个字段,每一个字段描述事物的一个属性。例如,上述员工表中有6列即6个字段,分别描述员工的工号、姓名等6个不同属性。创建一个数据库表时,要设置每个字段的数据类型(如文本、数值、日期等)和最大长度等属性。67flyxb@163.com关系数据库的基本概念2.记录5flyxb@163.com关系数据库的基本概念4.主键主键惟一标识了表的每一行。主键可以是一个字段,也可以是多个字段的组合。5.外键外键也是由一个字段或多个字段组成,而这些字段又是其它表的主键。通过外键可以与主键所在表建立关联。6.关系关系是建立在两个表的公共字段(一般是主键和外键)之间的一种关联。关系类型可以是一对一、一对多或多对多。68flyxb@163.com关系数据库的基本概念4.主键6flyxb@163.com7.2结构化查询语言SQL结构化查询语言SQL(StructureQueryLanguage)是关系数据库操作的标准语言。SQL语言用简洁高效的语法实现对关系数据库的各种操作,分为数据定义语言(DDL)命令和数据操作语言(DML)命令。DDL命令创建和定义新的数据库、字段和索引;而DML命令完成从数据库中进行选择、插入、更新和删除等操作。69flyxb@163.com7.2结构化查询语言SQL结构化查询语言SQL(Struc最常用的数据操作命令。1.选择查询从一个或多个表中检索出所需的数据。SELECT字段列表FROM表名[WHERE条件][GROUPBY分组字段][ORDERBY字段]字段列表可以是一个字段或用逗号分隔的多个字段,也可以是由表达式表示的计算字段,如果要选择表中的所有字段,可用“*”代替。FROM子句用于指定查询的数据来源(一个或多个表)。WHERE子句用于构造查询条件。此条件表达式是由关系运算符或逻辑运算符构成的逻辑表达式。70flyxb@163.com最常用的数据操作命令。1.选择查询8flyxb@163.co1.选择查询例如,要从“员工”表中查询出所有姓“张”的员工姓名、性别和年龄,SQL语句为:SELECT姓名,性别,YEAR(NOW())-YEAR(出生日期)AS年龄FROM员工WHERE姓名Like“张%”GROUPBY子句用于对结果进行分组。分组中经常使用合计函数(又称聚集函数)对数据进行统计运算,它返回应用于一组记录的统计结果值。71flyxb@163.com1.选择查询例如,要从“员工”表中查询出所有姓“张”的员工姓常用的合计函数函数描述AVG返回指定字段的平均值COUNT返回选定记录的个数SUM返回指定字段中所有值的总和MAX返回指定字段中的最大值MIN返回指定字段中的最小值例如,统计男女员工的人数、最大年龄、平均年龄。SELECT性别,COUNT(*)AS人数,MAX(YEAR(NOW())-YEAR(出生日期))AS最大年龄,AVG(YEAR(NOW())-YEAR(出生日期))AS平均年龄FROM员工GROUPBY性别72flyxb@163.com常用的合计函数函数描述AVG返回指定字段的平均值COUNT2.插入记录(INSERTINTO语句)可添加一条或多条记录到数据表中。INSERTINTO表名(字段列表)VALUES(值列表)例如,在“员工”表中增加一条新记录:INSERTINTO员工(工号,姓名,性别,出生日期)VALUES(’03704’,'赵守一’,‘男’,#1988-6-1#)73flyxb@163.com2.插入记录(INSERTINTO语句)可添加一条或多条2.插入记录(INSERTINTO语句)将查询结果插入到另一表中的语句格式如下:INSERTINTO目标表名[(字段列表)]SELECT<字段列表>FROM<源表>例如,将“员工”表中1945年以前出生的员工记录添加到“退休员工”表中:INSERTINTO退休员工(姓名,性别,出生日期)SELECT姓名,性别,出生日期FROM员工WHERE出生日期<#1945-01-01#74flyxb@163.com2.插入记录(INSERTINTO语句)将查询结果插入到3.更新记录UPDATE表名SET字段1=表达式1[,字段2=表达式2,…][WHERE<条件>]例如,将所有员工的电话号码前加上一位“8”:UPDATE员工SET电话="8"&电话75flyxb@163.com3.更新记录UPDATE表名SET字段1=表达式14.删除记录删除记录的语句格式如下:DELETEFROM<表名>WHERE<条件>例如,删除“员工”表中1945年以前出生的员工记录。DELETEFROM员工WHERE出生年月<#1945-1-1#76flyxb@163.com4.删除记录删除记录的语句格式如下:14flyxb@163.7.3数据库访问技术7.3.1数据访问对象微软先后提供了3种数据访问对象:数据访问对象DAO(DataAccessObjects)远程数据对象RDO(RemoteDataObjects)ActiveX数据对象ADO(ActiveXDataObjects)这3种接口分别代表了微软数据访问技术的不同发展阶段。77flyxb@163.com7.3数据库访问技术7.3.1数据访问对象15flyx7.3.2ADO的主要对象(P225)ADO作为面向对象的数据访问接口,编程时主要涉及3个对象:连接对象(Connection):与数据库建立连接命令对象(Command):对数据进行各种操作记录集对象(RecordSet):存储在缓存中供访问处理的结果数据78flyxb@163.com7.3.2ADO的主要对象(P225)ADO作为面向7.3.3通过数据对象进行数据访问的方法和一般步骤(P225)方法特
点适用人员或场合数据控件Data(DAO)或Adodc(ADO)可以在设计时通过数据控件的属性页或属性窗口设置有关属性,只要将控件与数据控件绑定,几乎不需编写代码即可实现简单的数据访问数据对象编程和SQL语法都不熟悉的初学者,可简单快捷地对单一数据源进行访问数据窗体向导自动生成使用ADO,具有完整数据访问功能的窗体(包括绑定控件、ADO控件和程序代码)快速生成数据窗体供使用或学习借鉴79flyxb@163.com7.3.3通过数据对象进行数据访问的方法和一般步骤(P27.3.3通过数据对象进行数据访问的方法和一般步骤(P225)数据环境设计器用可视化方法创建ADO数据对象和SQL命令,在一个连接下可创建多个命令对象及其子命令、分组等,并在使用这些数据的窗体和报表设计中支持拖放编辑。可用直观的方式实现多种较复杂的数据操作不太熟悉ADO编程和SQL语法,但需要对多项数据源进行大量较复杂操作的读者编写代码完全用程序代码创建和设置、操作数据对象,编写代码的工作量较多,但最为灵活具有一定编程基础和熟悉SQL语法的读者,对数据可以任意方式进行访问外接的可视化数据管理器(VisData.exe)可对常见数据库进行简单的可视化操作,也能快速创建数据窗体,但它不支持最新的数据访问技术ADO。目前已较少使用80flyxb@163.com7.3.3通过数据对象进行数据访问的方法和一般步骤(P27.3.4数据控件Data和Adodc数据控件通过可视化的形式创建和运用数据对象,不用编写程序代码,只需通过简单的属性设置(主要是与数据库的连接属性和指定具体数据的记录源属性),就能连接到现有的数据库,并从中获取数据。其中,Data控件是基于DAO的数据控件,它属于VB标准控件,可直接在VB控件工具箱中找到。Adodc则是基于ADO的ActiveX控件,需要通过“工程”→“部件”添加到工具箱.81flyxb@163.com7.3.4数据控件Data和Adodc数据控件7.3.5数据绑定控件利用数据对象获得了数据库中的数据后,若要对这些数据进行查看和编辑,还需要使用显示和编辑数据的控件,并将这些控件与数据对象绑定起来。所谓绑定,就是使控件能直接显示和处理数据源中对应的数据,并且两者保持同步。VB工具箱中的文本框Text、列表框LisBoxt、组合框ComboBox、图片框PictureBox、Image等控件都可以通过DataSource、DataMember、DataFields属性与数据源(记录集或数据控件)绑定,用以显示和编辑数据。82flyxb@163.com7.3.5数据绑定控件利用数据对象获得了数据库中的数据后7.3.5数据绑定控件另外,VB还提供了一些功能更强大、使用更方便的ActiveX数据绑定控件,包括数据网格控件DataGrid、数据列表和组合框控件DBList/DBCombo以及DataList/DataCombo、MSHFlexGrid、RichTextBox和MSChart等控件。要想使用这些ActiveX控件,可选择“工程”菜单中的“部件”命令,从弹出的“部件”对话框中选中相应部件前的复选框,使其出现在工具箱中。83flyxb@163.com7.3.5数据绑定控件另外,VB还提供了一些功能更强大、1.DataGrid控件绑定的文本框控件Text只能显示和处理数据中当前一个记录的一个字段,而使用DataGrid控件则可同时显示和编辑整个二维数据表格。DataGrid控件的几个主要属性如表。数据类属性作用DataSource指定所绑定的数据源:ADO数据控件或记录集DataMember若数据源中包含多个成员,则该属性指定绑定的数据成员AllowAddNew是否允许添加记录AllowDelete是否允许删除记录AllowUpdate是否允许更新记录84flyxb@163.com1.DataGrid控件绑定的文本框控件Text只2.DataList和DataCombo控件属性名称说明举例绑定数据DataSource用于设置绑定的数据源Adodc1(记录源为“员工”表)DataMember在数据源包含多个成员的场合下,用于设置绑定数据源中的数据成员数据源为控件时,该项为空;数据源为数据环境时,为其中的某命令对象DataField设置与数据源绑定的字段名称部门ID列表项数据RowSource指定填充列表项的数据源Adodc2(记录源为“部门”表)RowMember在列表项的数据源包含多个成员的场合下,设置填充列表项的数据成员数据源为控件时,该项为空;数据源为数据环境时,为其中的某命令对象ListField指定填充列表项的字段部门名称BoundColumn用来选择从列表项数据源返回的字段部门ID85flyxb@163.com2.DataList和DataCombo控件属性名称说明举例7.4使用DAO的Data控件访问数据库1.Connect属性该属性用于返回和设置连接的数据库类型名称,可访问Access、dBase、Excel、FoxPro、Lotus、Paradox、Text
共7种数据库类型,默认为Access数据库类型。注意:只有安装了VBSP5后才能支持Access2000格式。2.DatabaseName属性设置和返回Data控件中数据源的名称和位置,可以包含路径。3.RecrodSource属性设置和返回与Data控件相关联的记录源,可以是数据库中的基本表或查询数据的SQL语句。86flyxb@163.com7.4使用DAO的Data控件访问数据库1.Connect[例7-1]使用DAO的Data控件访问数据库。设计一个简单的数据库管理应用程序,用于浏览和编辑Staff.mdb数据库的员工信息。Data87flyxb@163.com[例7-1]使用DAO的Data控件访问数据库。设计一①放置和设置Data控件。首先新建一个工程,用工具箱中的标准控件在窗体上添加一个Data数据控件。设置的属性如下表所示,其它属性取默认值。属
性作
用设
置
值Connect连接的数据库类型Access2000DatabaseName数据库文件的路径和名称相对路径Staff.mdb或绝对路径C:\VB\Staff.mdbRecrodSource记录源,可以是表或SQL命令文本员工88flyxb@163.com①放置和设置Data控件。首先新建一个工程,用工具箱中的标②放置和设置数据绑定控件。在窗体上放置若干标签、文本框Text1~Text4和OLE控件OLE1。属性设置如右表。对象DataSource属性DataField属性Text1Data1工号Text2姓名Text3性别Text4出生日期OLE1相片89flyxb@163.com②放置和设置数据绑定控件。在窗体上放置若干标签、文本框Te③运行调试程序将该窗体设为启动窗体,运行程序后通过单击Data控件两端的按钮,就可以看到绑定控件中的内容随着记录的变化而变化。由此可见,对于Access数据库的简单本地访问,使用Data数据控件很方便。但Data控件属于DAO对象,属于微软早期的技术,其编程模型和编程方法比较复杂,功能也较弱。若要开发针对其他数据库或较复杂的数据访问程序,建议采用ADO对象。90flyxb@163.com③运行调试程序将该窗体设为启动窗体,运行程序后通过单击D7.5使用ADO的Adodc控件访问数据库[例7-2]通过ADO控件创建数据访问窗体,如图7-4所示。该窗体用于显示和编辑数据库中选定部门“员工”表的数据,其中组合框用于选择部门,表格用于显示员工数据,ADO控件Adodc1和Adodc2用于连接数据库获取数据。91flyxb@163.com7.5使用ADO的Adodc控件访问数据库[例7-2]通1.添加和放置ActiveX数据控件该窗体中的Adodc控件和DataGrid、DataCombo控件都是ActiveX控件,在使用之前应先将这些控件添加到工具箱中。选择“工程”菜单中的“部件”命令,或在工具箱上单击鼠标右键,从弹出的快捷菜单中选择“部件”命令,打开“部件”对话框。在“部件”对话框中选中MicrosoftADODataControl6.0(OLEDB)、MicrosoftDataGridControl6.0(OLEDB)和MicrosoftDataListControls6.0(OLEDB),将Adodc、DataGrid和DataList、DataCombo控件添加到工具箱中。92flyxb@163.com1.添加和放置ActiveX数据控件该窗体中的Adodc控件2.设置ADO数据控件的主要属性⑴连接属性ConnectionString该属性为字符串变量,用来设置ADO控件和数据库连接的连接字符串,通过这个连接可以建立与数据源的连接信息,实现ADO控件与相应的数据库进行连接。该属性包含的内容较多,通常用可视化的方法通过ADO属性页来设置。
打开ADO属性页的方法:在窗体上用鼠标右击ADO数据控件,在弹出的快捷菜单中选择“ADODC属性”,或在“属性”窗口中单击ConnectionString属性右边的“…”按钮。93flyxb@163.com2.设置ADO数据控件的主要属性⑴连接属性Connect⑵Recordsource属性该属性用来设置与ADO连接的数据库中的记录源。在ADO属性页对话框中,通过“记录源”选项卡,可以从以下4种命令类型中选择一种:
8-adCmdUnknown:未知,为系统默认值。
1-adCmdText:文本命令类型。
2-adCmdTable:数据表。
4-adCmdStoredProc:存储过程。
94flyxb@163.com⑵Recordsource属性该属性用来设置与ADO3.设置数据绑定控件的数据属性将DataGrid1的DataSource属性设置为Adodc1,在DataGrid1控件上单击鼠标右键,从弹出的快捷菜单中选择“检索字段”,在打开的对话框中选择“是”按钮,这样“员工”表中的所有字段都将在DataGrid1的列标题中显示出来。右击DataGrid1,从弹出的菜单中选择“编辑”命令,对列表框的列宽进行调整。95flyxb@163.com3.设置数据绑定控件的数据属性将DataGrid1的3.设置数据绑定控件的数据属性为了用Adodc2获取的各部门名称填充组合框DataCombo1,,将组合框DataCombo1的相关属性按下表进行设置。属
性设置属性值RowSourceAdodc2ListField部门名称BoundColumn部门IDText选择部门96flyxb@163.com3.设置数据绑定控件的数据属性为了用Adodc2获取的4.根据需要编写代码动态改变数据控件的记录源方法1:将部门条件表达式作为记录集的Filter属性进行过滤。PrivateSubDataCombo1_Change()'组合框内容变化事件Adodc1.Recordset.Filter="部门ID='"&DataCombo1.BoundText&"'"EndSub97flyxb@163.com4.根据需要编写代码动态改变数据控件的记录源方法1:将部门条4.根据需要编写代码动态改变数据控件的记录源方法2:将部门条件表达式作为SQL命令Where子句的条件,重新设置Adodc1的DataSource属性。PrivateSubDataCombo1_Change()‘组合框内容变化事件
Adodc1.RecordSource="select*from员工where部门ID='"_&DataCombo1.BoundText&"'"
Adodc1.Refresh'刷新Adodc1EndSub98flyxb@163.com4.根据需要编写代码动态改变数据控件的记录源方法2:将部门条7.6利用数据环境设计器访问数据库数据环境设计器可以在只使用一个数据库连接的情况下,利用SQL生成器用可视化的方法创建多个具有各种复杂操作功能的ADO命令
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年小夜曲教学设计
- 2025-2026学年小学英语教学设计杂志
- 新学期计划汇编15篇
- 2025至2030公共空间空气治理解决方案分析及市场推广与运营模式研究报告
- 2025-2026学年舞蹈教案模板范文
- 数据可视化分析平台设计
- 施工人员信息化管理与调度系统方案
- 高中教室数据接入与网络设施建设方案
- 学生暑假小结范文
- 2023年开学第一课节目单
- 李树种植管理课件
- 美线操作基础知识培训课件
- 矿山项目考察方案(3篇)
- 2025年全国硕士研究生考试西医综合试卷试题(含答案)
- 小学一年级下册生字笔顺组词造句阅读本
- 【8英WY期末】合肥市蜀山区五十中西校2024-2025学年八年级下学期期末考试英语试卷
- 二年级下学期小学法治与道德教学计划
- CJ/T 83-2016水处理用斜管
- 小学语文六年级下册第一单元大单元作业设计
- 残疾人证管理实施细则
- 2025人教版二年级科学下册教学计划
评论
0/150
提交评论