种种不同规模的数据库系统.ppt

上传人:zhu****ei 文档编号:3495140 上传时间:2019-12-16 格式:PPT 页数:89 大小:463KB
返回 下载 相关 举报
种种不同规模的数据库系统.ppt_第1页
第1页 / 共89页
种种不同规模的数据库系统.ppt_第2页
第2页 / 共89页
种种不同规模的数据库系统.ppt_第3页
第3页 / 共89页
点击查看更多>>
资源描述
种种不同规模的数据库系统,可以说与VB本身没有任何的关系,但是VB可以访问所有这些数据库中的数据,而且采用统一的访问方式。形象地比喻它们的关系是:VB是在屏幕上冲锋陷阵的工具(界面显示和控制),数据库系统是后面提供粮草或装备的基地(数据的管理)。VB提供了方便的数据访问控件VB可以支持多种数据库系统VB提供数据对象可以灵活操作数据,为什么用VB开发数据库应用程序,文件方式数据的长期保存必须靠文件,通过文件的操作可以实现数据的保存、删除、查询。应用程序必须熟知数据是以何种结构存放到那个文件中的。任何数据结构的改变都将修改应用程序。比如增加了一个数据项,长度改变了等等。数据库出现了如何能够让应用程序与数据的存储分离,数据结构的变化不再需要修改应用程序。数据库管理系统出现了,该系统实现数据的管理,应用程序只需要调用有关的接口就可以完成数据的插入、删除和修改等操作,而不需要关心数据放在什么文件中,是怎样存放的。,数据库的产生,表(Table)任何数据都可以看成是二维表格中的元素,而这个由行和列组成的二维表格就是数据库中的表(Table),一个数据库中可能有一个或多个表。比如销售系统的数据库中包含客户表、供应商表、产品表和订单表等。记录(Record)表中的每一行称为行、元组或记录(Record),一行中的所有数据元素描述的是同一个实体的不同方面的特征。一个表中的所有记录是各不相同的,一般不允许重复。字段(Field)二维表中的每一列是一个属性值集,称为属性或字段(Field)。比如客户表有客户编号、客户名称、地址、联系人和电话等字段。当某个字段在表中的值具有唯一性时,称该字段为表的主键(PrimaryKey)。比如客户表的主键是客户编号字段。,数据库的基本概念,关联一般说来每个表都独立地描述某类事物,但事物之间是有关系的,所以数据库应该能够在表之间建立这种关联。比如订单表中记录的是某个客户的订单,可能设计有订单号、客户编号和订单日期等字段,那么通过客户编号(外部关键字)可以与客户表建立关联,这样要查询订货日期在某天的所有客户名称和地址将是可能的。SQLSQL是StructuredQueryLanguage(结构化查询语言)的缩写。但查询只是SQL语言的重要组成部分,并不是全部,它还包含数据定义、数据操纵等其它功能。SQL语言包含为数不多的十来条命令,实现创建数据库的表、对表中的数据进行添加、删除或修改等功能,尤其可以实现各种形式的查询、排序和分组汇总。,数据库的基本概念,多表关联示例,OrderIDCustomerIDEmployeeIDOrderDateRequiredDateShippedDate,CategoryIDCategoryNameDescriptionPicture,产品目录,ProductIDProductNameSupplierIDCategoryID.,订单,订单明细,OrderIDProductIDUnitPriceQuantityDiscount,SupplierIDCompanyName.,供应商,产品,CustomerIDCompanyName,客户,Access格式数据库(WindowsOffice自带)桌面数据库,dBASE,Foxpro等小型数据库系统ODBC数据库,SQLServer,Oracle,Sybase等主流数据库,VB支持的数据库系统,可视数据管理器(VB提供的一个应用程序,不需要编程就可访问)数据控件和数据绑定控件(简单应用,只需少量编程)数据访问对象,DAO模型(早期)ActiveX数据访问对象,ADO模型(最常用),VB访问数据库的方式,VB工具可视数据管理器,不需要安装Access等数据库系统,可以独立运行,是用VB编写的应用软件,并提供全套源代码。具备以下功能:建立数据库浏览和查询数据库添加、修改和删除记录压缩和修复数据库,可视数据管理器建立数据库,一般用于建立单机环境下的小型数据库。,可视数据管理器建立数据库,步骤:菜单“文件|新建表”,选择数据库类型和版本鼠标右键菜单“新建表”,弹出表结构对话框在对话框中添加字段必要的情况下添加索引,最后确认生成表双击表,弹出记录维护窗口,可以添加记录,可视数据管理器添加数据,双击表名,或先点击鼠标右键弹出菜单,执行弹出菜单的【打开】命令,就可以出现下图所示的记录操作窗口。该窗口会显示表的所有字段,可以浏览记录,也可以利用按钮命令来完成记录的添加、修改和删除等操作。,可视数据管理器浏览数据库,数据库打开后,就会显示该数据库结构的树状结构,可以查看字段和索引的设计,鼠标双击浏览全部数据。浏览界面有三种(在工具栏选择):使用Data控件方式不使用Data控件方式使用DBGrid控件方式(表格),可视数据管理器查询数据库,数据库打开后,有两种查询数据的方式:在SQL语句窗口中可以输入Select语句使用菜单“实用程序|查询生成器”,可视数据管理器打开数据库,对于已经存在的数据库,可以打开并查询数据,前提是最好知道数据库的类型和版本。菜单“文件|打开数据库”选择数据库类型和数据库文件如果需要修改表结构,先选中该表,鼠标右键“设计”,将弹出表结构对话框可以对字段进行添加和删除。,可视数据管理器其它功能,不同数据库格式的数据导入/导出压缩数据库(实现记录的真删除。因为记录在删除的时候,只是做了标记,并未清除)修复数据库(修复遭破坏的数据库),现在开始数据库编程,学会使用VB自带控件,掌握Recordset对象,掌握ADO对象,实现具体应用,高手,标准的Data数据控件,具备以下功能:完成对本地和远程数据库的链接打开指定数据库的表,或者是基于SQL的查询集将表中的字段传至数据绑定控件,并能针对数据绑定控件中的修改,更新数据库因为功能的局限,目前很少使用Data控件,理解ADO,ActiveXDataObjects;一种提供访问各种类型数据库的连接机制,底层通过ODBC接口访问数据库,可以使用任何一种ODBC数据源,统一的数据访问接口方法,独立于开发工具和开发语言(vb,vc+,delphi)对象模型简单易用,使用ADO的四种方法,使用可见控件:(加载部件)利用ADO数据控件(Adodc)和绑定控件利用DataEnvironment设计器和绑定控件制作报表使用DataReport设计器使用对象:(加载引用)直接使用ADO对象,窗体,数据库,LabelTextBoxListBoxImage,DataAdodc,数据识别控件,数据源控件,ADO对象模型,OLEDB提供程序,AccessProvider,SQLServerProvider,OracleProvider,Access,SqlServer,Oracle,访问数据库的过程,添加Adodc数据控件设置数据控件的属性,建立到数据库的连接添加其它控件,并与数据控件进行绑定,指定要显示的字段运行程序,可以查看数据库记录了。,最简单的的数据库访问程序,【例】显示所有总部在伦敦的客户名称、地址和电话。直接利用VB提供的NWind.mdb文件(位于VB安装主目录),该数据库是Access格式数据库,包含了订单销售系统所需要的数据,如产品表、供应商表、客户表、订单表等。界面如图。,数据库示例1,1)执行【文件】【新建工程】创建一个新的数据工程;2)打开工程中的“frmDataEnv”窗体,添加用于显示数据的Label控件和TextBox控件,然后在工具箱中找到Adodc控件,将它放置在窗体上(Adodc1)3)选中窗体中的Adodc1控件,点击鼠标右键选择【ADODC属性】菜单项,打开“属性页”对话框;4)建立数据库连接:按下属性页对话框的“通用”选项卡中【生成】按钮,在打开的“数据连接”对话框中选择Provider(数据源提供者)为“MicrosoftJet4.0OLEDBProvider”,接着浏览并选择数据库为“C:ProgramFilesMicrosoftVisualStudioVB98NWIND.MDB”,按下【确定】按钮;5)回到“属性页”对话框中,选择“记录源”选项卡,在“命令文本”输入框中输入“Select*fromCustomersWhereCity=London;”,按下【确定】按钮;6)选择窗体上的“客户名称”文本框,在“属性窗口”中选择设置属性DataSource为Adodc1,属性DataField为CompanyName(Customers表的字段),同样设置另外两个文本框的Datasource属性和DataField属性;启动程序,便可以看到显示的数据,点击控件Adodc1两端的四个箭头,可以看第一条、看最后一条记录,或向前或向后浏览每一条记录。,示例的具体步骤,建立在ADO对象模型之上的数据源控件是ADO数据控件,该控件是一个ActiveX控件,所以如同通用对话框一样需要先加载后使用。加载ADO数据控件有两种方法,一种就是新建一个新的数据工程,该工程会自动加载所有的数据库访问有关的控件;另外一种是自己在工程中执行【工程】【部件】菜单加载“MicrosoftADODataControl”部件。工具箱中会出现名称为“Adodc”的ADO数据控件。,ADO数据控件,ConnectionString属性用于建立链接,指明数据库名称、访问权限等,可以由提示自动生成CommandType属性用于指明命令类型,表/查询文本/存储过程等。RecordSource属性用于指明数据源的内容,如果CommandType是表类型,则为表名,如果是文本,则是Select语句主要属性可以在ADO数据控件的属性页中设置,ADO数据控件的主要属性,建立到数据库的连接ConnectString,ConnectString属性用于将数据控件与某种格式的数据库建立连接。有三种方法可供选择:使用数据库连接文件:必须先建立一个数据连接文件,然后选中该文件,最终ConnectionString属性存放文件名,如“FILENAME=D:myVBtest.udl”。使用ODBC数据源(DSN):可以在该对话框内或“控制面板”的“数据源(ODBC)”中创建数据源,每个数据源有一个唯一的名称,最终ConnectionString属性指定数据源名称,如“DSN=aaa”。使用连接字符串:ConnectionString属性指定一个符合语法的连接字符串,可以在该对话框中生成该连接字符串,如“Provider=Microsoft.Jet.OLEDB.4.0;DataSource=D:myVBschool.mdb;PersistSecurityInfo=False”。,指定记录源RecordSource,虽然指定了数据库,但还没有指定访问的是哪些表、哪些记录,记录的范围由数据控件的RecordSource属性指定。RecordSource属性是字符串类型,通常包含一条语句,用于决定从数据库检索什么信息,它需要与数据控件的另一个属性CommandType属性结合使用才能真正确定记录范围。CommandType属性用来指定RecordSource属性保存的究竟是一条SQL语句、一个表的名称、一个存储过程、还是一个未知的类型指定命令类型。RecordSource属性和CommandType属性同样也可以在“属性窗口”中设置,也可以在数据控件的“属性页”对话框中设置。,记录源类型CommandType,CommandType属性用来指定记录源类型。表类型:当CommandType属性取值为2(常量adCmdTable)时,说明RecordSource属性中的字符串是一个表名。图中指定的就是Customers表。文本类型:当CommandType属性取值为1(常量adCmdText)时,说明RecordSource属性中的字符串是一个SQL命令,在对话框作选择该类型后,应该在“命令文本”输入框中输入一个有效的SQL查询命令,这时数据控件将会访问到满足查询条件的全部记录。,使用代码设置属性值,如果在程序运行时需要修改数据控件的属性,也能用代码为它们重新赋值,赋值无顺序要求。举例如下:Adodc1.CommandType=adCmdTableAdodc1.RecordSource=teacherAdodc1.Refresh但是要记住,一旦重新设置了记录源,则一定要调用Refresh,数据绑定控件的功能,数据绑定控件是数据识别控件,在数据库应用程序中可以通过它来显示数据库数据。一旦与数据控件实现了绑定,则具有下列功能:可以自动显示记录值编辑修改记录值可以自动将记录值写入数据库,数据绑定控件的类别,标准绑定控件如CheckBox,ListBox,TextBox,Label,PictureBox,Image,ComboBox等,将它们的DataSource和DataField属性绑定到数据库和字段上外部绑定控件(需要加载部件)如DBCombo,DBGrid,DBList,RichText,FlexGrid等适用于OLEDB的外部绑定控件(与ADO控件结合)如DataCombo,DataList,DataGrid等,数据绑定控件的一般用法,DataSource属性,指定该控件要绑定的数据源,即Data控件的名称可以直接在属性窗口中设置或用代码赋值;如果一个窗体中有多个数据控件,只能绑定到其中之一;DataField属性,指定该控件要绑定的字段可以直接在属性窗口中设置或用代码赋值;SetText1.DataSource=Adodc1设置数据绑定控件的数据源Text1.DataField=stuNo设置数据绑定控件绑定的字段,数据库示例2,【例】编写程序,能输入城市名,查询并显示该城市的客户名称、地址和电话。还是利用NWind.mdb数据库,客户信息存放在Customers表中,该表有CustomerID、CompanyName、Address、City、Phone、Fax等字段。界面效果见图。,数据库示例2,使用ADO数据控件与数据库NWind.mdb连接,并设置访问Customers表,使用三个TextBox绑定到数据控件上用于显示公司名称、地址和电话,增加城市输入框和查询按钮,一旦按下查询按钮,编写代码修改数据控件的有关属性PrivateSubcmdQuery_Click()DimstrSqlAsStringIftxtCityThenstrSql=select*fromcustomerswherecity=_2、从客户表中查询所有公司名称SELECTcompanynameFROMcumtomers;3、从客户表中查询所有城市(使用DISTINCT去掉重复值)SELECTDISTINCTcityFROMcumtomers;,简单查询SELECT(二),3、从客户表中查询在伦敦的公司名称SELECTcompanynameFROMcumtomersWHEREcity=London4、从订单表中查询所有发往伦敦的运费100元以上的订单SELECT*FROMordersWHEREshipcity=LondonANDfreight100;,连接查询SELECT,1、找出订单运费在100元以上的订单号和公司名称SELECTorderid,companynameFROMorders,customersWHEREfreight100ANDorders.customerid=customers.customerid;2、查出订有43号产品的订单及其到货城市SELECTorders.orderid,productid,shipcityFROMorders,orderdetailsWHEREproductid=43ANDorders.orderid=orderdetails.orderid;如果两个表有相同的字段名,必须指定字段为表名.字段名,嵌套查询SELECT,需要的结果来自一个表,但条件涉及多个表找出订有43号产品的公司名称、地址和电话SELECTcompanyname,address,phoneFROMcustomersWHEREcustomeridIN(SELECTcustomeridFROMorders,orderdetailsWHEREorderdetails.productid=43ANDorders.orderid=orderdetails.orderid);,SELECT中的特殊算符,1、找出运费在50到100元之间的订单SELECT*FROMordersWHEREfreightBETWEEN50AND100;2、查出名称是F开头的客户SELECT*FROMcustomersWHEREcompanynameLIKEF*/?单字符3、查出不在伦敦的的客户SELECT*FROMcustomersWHERENOTcity=London;,SELECT结果排序,1、按照日期降序输出SELECT*FROMordersORDERBYorderdateDESC;2、先按日期降序,再按运费升序输出SELECT*FROMordersORDERBYorderdateDESC,freight;,计算查询和分组,COUNT:计数SUM:求和AVG:计算平均值MAX:求最大值MIN:求最小值1、求每个客户的总运费SELECTcustomerid,SUM(freight)FROMordersGROUPBYcustomerid;,创建表CREATETABLE,CREATETABLEorders(orderidCHAR(5)NOTNULL,orderdateDATE,requireddateDATE,companyidCHAR(4);CREATETABLEorderdetail(orderidCHAR(5)NOTNULL,productidCHAR(4)NOTNULL,priceNUMBER(10.2),quantityNUMBER(8);DROPTABLEorders;/删除表,插入记录INSERTINTO,1、插入一条记录,包含三个字段值:INSERTINTOorders(orderid,orderdate,companyid)VALUES(00001,2002/11/01,111);2、插入检索结果:INSERTINTOordersbakSELECT*FROMorders;,修改记录UPDATESET,1、修改一条记录:UPDATEordersSETorderid=10001,requireddate=2002/12/01WHEREorderid=00001);2、修改一批记录:UPDATEordersSETfreight=freight*1.05WHEREshipcity=London);,删除记录DELETEFROM,删除所有发往伦敦的订单:DELETEFROMordersWHEREshipcity=London;,数据控件的Recordset属性,Recordset是Adodc控件的一个属性,同时本身就是一个功能强大的对象记录集对象。窗口加载时,如果控件的各属性都设置正确,将自动创建基于这些属性的记录集对象,即Adodc1.RecordSet注意:该属性和RecordSource不同,RecordSouce是一个字符串对象,指定记录的来源,而RecordSet则是真正得到的记录集合,是对象类型,RecordCount:指示当前记录集的记录总数如取得本次记录集中的记录总数,并显示在一个文本框中,代码是这样的:Text1.Text=Adodc1.Recordset.RecordCount,记录集的个数,记录集通常顺序读取,有一个记录指针指示当前的记录位置。AbsolutePosition:指示当前记录在记录集中的确切位置(当前是第几条记录),从0开始计数。BOF:指示当前记录是否指到首记录之前EOF:指示当前记录是否指到尾记录之后如打印所有客户的名称:DoWhileNotAdodc1.Recordset.EOFPrintAdodc1.Recordset(“CompanyName”)Adodc1.Recordset.MoveNextLoop,记录集的当前记录位置,Recordset对象含有由Field对象组成的Fields集合,一个Fields集合中包含多少元素,由Fields的Count属性指明。Fields:表示记录集的字段信息,主要属性有:Name属性:可返回字段名。Value属性:可查看或更改数据库字段值,该属性是Field对象的缺省属性。Type属性:可返回字段的类型。DefinedSize属性:返回已声明的字段大小。ActualSize属性:返回给定字段中数据的实际大小。,记录集的字段信息,访问某个记录的字段信息,就是访问要访问Fields集合中的某个Field对象,有两种方法:可以利用字段在集合中的索引位置(编号从0开始),如Fields(1)、Fields(2)或者直接使用字段名,如Fields(“Address”)、Fields(“电话”)等等。例如取出当前记录所有字段的值,可以使用下面的循环:Fori=0ToAdodc1.Recordset.Fields.Count-1PrintAdodc1.Recordset.Fields(i).NameDataSource=C:ProgramFilesMicrosoftVisualStudioVB98NWIND.MDB;PersistSecurityInfo=FalseadoConnection.Open与数据库建立连接SetadoCommand.ActiveConnection=adoConnection设置活动连接adoCommand.CommandType=adCmdTable设置命令类型adoCommand.CommandText=orders“指定命令文本SetadoRecordset=adoCommand.Execute执行命令,返回结果adoRecordset.AddNew使用Recordset对象adoRecordset.Close关闭记录集adoConnection.Close关闭连接SetadoConnection=Nothing删除对象SetadoCommand=NothingSetadoRecordset=Nothing,使用ADO对象的简化步骤,创建Connection对象与数据源建立连接创建Recordset对象,并设置好活动连接和其它重要属性使用Recordset对象的Open方法,直接打开一个记录集,如果仅仅是对记录集的操作,而不使用其它的SQL命令,则可以使用上述步骤。而且这样返回的记录集比较灵活,支持的操作多。,使用ADO对象的简化步骤,DimadoConnectionAsNewADODB.Connection创建Connection对象DimadoCommandAsNewADODB.Command创建Command对象DimadoRecordsetAsADODB.Recordset声明一个Recordset对象建立数据库连接adoConnection.ConnectionString=Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:ProgramFilesMicrosoftVisualStudioVB98NWIND.MDB;PersistSecurityInfo=FalseadoConnection.Open建立记录集adoRecordset.ActiveConnection=adoConnection设置数据库连接adoRecordset.Source=select*fromCustomers设置数据来源adoRecordset.Open打开记录集(从数据库获取数据),Connection对象的属性,ConnectionString:连接字符串该属性在连接建立之前是可以修改的,一旦连接建立好后,则为只读。ConnectionTimeOut:允许连接建立的时间,如果为0,则表示无条件等待直到连接建立。State:表示当前连接的状态是打开还是关闭。该属性不能被修改。,Connection对象的方法,Open:打开连接,即真正与数据库建立连接例:DimadoConnectionAsNewADODB.ConnectionadoConnection.ConnectionString=Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:Nwind.mdb;PersistSecurityInfo=FalseadoConnection.Open,Command对象的属性,ActiveConnection:指定当前使用的连接,即建立与Connection对象的连接CommandType:设置命令类型,取值为:adCmdTable:指定CommandText是一个表名(通过SQL命令)adCmdTableDirect:指定CommandText是一个表名adCmdText:指定CommandText是一个文本,如SQL命令adCmdStoredProc:指定CommandText是一个存储过程名称adCmdFile:指定CommandText是一个文件名adCmdUnknown:未知类型,数据对象自动检查CommandText:设置执行的SQL命令、表名、存储过程,Command对象的方法,Execute:执行命令,语法如下:Mycon.Execute执行的结果有两种类型:当执行表查询或Select语句就会返回行(记录),即返回一个Recordset记录集执行其它非查询的语句不会返回行,如Insert,必须先设定所有相关的属性,才能使用该方法。,执行命令举例,建立连接SetadoCon=NewADODB.ConnectionadoCon.ConnectionString=“DSN=vbtest;UserID=sa;”adoCon.open执行命令SetadoCom=NewADODB.CommandSetadoCom.ActiveConnection=adoConadoCom.CommandText=“select*fromproducts”SetadoRst=adoCom.Execute,ADO的Recordset对象的产生,方法一:使用Command对象的Execute方法返回一个Recordset(就是前面所讲的一般步骤)SetadoRst=adoCom.Execute方法二:直接使用Recordset对象本身的Open方法(就是前面所讲的简化步骤)adoRst.Open,设置Recordset对象属性举例,SetadoRst3=NewADODB.RecordsetadoRst3.ActiveConnection=adoConnectionadoRst3.CursorType=adOpenForwardOnlyadoRst3.CursorLocation=adUseClientadoRst3.Source=“Customers”adoRst3.Open,使用ADO对象查询数据库,【例】不使用数据控件,实现记录的浏览。编程思路:窗体加载事件中设置好各个对象的属性,关键在于创建好RecordSet数据对象。,DimadoConAsNewADODB.Connection,adoRstAsNewADODB.RecordsetPrivateSubForm_Load()adoCon.OpenProvider=Microsoft.Jet.OLEDB.4.0;DataSource=C:Nwind.mdb;PersistSecurityInfo=FalseSetadoRst.ActiveConnection=adoConadoRst.CursorType=adOpenDynamicadoRst.Source=select*fromCustomersadoRst.OpenCallDisplayEndSub,数据库示例8,PrivateSubDisplay()Text1.Text=adoRst(“CustomerID”)Text2.Text=adoRst(“CompanyName”)Text3.Text=adoRst(“Address”)Text3.Text=adoRst(“Phone”)EndSub,PrivateSubcmdFirst_Click()adoRst.MoveFirstCallDisplayEndSub,数据环境设计器DataEnvironment,数据环境设计器为在程序中创建ADO对象提供了一个交互的设计和编程环境。比如可以在界面中创建Connection和Command对象,并设置属性值;创建合计和层次结构;拖动对象到窗体自动创建数据绑定控件。要使用数据环境设计器,只需要向一个工程中添加一个“DataEnvironment”,然后就会在“工程资源管理器”窗口中列出,鼠标双击就能打开。,数据报表设计器DataReport,数据报表设计器是一个多功能的报表生成器,可以创建联合分层结构的报表。要使用数据报表设计器,只需要向一个工程中添加一个“DataReport”,然后就会在“工程资源管理器”窗口中列出,鼠标双击就能打开一个数据报表设计器窗口,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!