使用ADO访问数据库.ppt

上传人:小飞机 文档编号:6549070 上传时间:2023-11-11 格式:PPT 页数:85 大小:253.66KB
返回 下载 相关 举报
使用ADO访问数据库.ppt_第1页
第1页 / 共85页
使用ADO访问数据库.ppt_第2页
第2页 / 共85页
使用ADO访问数据库.ppt_第3页
第3页 / 共85页
使用ADO访问数据库.ppt_第4页
第4页 / 共85页
使用ADO访问数据库.ppt_第5页
第5页 / 共85页
点击查看更多>>
资源描述

《使用ADO访问数据库.ppt》由会员分享,可在线阅读,更多相关《使用ADO访问数据库.ppt(85页珍藏版)》请在三一办公上搜索。

1、第13章 使用ADO访问数据库,13.1 ASP与ADO 13.2 建 立 连 接 13.3 Recordset对象13.4 Command对象,ASP提供了强大的访问数据库的功能。用ASP访问数据库所使用的是ADO(ActiveX Data Objects)组件。使用ADO编写的ASP程序,不仅能够访问Access数据库,能够访问包括Oracle、MS SQL Server、Sybase等支持OLE DB、ODBC的数据库。,13.1 ASP与ADO,13.1.1 ASP与数据库通过ADO对象,ASP可以访问Oracle、Sybase、MS SQL Server、Access、FoxPro等

2、各种支持ODBC或OLEDB的数据库。也就是说,只要具有某种数据库的ODBC或OLEDB驱动程序,就可以通过ADO访问数据库。ASP、ADO、OLEDB及各种数据库之间的关系如图13-1所示。,13.1.2 ADO的概念和结构ODBC(Open Database Connectivity)是微软公司开发的一套开放数据库应用程序的接口规范,是广泛使用的数据库接口。使用ODBC开发数据库应用程序的方法是建立ODBC 数据源,通过ODBC接口函数,提交SQL语句并接收执行SQL命令的结果。数据库的底层操作由各个数据库的驱动程序完成。,OLE DB是以ActiveX技术为基础的数据访问技术标准。OLE

3、 DB基于组件模型;可以访问多种格式的数据,包括数据库的数据和非数据库的数据。OLE DB标准的具体实现是一组API函数。使用OLE DB API,可以编写能够访问符合OLE DB标准的任何数据源应用程序。,为了使各种流行的编程语言都能编写符合OLE DB标准的应用程序,微软公司在OLE DB API之上提供了一种面向对象的、与语言无关的应用程序编写接口,就是ADO。ADO是一项数据库访问技术。ADO具有如下优点。,对于程序设计者而言,ADO很容易掌握和使用。ADO能够被Visual Basic、Java、C+、VBScript及Jscript等程序设计语言所支持。ADO能够访问各种支持OLE

4、 DB的数据源,也就是说,通过ADO能够访问具有OLE DB驱动程序的数据源。ADO允许C+的程序员访问OLE DB的底层接口。,ADO包括7个对象及集合,其主要作用描述如下。(1)Connection对象Connection对象用于建立数据源与ADO应用程序之间的连接。,(2)Recordset对象Recordset对象是ADO中最重要的对象之一,是对数据库进行检索后的数据记录集。这个记录集既可以是Command对象返回的查询结果,也可以是直接运行SQL命令产生的查询结果。Recordset对象把数据库检索的结果封装在一起,并通过它的方法和属性提供一种方便、快捷地访问每条记录、每个字段的方法

5、。,(3)Command对象Command对象用于定义数据库的查询动作,一般使用SQL命令,也可以使用存储过程。Command对象允许指定参数,其参数通过Parameter对象赋值、使用。,(4)Parameter对象Parameter对象的作用是将存储过程和参数查询所需的参数传递给Command对象。存储过程是SQL语言的过程。一个Command对象上的所有Parameter对象构成Parameters集合。,(5)Field对象Field对象能够使我们读取记录集(Recordset)对象中各个字段的字段值。定义在一个Recordset对象上的所有Field对象构成Fields集合。,(6)

6、Property对象Property对象能够指明一个ADO对象的属性。所有的Property对象构成Properties集合。这个集合与Connection、Command、Recordset或Field对象相关联。,(7)Error对象Error对象的作用是返回一个数据库连接(Connection)上产生的错误。ADO对象及集合的关系如图13-2所示。,在ADO的对象中,Connection、Command和Recordset三个对象是顶层对象,也是最重要的对象。我们能够单独的创建、释放这三个对象。而其他对象,尽管可以单独创建对象,但是在使用之前,必须与有关的对象相关联。Field、Erro

7、r和Property 对象在其双亲对象存在的情况下才存在,不能单独的创建这些对象。,Connection对象用于建立应用程序与数据库的连接。在这个基础之上,可以使用Command对象和Recordset对象对所连接的数据库进行各种操作。Command对象用于定义数据库的查询操作,主要采用SQL语言描述查询动作。Recordset对象对应于Command对象的返回结果。当然Recordset对象也可以直接建立一个Recordset,即不显式地为Recordset创建Connection或 Command对象,但实际上通过Recordset对象的一些参数设置了Connection对象和Comman

8、d对象的属性。,13.2 建 立 连 接,13.2.1 使用Connection对象建立连接Connection对象用于应用程序与服务器之间的连接。使用Connection对象可以确定以何种方式建立与服务器的连接,设置查询条件,检查整个处理过程中发生的错误。,1建立和关闭连接对象建立Connection对象的方法如下。,“Server.CreateObject”的含义是执行ASP内置的Server对象的CreateObject 方法,创建一个“ADODB.Connection”对象。新创建的连接对象实例被赋值给对象变量“objCn”,即ObjCn就是与数据库建立连接的对象变量。关闭Connec

9、tion对象的方法是:,“Close”是Connection对象的方法,其作用是关闭Connection对象,将应用程序与数据库的连接断开。但objCn仍在内存中,没有释放所占用的空间。释放对象变量的方法是:,2与数据源建立连接建立连接对象,仅仅是创建了一个Connection对象的实例,并没有真正地与一个数据库建立起连接。建立连接的操作通过Connection对象的Open方法实现。,Connection对象的Open方法的基本语法格式如下.Open ConnectionStringConnectionString是连接参数,指明了连接的数据库类型、名称等。,需要说明的是,建立连接等操作的成

10、功与否,在浏览器上没有任何显示。不同类别的数据库,具有不同的驱动程序,相应的具有不同的连接参数和格式。,13.2.2 Connection对象的属性1CommandTimeOut属性CommandTimeOut属性用于设置等待时间。在使用Connection对象的Execute方法运行一个查询时,如果由于网络负担过重或其他原因造成在指定的CommandTimeOut时间内未能完成有关操作,则系统会自动取消Execute方法的执行。,如果将CommandTimeOut的属性值设为0,则系统无限期等待命令的执行。默认值为30秒。2ConnectionString属性ConnectionString

11、属性指定了与数据库建立连接的参数,包括所连接的数据库类型、名称等。连接参数是由若干形如“参数=值;”的表达式连接而成。,3ConnectionTimeOut属性ConnectionTimeOut属性用于设置执行Open方法时的超时时间。当超过指定的ConnectionTimeOut时间仍未完成连接操作,系统自动终止Open方法的执行。如果设置ConnectionTimeOut为0,则程序一直等待Open 方法的执行,直到连接成功。ConnectionTimeOut属性的默认值为15秒。,4DefaultDatabase属性DefaultDatabase属性可以设置或返回Connection对象

12、的默认数据库。,13.2.3 通过Connection对象执行查询命令ADO的Connection对象的主要作用是建立数据库的连接。实际上,Connection对象还可以直接执行查询命令。使用Connection对象的Execute方法能够执行指定的SQL查询命令或由SQL命令构成的文本。,Execute方法格式如下:.Execute CommandText,RecordsetAffectd,Options其中的“CommandText”是包含表名的 SQL语句。“RecordsetAffectd”是可选参数,若需要知道执行该命令所影响的记录数,可以在此放置一个变量,待命令执行完毕,检查该变量

13、的值即可。“Options”是可选参数,用于指定CommandText的类型,如存储过程、命令等。,13.3 Recordset对象,从数据库中读取的数据记录通过Recordset对象处理。使用Recordset对象,可以对数据库中数据表的数据进行各种操作,如插入记录、删除记录、更新记录、检索数据等。Recordset对象保存数据的方式类似于二维表,包括字段和记录。,13.3.1 建立Recordset对象使用Recordset对象时,需要声明一个Recordset对象的实例,即创建一个Recordset对象的对象变量。其语法格式如下:Set对象变量=Server.CreateObject(“

14、ADODB.Recordset”),以上命令的含义是建立一个ADODB.Recordset类型的对象,并赋值给对象变量。对象变量建立后,可以使用Open方法建立一个Recordset。Recordset对象的Open方法的基本格式如下。.Open Source,ConnectionStringSource是一个SQL命令,也就是查询要求。ConnectionString是连接参数。,例如,从课程管理数据库中读取学生的基本信息,可以使用如下的命令。,需要说明的是可以使用多种方式建立Recordset对象。一种方式就是上面提到的直接使用Recordset对象的Open 方法建立Recordset。

15、另一种方法是首先建立一个Connection对象,然后使Connection对象与Recordset对象建立关联,从而得到建立了连接的Recordset对象。还有一种方法是通过Connection对象的Execute方法执行有关查询,产生Recordset对象,还可以通过Command对象建立Recordset对象。,13.3.2 使用Recordset访问数据库从Recordset对象中读取数据记录时需要使用“记录指针”。从数据库中读取数据、建立Recordset后,有一个“记录指针”指向第一条记录。此时,可以读取这条记录中各个字段的数据,而且只能读取这条记录的数据。就是说,在同一个时刻只能

16、读取当前记录中的数据,即记录指针所指向的记录。如果要读取其他记录的数据时,必须把“记录指针”移动到要访问的记录上。,1读取数据例13.3 读取Recordset中的字段。使用Recordset 读取数据,%Set RS=Server.CreateObject(ADODB.Recordset)cnStr=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=_&Server.MapPath(课程管理.mdb)RS.Open Select*from student,cnStr,if Not RS.EOF thentmpNumber=RS(SNumber)tmpN

17、ame=RS(SName)tmpSex=RS(SSex)tmpBirthDay=RS(SBirthday)tmpAddr=RS(SAddress)tmpZip=RS(SZip)tmpSign=RS(SSign)end if,Response.Write tmpNumber+tmpName%,2输入数据除了前面提到的使用Connection对象的Execute方法执行SQL命令插入记录之外,还可以使用Recordset对象插入记录。具体做法是首先在Recordset中添加一个空白记录,然后,为各个字段赋值。,例13.4 以下是在记录集中添加一条新记录的示例。,3删除记录Recordset提供了删

18、除对象的方法。Recordset对象的Delete方法的作用是删除当前记录指针所指向的记录:,13.3.3 Recordset对象的主要属性1AbsolutePage属性AbsolutePage属性可以返回当前记录所在页的绝对页号,也可以指定当前记录应该放置在哪页。,2AbsolutePosition属性当前记录指针的绝对位置。在正常情况下,其值在1-RecordCount(Recordset对象中记录的个数)之间,或是常数值。在Recordset内,第一条记录对应的AbsolutePosition值为1;最后一条记录的AbsolutePosition值为RecordCount。,3Activ

19、eConnection属性ActiveConnection属性是包含连接信息的连接字符串,包括数据源、用户名、口令等。如果已经建立了连接,通过ActiveConnection属性,Recordset对象和Command对象能够与Connection对象建立关联。我们可以通过ActiveConnection属性使Connection对象和Recordset对象建立关联。我们还可以通过ActiveConnection属性读取与当前数据库的连接有关的参数。,4BOF属性BOF属性检查、判明当前记录指针是否在第一条记录之前,并返回检查的结果。如果当前记录指针已经移到第一条记录之前,BOF为真;否则为假

20、。一般情况下,在向前移动记录指针时,通过检测BOF的值,可以判断是否已经到达第一条记录之前。,5CursorLocation属性Cursor称为游标。CursorLocation属性用于选择所使用的游标库。当CursorLocation的值为2,其常数定义为adUseServer,表示使用服务器端的游标库。当CursorLocation的值为1,其常数定义为adUseClient,表示使用客户端的游标库。,6CursorType属性在使用Recordset读取数据时涉及到使用记录指针。不同类型的记录指针具有不同的指针移动方式。在打开Recordset时,需要指定记录指针的类型,即CursorT

21、ype属性。系统提供了四种CursorType值,其含义和属性值见表13-2。,7EditMode属性EditMode属性能够返回Recordset对象当前的编辑模式:0表示目前处理的Recordset中没有任何编辑操作;1表示正在进行编辑操作,但是尚未保存到数据库中;2表示正在增加记录,但是尚未保存到数据库中;4表示当前记录被删除。,8EOF属性EOF属性用于判断记录指针是否到达Recordset的末尾。当EOF的值为True,表示记录指针位于最后一条记录之后。9Filter属性Filter属性可以在Recordset对象中设置对数据的筛选条件,使被过滤出来的Recordset成为当前Rec

22、ordset。,10LockType属性LockType属性用于设置当前记录的锁定方式,以确定是否可以将记录写入数据库。11MaxRecords属性MaxRecords属性用于设置从数据源一次返回的最大记录数。MaxRecords属性的默认值为0,表示返回所有记录。,12PageCount属性PageCount属性指明当前Recordset对象所包含的页数。每一页包括一组记录,其记录的数量由PageSize属性设置。13PageSize属性当Recordset对象设置了分页,使用PageSize属性设置每页的记录数。PageSize属性的默认值为10,即每一页有10条记录。,14RecordC

23、ount属性使用RecordCount属性能够确定Recordset中有多少条记录。如果ADO无法判断记录总数,则返回-1。需要说明的是如果Recordset以adOpenForwardOnly方式打开,则RecordCount属性不起作用。,15Source属性Source属性指明Recordset对象的数据来源。16State属性State属性可以返回Recordset对象的状态。,17Status属性Status属性能够返回记录处理是否成功的信息。13.3.4 Recordset的主要方法1Open方法Open方法的完整格式如下。对象变量.Open Source,Connection,C

24、ursorType,LockType,Type,Open方法中各项参数的含义如下。“Source”是一个字符串。指明要从数据库中选取的数据。数据源可以是Command对象、SQL语句、存储过程、表名或文件的全路径。,Connection表示数据库连接的名称。可以使用三种方式表达所要连接的数据库。第一种方式是直接使用已经建立连接的Connection对象变量;第二种方式使用连接参数字符串;第三种方式使用ODBC数据源名称。连接参数可以通过Recordset对象的ConnectionString属性设置。,CursorType指明Recordset对象打开数据库时所使用的记录指针类型。LockTy

25、pe是可选参数,它确定了打开Recordset对象时的锁定类型。Type是可选参数,用于指定打开Recordset对象时对应的Command对象的CommandType类型。,2Close方法Close方法的作用是关闭一个Recordset对象,释放相关的数据,即为这个Recordset所申请的资源。使用Close方法不能将Recordset对象从内存中清除。释放对象变量的命令如下。Set=nothing,3Update方法Update方法的功能是将Recordset对象中当前记录保存到数据库中。4AddNew方法AddNew方法的作用是在Recordset对象中添加一条记录。AddNew方法

26、的语法格式如下。Recoreset.AddNew FieldList,Values,其中FieldList是一个字段或字段数组的名称;Values是相应的一个字段值或用数组表示的字段值。FieldList 和Values都是可选参数。如果使用没有参数的AddNew方法,则在Recordset中插入一个空白记录。,使用AddNew方法向Recordset中添加记录的方法有两种:一种方法是在Recordset中添加一个空白记录,再向这个空白记录的字段中输入数据;另一种方法是先为数组赋值,再使用AddNew方法将数组中的数据添加到Recordset中。需要特别注意的是使用AddNew方法添加到Rec

27、ordset中的数据并没有保存到数据库中,必须使用Update方法才能真正将Recordset中的数据保存到数据库中。,5Delete方法使用Delete方法能够删除Recordset对象中一条或多条记录。Delete方法的语法格式如下。Recordset.Delete Affect以上命令中的Affect表示删除数据的范围。当该参数的值为1时,只能删除当前的记录;参数的值为2时,则可以将所有与Filter属性所设条件相匹配的记录删除掉。,6移动记录指针的方法从数据库中读取的数据都被放在Recordset对象中。而对Recordset对象中的数据进行操作时需要使用记录指针。Recordset对

28、象提供了一组移动记录指针的方法,使用这一组方法,就能够比较方便的操作数据。,(1)Move NumRecords“Move NumRecords,Start”方法的作用是在Recordset对象内,将记录指针从“Start”位置开始移动“NumRecords”条记录。(2)MoveFirst“MoveFirst”方法的作用是在Recordset对象内,将记录指针移动到第一条记录上。,(3)MoveLast“MoveLast”方法的作用是在Recordset对象内,将记录指针移动到最后一条记录上。(4)MoveNext“MoveNext”方法的作用是在Recordset对象内,将记录指针向后(即

29、记录号增加的方向)移动一条记录。,(5)MovePrevious“MovePrevious”方法的作用是在Recordset对象内,将记录指针向前移动一条记录。,7CancelUpdate方法当Recordset中的记录尚未写到数据库中时,也就是说,在Recordset中插入、删除或更新了数据,但是还没有使用Update方法时,若需要撤销对Recordset中记录的更新操作,可以使用CancelUpdate方法。CancelUpdate方法的功能是取消对Recordset对象的更新操作。,8Clone方法Clone方法的功能是复制某个已经存在的Recordset对象。复制得到的新Records

30、et对象与原来的Recordset对象具有相同的记录集,但是各自拥有独立的记录指针。,13.3.5 Recordset的Fields集合Recordset提供了一个Fields集合,Fields集合的每一项都是一个Field对象。每个Field对象拥有一个名字及序号,分别对应数据库表中的字段。我们可以利用Fields集合的Count属性读取表中的字段个数,使用Field对象的Name和Value分别读取字段名称和字段数据。,13.4 Command对象,Command对象能够用来执行查询命令,并将满足条件的记录返回到Recordset对象。Command对象所执行的这些命令可以是SQL语句、存

31、储过程、数据库表或系统能够支持的其他格式的文件。,13.4.1 建立Command对象建立Command对象的方法是使用ASP内置的Server对象的CreateObject方法,命令格式如下。Set=Server.CreateObject(ADODB.Command)其中“对象名”所表示的是Command对象的一个实例。然后,需要将这个对象实例与Connection对象建立连接。,与Recordset对象不同,Command对象不需要直接进行打开和关闭的操作。当关闭一个Connection 对象时,与该连接相关的所有Command对象同时被关闭,不需要单独使用关闭命令。,13.4.2 Com

32、mand对象的主要属性1ActiveConnection属性ActiveConnection属性指明了当前Command对象所连接的Connection对象。如果在执行Execute方法时,尚未指定合法的连接参数,或者没有打开一个可用的Connection对象,系统会产生错误。,2CommandType属性Command对象能够使用多种类型的查询命令。用CommandType属性能够确定查询命令的类型。实际上,这些类型与Recordset对象Open方法中指定的Type 类型是一致的。,3CommandText属性CommandType属性值是指明查询命令的类型,查询命令的具体内容则由Comm

33、andText属性确定。CommandText属性可以是SQL语句、数据库表名或存储过程名。,4CommandTimeout属性默认情况下,若执行Command对象的等待时间超过30秒仍然没有结束,则停止执行命令。如果需要改变这个等待时间,可以改变CommandTimeout属性,重新设置等待时间。若设置CommandTimeout属性为0,则系统无限期等待命令的执行,直到完成。,需要说明的是Connection对象也有一个CommandTimeOut属性。但是Connection对象的CommandTimeOut属性与Command对象的CommandTimeOut属性是彼此独立的,相互之间

34、不会有影响。,13.4.3 Command的常用方法1Execute方法Execute是Command对象的一个非常重要的方法。使用Execute方法能够执行在CommandText中定义的查询命令。如果所执行的查询有返回记录,则查询结果存放在Recordset对象中。,Execute的语法格式如下。Set=Command.Execute(Count,Parameter,Option),其中Count是可选参数,表示执行本次查询数据库中满足指定条件的记录数;Parameter是可选参数,包含需要传递给存储过程的参数;Option也是可选参数,指明CommandText的类型,实际上就是CommandType的属性值,可以省略。,2CreateParamater方法在使用SQL命令或存储过程进行查询时,查询条件中往往需要指定一些参数,然后按指定的参数进行查询。,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号