第9章深入进行数据库编程.ppt

上传人:本田雅阁 文档编号:2609874 上传时间:2019-04-17 格式:PPT 页数:81 大小:2.02MB
返回 下载 相关 举报
第9章深入进行数据库编程.ppt_第1页
第1页 / 共81页
第9章深入进行数据库编程.ppt_第2页
第2页 / 共81页
第9章深入进行数据库编程.ppt_第3页
第3页 / 共81页
亲,该文档总共81页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第9章深入进行数据库编程.ppt》由会员分享,可在线阅读,更多相关《第9章深入进行数据库编程.ppt(81页珍藏版)》请在三一文库上搜索。

1、第9章深入进行数据库编程,主讲:林妙兰 茂名广播电视大学,本章内容简介,9.1 ADO的内部对象,Connection对象又称连接对象,主要用来建立与数据库的连接。 Command对象又称命令对象,是对数据库执行命令的对象,它可以执行对数据库查询、添加、删除、修改等记录操作。 Recordset对象又称记录集对象,用来得到从数据库返回的记录集 。 Error、Parameter、ield分别是 它们的子对象,9.2 Connection对象,9.2.1 建立Connection对象 9.2.2 Connection对象的属性和方法 9.2.3 排序显示数据 9.2.4 查找数据 9.2.5 链

2、接到详细页面 9.2.6 事务处理 9.2.7 Error对象和Errors集合,9.2.1 建立Connection对象,建立Connection对象的方法一般如下: Set Connection对象实例=Server.CreateObject(“ADODB.Connection“) Connection对象实例.Open 数据库连接字符串 在上面的数据库连接字符串中,会用到若干参数,如 DSN :ODBC数据源名称 User:数据库登录用户名 Password:数据库登录密码 Driver :数据库的驱动程序类型 Dbq :数据库的物理路径 Provider: 数据提供者 Data Sou

3、rce:数据库的物理路径,连接数据库的具体方法,常用的数据库连接字符串的形式: (1)基于ODBC数据源的连接方式 “Dsn=address2“ (2)基于ODBC数据源的连接方式的省略方式 “address2“ (3)基于ODBC但是没有数据源的连接方式 “Driver=Microsoft Access Driver (*.mdb); Dbq=C:Inetpubwwwrootasptempchapter9address.mdb“ (4)基于ODBC但是没有数据源的连接方式(使用Server.MapPath转换路径) “Driver=Microsoft Access Driver (*.mdb

4、);Dbq=“ Data Source=“ & Server.Mappath(“address.mdb“),9.2.2 Connection对象的常用属性,(1)ConnectionTimeOut、CommandTimeOut属性 用于设置Connection对象的Open方法和Execute方法的最长执行时间。 (2)ConnectionString、Provider、Mode属性 这几个属性通常用来设置数据库连接信息或连接权限等。 其中ConnectionString属性用于指定数据库连接字符串,如: Provider属性用于指定OLE DB提供者,如:conn.Provider=“Mic

5、rosoft.Jet.OLEDB.4.0“ Mode属性用来设置连接数据库的权限,利用该属性就可以在打开数据库时限制数据库的连接方式,比如只读或只写.,Connection对象的方法,Open、Close方法 Open方法用来建立与数据库的连接,Close方法用来关闭一个已打开的Connection对象及其相关的各种对象。 Execute方法 方法用来执行数据库查询,在第8章中,大家已经看到了利用该方法可以完成查询、添加、更新和删除记录的功能。 BeginTrans、CommitTrans、RollbackTrans方法 其中BeginTrans方法用于开始一个事务处理;CommitTrans

6、方法用于提交事务处理结果,只有执行该方法后,才将结束事务处理通道并且真正更新数据库的内容;RollbackTrans用于取消事务处理结果,执行该方法后,将结束事务处理通道并且取消当前事务处理中的任何更新动作。,9.2.3 排序显示数据,一般,我们会用Order By来实现对查询到的记录按某个字段排序的功能,但是许多网站有这样的效果,单击表格中某一列的标题就可以按相应的字段排序了,那么这一功能又是怎么实现的? 下面举例来说明: 本示例的中心思想是给列标题添加超链接;单击该超链接就重新打开本页面,不过会将排序字段名称附加在查询字符串中传递过来;然后在Select语句中就可以按该字段排序了。,按各字

7、段排序的示例,9.2.4 查找数据,许多网站都有查找数据的页面,可以按照一个或多个字段查找符合条件的数据。下面就来制作一个按照姓名字段查找人员的例子。 本示例的中心思想是利用表单输入姓名,然后在Select语句中利用Where条件进行模糊查找。,查找数据示例,9.2.5 链接到详细页面,如果一个数据表中含有很多字段,都显示在页面中就会有很多列,看起来不太方便和美观。通常做法是只显示若干重要字段,然后单击一个“详细”超链接,就可以打开一个详细页面,在详细页面中可以显示所有字段内容。 下面举例来说明,在主页面中只显示了部分字段,并增加了“详细”超链接,点详细后可查看到所有字段。,链接到详细页面示例

8、,9.2.6 事务处理,为什么要进行事务处理? 银行转账示例 而BeginTrans、CommitTrans和RollbackTrans方法就是来解决这个问题的。当利用BeginTrans开始一个事务处理后,此后的所有更新都是暂时的,只有利用CommitTrans提交事务处理结果后,才真正更新数据库中的信息。如果中间发生错误,没有提交事务处理结果,则所有的更新都无效。,事务处理示例,9.2.7 Error对象和Errors集合,Error对象和Errors集合 Error对象,它又称为错误对象,是Connection对象的子对象。数据库程序运行时,一个错误就是一个Error对象,所有的Erro

9、r对象就组成了Errors集合,又称错误集合。对象和集合的关系:汽车示例 Errors集合的属性和方法: Error对象的常用属性:,Error对象和Errors集合示例,9.3 Command对象,9.3.1 建立Command对象 9.3.2 Command对象的属性和方法 9.3.3 利用Command对象存取数据库 9.3.4 非参数查询 9.3.5 参数查询 9.3.6 Parameter对象和Parameters集合,9.3.1 建立Command对象,Command对象 又称命令对象,它是介于Connection对象和Recordset对象之间的一个对象,它主要通过传递SQL指令

10、,对数据库提出查询、添加、删除、更新记录等操作请求,然后把得到的结果返回给Recordset对象。 Command对象依赖Connection对象,因为Command对象必须经过一个已经建立的Connection对象才能发出SQL指令,只是实际开发时常常省略了Command对象。,建立Command对象的方法,建立Command对象的方法(1) 首先建立Connection对象实例,然后再建立Command对象实例,如下: 建立 Command对象的方法(2) 不建立Connection对象,直接建立Command对象,如下: 这种建立方法其实也要隐含建立Connection对象,但是,因为没

11、有明确建立Connection对象,就不能使用Connection对象的Execute等方法了。,9.3.2 Command对象的属性,Command对象的常用属性,Command对象的几个常用属性 (1)CommandText属性:该属性用于指定Command对象要对数据库进行操作的指令,一般是SQL语句,不过也可以是数据表名、查询名或存储过程名。例如: (2) CommandType属性:用于告诉Command对象数据查询指令的类型,究竟是SQL语句、表名还是查询名或存储过程名?例如: ,Command对象的方法,Command对象的几个常用方法: (1)Execute方法 该方法用来执行

12、数据库查询,包括查询记录、添加、删除、更新记录等各种操作,它的语法也有两种: Set Recordset对象实例= Command对象实例.Execute 或Command对象实例.Execute 在使用Execute方法之前,需要用CommandText指定数据库查询指令,告诉数据库要做什么操作。下面请看例子: (2)CreateParameter方法:该方法用来创造一个新的Parameter对象(参数对象),主要是在进行参数查询时使用,后面将专门讲述。,9.3.3 利用Command对象存取数据库,利用Command对象存取数据库时,首先建立一个Connection对象,然后建立一个Com

13、mand对象,之后的操作和Connection对象非常类似,下面来看一个综合示例。,9.3.4 非参数查询,查询一般分为含参数的参数查询和不含参数的非参数查询两种。之所以要使用查询,主要是希望将查询指令放在数据库中执行而不是在ASP中执行,这样的优点是可以加快速度,对于大型网站就比较有意义。 下面举例来介绍非参数查询的用法,首先建立一个查询qryList,语句如下: Select * From tbAddress Order By ID Desc,非参数查询示例,9.3.5 参数查询,下面先来建立一个参数查询qryList2 ,语句如下: Select * From tbAddress Whe

14、re strName=varName 所谓参数查询,指的就是SQL语句中含有一个参数。比如上面的varName是一个变量,它就是要传入的参数,执行时,根据传入的varName的值返回相关记录。,参数查询示例,9.3.6 Parameter对象和Parameters集合,一个参数就是一个Parameter对象,若干个Parameter对象组成一个Parameters集合。 Parameters集合常用的属性和方法:,建立Parameter对象,建立Parameter对象需要使用Command对象的CreateParameter方法。语法如下。 Set Parameter对象实例=Command对

15、象实例.CreateParameter(name,type,direction,size,value),Parameter对象的属性和方法,9.4 Recordset对象,9.4.1 建立Recordset对象 9.4.2 Recordset对象的属性和方法 9.4.3 利用Recordset对象存取数据库 9.4.4 添加不完整的记录 9.4.5 分页显示数据 9.4.6 Field对象和Fields集合,Recordset对象,Recordset对象 又称记录集对象。当用Command对象或Connection对象执行查询指令后,就会返回一个记录集对象,该记录集包含满足条件的所有记录,然后

16、就可以利用ASP语句将记录集的数据显示在页面上。 本节就来讲解Recordset对象更多的功能 建立Recordset对象的方法 利用Recordset对象实现添加、删除或更新记录操作; 数据分页显示的技术。,9.4.1 建立Recordset对象,建立Recordset对象,语法如下。 Set Recordset对象实例=Server.CreateObject(“ADODB.Recordset“) Recordset对象实例.Open Source, ActiveConnection, CursorType, LockType, Options,建立Recordset对象的方法 1,利用Co

17、nnection对象的Execute方法建立 说明: 这种方法是最常用的方法。 它没有明确建立Command对象,但是会建立一个隐含的Command对象。,建立Recordset对象的方法 2,利用Comand对象的Execute方法建立 说明:该方法明确建立了Connection对象和Command对象 。,建立Recordset对象的方法 3,利用Connection对象但明确建立Recordset对象的方式 说明:这是将方法一修改为明确建立Recordset对象。,建立Recordset对象的方法 4,利用Command对象但明确建立Recordset对象的方式 说明:这种方法明确建立三

18、个对象,功能最强大,也最科学。,建立Recordset对象的方法 5,直接建立Recordset对象 说明:这种方法由于没有明确建立Connection对象和Command对象,就无法使用他们的特殊功能。,建立Recordset对象的总结,一般只有在查询记录时才会需要建立Recordset对象。而插入、删除和修改记录时则不需要返回记录集,所以一般就利用Connection对象或Command对象的Execute方法就可以了。 关于记录集 记录集,好比内存中的虚拟数据表,保存了满足查找条件的所有记录。,记录集结构图,9.4.2 Recordset对象的属性和方法,Recordset对象的常用属性

19、如下图:,Recordset对象的重要属性(1),(1)Source、ActiveConnection、CursorType、LockType属性 这一组属性主要用于限定记录集的特性,和上一节建立Recordset对象时的参数基本上是一致的。不过它们需要在打开记录集前设置,比如下面就用这几个属性改写上一节建立Recordset对象的方法(3)。 ,Recordset对象的重要属性(2),MaxRecords、Filter属性 这两个属性都是用来过滤记录集的。 其中MaxRecords属性用于设置从数据库取得的记录集的最大记录数目。例如下面的语句将限制最多返回100条记录: Filter属性可以

20、利用条件表达式设置希望显示的记录。例如下面语句将只返回intAge字段大于18并且小于25的记录: 18 And intAge,Recordset对象的重要属性(3、4),(3)RecordCount属性 该属性用于返回记录集中的记录总数。例如下面语句将输出记录总数: (4)Bof、Eof属性 这两个属性用于判断当前记录指针是否指向记录集的开头或结尾,返回值为True或False。当指针指向开头时,Bof属性的值为True;当指针指向结尾时,Eof属性的值为False。,Recordset对象的重要属性(5),PageSize、PageCount、AbsolutePage、AbsolutePo

21、sition属性 这一组属性用来完成分页显示数据的功能。其中PageSize属性用于设置每一页的记录数。例如下面语句将设置每页显示10条记录: PageCount属性:用于返回数据页的总数,如下面语句将输出数据页总数: AbsolutePage属性:用于设置当前指针指向哪一页,如下面语句将指向第2页: AbsolutePosition属性:用于设置当前指针指向的记录行的绝对值,如下面语句将指向第10条记录: 利用这几个属性时一般也要求设置指针类型为1(键盘指针),Recordset对象的重要属性(6),(6)BookMark属性 该属性用于设置或返回书签位置,例如下面语句就可以将当前记录位置保

22、存到一个变量中: 当希望重新指向该记录时,只要将该变量赋值给BookMark属性即可,记录指针就会自动指向书签所在记录。如: ,Recordset对象的常用方法,Recordset对象的重要方法(1),Open、Close、Requery方法 这一组方法主要是关于Recordset对象本身的。其中Open方法在上一节已经详细讲解过,用于打开一个记录集。 Close方法用于关闭记录集。例如: Requery方法用于重新打开记录集,相当于先关闭再打开。例如: ,Recordset对象的重要方法(2),MoveFirst、MovePrevious、MoveNext、MoveLast、Move方法 M

23、oveFirst方法用于将记录指针移动到第1条记录。 MovePrevious方法用于将记录指针向后(或向上)移动一条记录。 MoveNext方法用于将记录指针向前(或向下)移动一条记录。 MoveLast方法用于将指针移动到最后一条记录。 Move方法用于将指针移动到指定的记录。语法为: Recordset对象.Move number,start 其中start表示指针移动的开始位置,如省略默认为当前指针位置;number表示从start设置的起始位置向前或向后移动number条记录,Recordset对象的重要方法(3),AddNew、Delete、Update、CancelUpdate方

24、法 这一组方法用来添加、删除和更新记录。 添加记录时一般要同时用到AddNew方法和Update方法,例如: 删除记录时比较简单,首先将指针移动到要删除的记录,然后利用Delete方法就可以删除当前记录,不过还要用Update方法更新数据库。 更新记录时首先将指针移动到要更新记录,然后直接给字段赋值,之后使用Update方法更新数据库即可。 CancelUpdate方法用来取消刚才添加、删除和更新记录的操作。,Recordset对象的重要方法(4),Find方法 该方法用来查找符合条件的单个记录,语法如下: Recordset对象实例.Find criteria, skipRows, sear

25、chDirection, start 下面来看两个常用的例子: ,Recordset对象的重要方法(5),GetRows方法 该方法用来从记录集中当前记录开始返回多条记录,它将符合要求的数据返回给一个二维数组。例如下面语句将从当前记录开始返回10条记录 ,9.4.3 利用Recordset对象存取数据库,利用Recordset对象也可以执行查询、添加、删除和更新记录的操作,其中查询记录和之前学的基本一样,而添加、删除和更新记录就要用到上一节讲述的AddNew、Delete和Update方法。 下面请看示例:,Recordset对象存取数据库示例,9.4.4 添加不完整的记录,下面就讲解利用Re

26、cordset对象的AddNew方法来添加不完整记录的方法。,9.4.5 分页显示数据,分页显示示意图: 分页显示数据的思想是:首先显示第1页数据,并且在下方提供页码链接,当客户选择页码时,仍然传递到本文件,并显示新的一页。,分页显示数据示例,9.4.6 Field对象和Fields集合,Field对象又称字段对象,是Recordset的子对象。简单地说:一个记录集就好比一个电子表格,该表格内总是包含有许多列(字段),每一个字段就是一个Field对象,而所有Field对象组合起来就是一个Fields集合。 输出字段值的几种方法: Response.Write rs(“name“) Respon

27、se.Write rs.Fields(“name“) Response.Write rs.Fields(“name“).Value Response.Write rs.Fields.Item(“name“).Value Response.Write rs(1) Response.Write rs.Fields(1) Response.Write rs.Fields(1).Value Response.Write rs.Fields.Item(1).Value,Fields集合的属性和方法,(1)Count属性 该属性用于返回Fields集合中Fields对象的数目。语法为: Recordset

28、对象实例.Fields.Count (2)Item方法 Fields集合中包含了多个Field对象,而利用Item方法就可以建立每一个Field对象的实例。语法为: Set Field对象实例= Recordset对象实例.Fields.Item(index) 或者 Set Field对象实例= Recordset对象实例.Fields.Item(string),Field对象的属性和方法,Field对象常用属性和方法如下:,Field对象的常用属性示例,Fields集合与Field对象的反思,由于Field对象实在太重要了,因此ASP把它作为默认的了,Fields、Item、Value都可以

29、省略不写。比如,在上面的例子中,其实不需要建立Field对象,直接用如下语句即可输出属性值: ,9.5 存取SQL Server数据库,存取SQL Server数据库(以下简称SQL数据库)其实和存取Access数据库是一样的,只是数据库连接字符串略有区别,其他部分基本一样。下面将着重介绍具体的连接方法。 假设已经建立了一个SQL数据库Database名称为sqltest,数据库登录账号jjshang,登录密码123456,ODBC数据源名称为test。数据表和字段与Access数据库address.mdb基本相似。,(1)基于ODBC数据源的连接方式, 同连接Access数据库一样,也可以省

30、略为: ,(2)基于ODBC但没有数据源的连接,连接方法如下: 其中Server参数表示SQL数据库服务器地址; localhost表示本机,也可以使用127.0.0.1或本机IP地址。如果使用其他服务器上的SQL数据库,只要将localhost替换为该服务器的IP地址即可。,(3)创建基于OLE DB的连接,SQL数据库也可以使用SQL Server的OLE DB提供程序连接,例子如下: ,存取SQL数据库总结,连上SQL数据库后,所有操作同Access数据库,程序基本不用改动。 需要特别说明的是,在SQL语句中,日期字段值两边的#号要改为单引号。 Access数据库和SQL数据库是可以相互

31、转化的 可以将Access数据库导入SQL,或者将SQL数据库导出为Access数据库。 实际开发时,可以先用Access数据库,这样方便些。等基本上开发好后,再导入到SQL数据库中。而要修改的是就是个别字段的类型和连接数据库的语句。 但是SQL数据库还是要稳定些, 大型网站应该采用SQL数据库。,9.6 对多个表进行组合查询,多个表中组合查询数据的情况 也就是说从这个表中取若干个字段,再从另一个表中取若干个字段,其实主要用到的就是Select语句中的组合查询语句。 下面我们举例说明:建立数据库userinfo.mdb,它包括两张表:表tbUsers包含用户名、密码、真实姓名、性别等字段,表t

32、bLog包括用户名、登录IP、登录时间字段。现在需要从tbUsers中选取用户名和真实姓名,从daylog中选取登录IP和登录时间。具体请看代码。,多个表进行组合查询的示例,9.7 通讯录综合示例,9.7.1 通讯录的设计 9.7.2 通讯录的实现 9.7.3 关于通讯录的讨论,9.7.1 通讯录的设计,现在就来综合前两章所学内容,来实现一个功能更为复杂的通讯录。 本通讯录要求能够分页、排序显示数据,并在详细页面中显示详细信息,能够添加、更新和删除记录,能够查找记录。实际上就是要将前面所学功能整合到一起。 本通讯录具体包括如下9个文件: address.mdb数据库文件; odbc_conne

33、ction.asp连接数据库文件; config.asp配置文件,用来声明一些常数; index.asp首页,使用分页和排序显示所有人员信息; particular.asp显示人员详细信息文件; search.asp查找人员文件。 insert.asp添加人员文件; delete.asp删除人员文件; update.asp更新人员信息文件;,9.7.2 通讯录的实现(1),下面就简要讲解一下每个文件的重点和难点 (1)数据库连接文件odbc_connection.asp 由于很多文件都要用到连接数据库的语句,为了方便,可以将这部分单独保存成一个文件,然后在其他文件中用“”将其包含进来,这就相当

34、于将这些语句直接写在别的文件中。,通讯录的实现(2),(2)配置文件config.asp 这是一个配置文件,主要用来声明一些常数,在其他文件中也可以用Include语句包含进来。这样做的好处可以方便修改程序中的一些参数。比如如果要修改分页显示数据时每页的记录数,只要修改下面的文件即可。,通讯录的实现(3),(3)首页index.asp 这是本程序的首页,其中将本章的分页显示数据、排序显示数据、链接到详细页面三个示例整合到了一起。另外,还增加了“添加记录、查找记录、更新记录、删除记录”的超链接。 下面是程序代码和运行结果:,通讯录的实现(4),(4)详细页面文件particular.asp 本页

35、面和9.2.5节的详细页面示例基本上是一样的。请大家自己学习体会。 (5)查找人员文件search.asp 本页面是在9.2.4节查找记录示例的基础上修改而成的。其中只是将表格等HTML代码都用Response.Write方法输出了,另外,添加了“更新”、“删除”和“详细”超链接,也请大家自己学习体会。 (6)添加人员文件insert.asp和删除人员文件delete.asp 这两个页面也很简单,请大家自己学习体会,通讯录的实现(5),(8)更新人员信息文件update.asp 本页面实际上是在8.3.4节更新记录示例的基础上修改的,只不过将两个文件合并成了一个文件 ,请看具体代码:,9.7.

36、3 关于通讯录的讨论,上面的通讯录已经是一个比较实用的数据库程序了。 不过,如果要用在公众网上,还需要解决安全问题。因为现在任何人都可以添加、删除和更新记录。实际上应该加上管理界面,管理员输入密码后才可以删除或更新记录。 此外,本示例在容错性等细节方面考虑还不够,比如在查找记录页面单击“删除”或“更新”超链接,执行完毕后不会返回本页面,而会直接返回首页index.asp。大家可以结合这两章内容自行完善。,9.8 本章小结,本章主要讲述了ADO的3个对象:Connection、Command和Recordset对象。并分别讲述了它们的3个子对象Error、Parameter和Field对象。 关于本章,希望大家重点掌握的是3个对象的概念和彼此的关系,以及使用事务处理,分页显示数据、从多个表中组合查询 等知识点,并且要认真体会最后一个综合示例。 本章内容确实非常庞杂,不过大家不用担心,在实际开发中只要使用最常用的方法即可。,Thank You !,,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1