版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第13章使用ADO访问数据库13.1ASP与ADO
13.2建立连接13.3Recordset对象13.4Command对象第13章使用ADO访问数据库13.1ASP与ADO ASP提供了强大的访问数据库的功能。用ASP访问数据库所使用的是ADO(ActiveXDataObjects)组件。 使用ADO编写的ASP程序,不仅能够访问Access数据库,能够访问包括Oracle、MSSQLServer、Sybase等支持OLEDB、ODBC的数据库。 ASP提供了强大的访问数据库的功能。用ASP访问数据库所13.1ASP与ADO13.1.1ASP与数据库 通过ADO对象,ASP可以访问Oracle、Sybase、MSSQLServer、Access、FoxPro等各种支持ODBC或OLEDB的数据库。也就是说,只要具有某种数据库的ODBC或OLEDB驱动程序,就可以通过ADO访问数据库。ASP、ADO、OLEDB及各种数据库之间的关系如图13-1所示。13.1ASP与ADO13.1.1ASP与数据库第13章使用ADO访问数据库课件13.1.2ADO的概念和结构 ODBC(OpenDatabaseConnectivity)是微软公司开发的一套开放数据库应用程序的接口规范,是广泛使用的数据库接口。使用ODBC开发数据库应用程序的方法是建立ODBC数据源,通过ODBC接口函数,提交SQL语句并接收执行SQL命令的结果。数据库的底层操作由各个数据库的驱动程序完成。13.1.2ADO的概念和结构 OLEDB是以ActiveX技术为基础的数据访问技术标准。OLEDB基于组件模型;可以访问多种格式的数据,包括数据库的数据和非数据库的数据。OLEDB标准的具体实现是一组API函数。使用OLEDBAPI,可以编写能够访问符合OLEDB标准的任何数据源应用程序。 OLEDB是以ActiveX技术为基础的数据访问技术标 为了使各种流行的编程语言都能编写符合OLEDB标准的应用程序,微软公司在OLEDBAPI之上提供了一种面向对象的、与语言无关的应用程序编写接口,就是ADO。 ADO是一项数据库访问技术。ADO具有如下优点。 为了使各种流行的编程语言都能编写符合OLEDB标准的应 对于程序设计者而言,ADO很容易掌握和使用。 ADO能够被VisualBasic、Java、C++、VBScript及Jscript等程序设计语言所支持。 ADO能够访问各种支持OLEDB的数据源,也就是说,通过ADO能够访问具有OLEDB驱动程序的数据源。 ADO允许C++的程序员访问OLEDB的底层接口。 对于程序设计者而言,ADO很容易掌握和使用。 ADO包括7个对象及集合,其主要作用描述如下。(1)Connection对象 Connection对象用于建立数据源与ADO应用程序之间的连接。 ADO包括7个对象及集合,其主要作用描述如下。(2)Recordset对象 Recordset对象是ADO中最重要的对象之一,是对数据库进行检索后的数据记录集。这个记录集既可以是Command对象返回的查询结果,也可以是直接运行SQL命令产生的查询结果。Recordset对象把数据库检索的结果封装在一起,并通过它的方法和属性提供一种方便、快捷地访问每条记录、每个字段的方法。(2)Recordset对象(3)Command对象 Command对象用于定义数据库的查询动作,一般使用SQL命令,也可以使用存储过程。 Command对象允许指定参数,其参数通过Parameter对象赋值、使用。(3)Command对象(4)Parameter对象 Parameter对象的作用是将存储过程和参数查询所需的参数传递给Command对象。存储过程是SQL语言的过程。一个Command对象上的所有Parameter对象构成Parameters集合。(4)Parameter对象(5)Field对象 Field对象能够使我们读取记录集(Recordset)对象中各个字段的字段值。定义在一个Recordset对象上的所有Field对象构成Fields集合。(5)Field对象(6)Property对象 Property对象能够指明一个ADO对象的属性。所有的Property对象构成Properties集合。这个集合与Connection、Command、Recordset或Field对象相关联。(6)Property对象(7)Error对象 Error对象的作用是返回一个数据库连接(Connection)上产生的错误。 ADO对象及集合的关系如图13-2所示。(7)Error对象第13章使用ADO访问数据库课件 在ADO的对象中,Connection、Command和Recordset三个对象是顶层对象,也是最重要的对象。我们能够单独的创建、释放这三个对象。而其他对象,尽管可以单独创建对象,但是在使用之前,必须与有关的对象相关联。Field、Error和Property对象在其双亲对象存在的情况下才存在,不能单独的创建这些对象。 在ADO的对象中,Connection、Command Connection对象用于建立应用程序与数据库的连接。在这个基础之上,可以使用Command对象和Recordset对象对所连接的数据库进行各种操作。Command对象用于定义数据库的查询操作,主要采用SQL语言描述查询动作。Recordset对象对应于Command对象的返回结果。当然Recordset对象也可以直接建立一个Recordset,即不显式地为Recordset创建Connection或Command对象,但实际上通过Recordset对象的一些参数设置了Connection对象和Command对象的属性。 Connection对象用于建立应用程序与数据库的连接。13.2建立连接
13.2.1使用Connection对象建立连接 Connection对象用于应用程序与服务器之间的连接。使用Connection对象可以确定以何种方式建立与服务器的连接,设置查询条件,检查整个处理过程中发生的错误。13.2建立连接13.2.1使用Connec1.建立和关闭连接对象建立Connection对象的方法如下。<% DimobjCn setobjCn=Server.CreateObject ("ADODB.Connection")%>1.建立和关闭连接对象 “Server.CreateObject”的含义是执行ASP内置的Server对象的CreateObject方法,创建一个“ADODB.Connection”对象。新创建的连接对象实例被赋值给对象变量“objCn”,即ObjCn就是与数据库建立连接的对象变量。 关闭Connection对象的方法是: <% objCn.Close %> “Server.CreateObject”的含义是执行A “Close”是Connection对象的方法,其作用是关闭Connection对象,将应用程序与数据库的连接断开。但objCn仍在内存中,没有释放所占用的空间。释放对象变量的方法是: <% setobjCn=nothing %> “Close”是Connection对象的方法,其作用是2.与数据源建立连接 建立连接对象,仅仅是创建了一个Connection对象的实例,并没有真正地与一个数据库建立起连接。建立连接的操作通过Connection对象的Open方法实现。2.与数据源建立连接 Connection对象的Open方法的基本语法格式如下<连接对象名>.OpenConnectionString ConnectionString是连接参数,指明了连接的数据库类型、名称等。 Connection对象的Open方法的基本语法格式如下 需要说明的是,建立连接等操作的成功与否,在浏览器上没有任何显示。 不同类别的数据库,具有不同的驱动程序,相应的具有不同的连接参数和格式。 需要说明的是,建立连接等操作的成功与否,在浏览器上没有任13.2.2Connection对象的属性1.CommandTimeOut属性
CommandTimeOut属性用于设置等待时间。在使用Connection对象的Execute方法运行一个查询时,如果由于网络负担过重或其他原因造成在指定的CommandTimeOut时间内未能完成有关操作,则系统会自动取消Execute方法的执行。13.2.2Connection对象的属性 如果将CommandTimeOut的属性值设为0,则系统无限期等待命令的执行。默认值为30秒。2.ConnectionString属性 ConnectionString属性指定了与数据库建立连接的参数,包括所连接的数据库类型、名称等。连接参数是由若干形如“参数=值;”的表达式连接而成。 如果将CommandTimeOut的属性值设为0,则系统3.ConnectionTimeOut属性 ConnectionTimeOut属性用于设置执行Open方法时的超时时间。当超过指定的ConnectionTimeOut时间仍未完成连接操作,系统自动终止Open方法的执行。如果设置ConnectionTimeOut为0,则程序一直等待Open方法的执行,直到连接成功。ConnectionTimeOut属性的默认值为15秒。3.ConnectionTimeOut属性4.DefaultDatabase属性 DefaultDatabase属性可以设置或返回Connection对象的默认数据库。4.DefaultDatabase属性13.2.3通过Connection对象执行查询命令 ADO的Connection对象的主要作用是建立数据库的连接。实际上,Connection对象还可以直接执行查询命令。使用Connection对象的Execute方法能够执行指定的SQL查询命令或由SQL命令构成的文本。13.2.3通过Connection对象执行查询命令 Execute方法格式如下:<连接对象>.ExecuteCommandText[,RecordsetAffectd][,Options] 其中的“CommandText”是包含表名的SQL语句。“RecordsetAffectd”是可选参数,若需要知道执行该命令所影响的记录数,可以在此放置一个变量,待命令执行完毕,检查该变量的值即可。“Options”是可选参数,用于指定CommandText的类型,如存储过程、命令等。 Execute方法格式如下:13.3Recordset对象 从数据库中读取的数据记录通过Recordset对象处理。使用Recordset对象,可以对数据库中数据表的数据进行各种操作,如插入记录、删除记录、更新记录、检索数据等。Recordset对象保存数据的方式类似于二维表,包括字段和记录。13.3Recordset对象 从数据库中读取的数据记13.3.1建立Recordset对象 使用Recordset对象时,需要声明一个Recordset对象的实例,即创建一个Recordset对象的对象变量。其语法格式如下:Set对象变量=Server.CreateObject(“ADODB.Recordset”)13.3.1建立Recordset对象 以上命令的含义是建立一个ADODB.Recordset类型的对象,并赋值给对象变量。对象变量建立后,可以使用Open方法建立一个Recordset。Recordset对象的Open方法的基本格式如下。<对象名>.OpenSource,ConnectionString Source是一个SQL命令,也就是查询要求。ConnectionString是连接参数。 以上命令的含义是建立一个ADODB.Recordset类 例如,从课程管理数据库中读取学生的基本信息,可以使用如下的命令。<% setRS=Server.CreateObject("ADODB.Recordset")cnStr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="_ &Server.MapPath("课程管理.mdb") RS.Open"Select*fromStudent",cnStr%> 例如,从课程管理数据库中读取学生的基本信息,可以使用如下 需要说明的是可以使用多种方式建立Recordset对象。一种方式就是上面提到的直接使用Recordset对象的Open方法建立Recordset。另一种方法是首先建立一个Connection对象,然后使Connection对象与Recordset对象建立关联,从而得到建立了连接的Recordset对象。还有一种方法是通过Connection对象的Execute方法执行有关查询,产生Recordset对象,还可以通过Command对象建立Recordset对象。 需要说明的是可以使用多种方式建立Recordset对象。13.3.2使用Recordset访问数据库
从Recordset对象中读取数据记录时需要使用“记录指针”。从数据库中读取数据、建立Recordset后,有一个“记录指针”指向第一条记录。此时,可以读取这条记录中各个字段的数据,而且只能读取这条记录的数据。就是说,在同一个时刻只能读取当前记录中的数据,即记录指针所指向的记录。如果要读取其他记录的数据时,必须把“记录指针”移动到要访问的记录上。13.3.2使用Recordset访问数据库1.读取数据例13.3读取Recordset中的字段。<%@Language=VBScript%><HTML><HEAD>使用Recordset读取数据<P>1.读取数据</HEAD><BODY><% SetRS=Server.CreateObject("ADODB.Recordset")cnStr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="_ &Server.MapPath("课程管理.mdb") RS.Open"Select*fromstudent",cnStr </HEAD>ifNotRS.EOFthen tmpNumber=RS("SNumber") tmpName=RS("SName") tmpSex=RS("SSex") tmpBirthDay=RS("SBirthday") tmpAddr=RS("SAddress") tmpZip=RS("SZip") tmpSign=RS("SSign") endif
ifNotRS.EOFthenResponse.WritetmpNumber+tmpName%></BODY></HTML>Response.WritetmpNumber+tmpNa2.输入数据 除了前面提到的使用Connection对象的Execute方法执行SQL命令插入记录之外,还可以使用Recordset对象插入记录。具体做法是首先在Recordset中添加一个空白记录,然后,为各个字段赋值。2.输入数据例13.4以下是在记录集中添加一条新记录的示例。<%RS.AddNewRS("SNumber")="98082210"RS("SName")="张红"RS("SSex")="女"RS("出生日期")=Cdate("1980-2-10")RS("地址")="白颐路20号"RS("邮政编码")="100080"RS("入学成绩")=480RS.Update%>例13.4以下是在记录集中添加一条新记录的示例。3.删除记录 Recordset提供了删除对象的方法。 Recordset对象的Delete方法的作用是删除当前记录指针所指向的记录: <% Rs.Delete %>3.删除记录13.3.3Recordset对象的主要属性 1.AbsolutePage属性 AbsolutePage属性可以返回当前记录所在页的绝对页号,也可以指定当前记录应该放置在哪页。13.3.3Recordset对象的主要属性 2.AbsolutePosition属性 当前记录指针的绝对位置。在正常情况下,其值在1-RecordCount(Recordset对象中记录的个数)之间,或是常数值。在Recordset内,第一条记录对应的AbsolutePosition值为1;最后一条记录的AbsolutePosition值为RecordCount。2.AbsolutePosition属性3.ActiveConnection属性
ActiveConnection属性是包含连接信息的连接字符串,包括数据源、用户名、口令等。如果已经建立了连接,通过ActiveConnection属性,Recordset对象和Command对象能够与Connection对象建立关联。我们可以通过ActiveConnection属性使Connection对象和Recordset对象建立关联。我们还可以通过ActiveConnection属性读取与当前数据库的连接有关的参数。3.ActiveConnection属性4.BOF属性 BOF属性检查、判明当前记录指针是否在第一条记录之前,并返回检查的结果。如果当前记录指针已经移到第一条记录之前,BOF为真;否则为假。一般情况下,在向前移动记录指针时,通过检测BOF的值,可以判断是否已经到达第一条记录之前。4.BOF属性5.CursorLocation属性 Cursor称为游标。CursorLocation属性用于选择所使用的游标库。当CursorLocation的值为2,其常数定义为adUseServer,表示使用服务器端的游标库。当CursorLocation的值为1,其常数定义为adUseClient,表示使用客户端的游标库。5.CursorLocation属性6.CursorType属性 在使用Recordset读取数据时涉及到使用记录指针。不同类型的记录指针具有不同的指针移动方式。在打开Recordset时,需要指定记录指针的类型,即CursorType属性。系统提供了四种CursorType值,其含义和属性值见表13-2。6.CursorType属性第13章使用ADO访问数据库课件7.EditMode属性 EditMode属性能够返回Recordset对象当前的编辑模式:0表示目前处理的Recordset中没有任何编辑操作;1表示正在进行编辑操作,但是尚未保存到数据库中;2表示正在增加记录,但是尚未保存到数据库中;4表示当前记录被删除。7.EditMode属性8.EOF属性 EOF属性用于判断记录指针是否到达Recordset的末尾。当EOF的值为True,表示记录指针位于最后一条记录之后。9.Filter属性 Filter属性可以在Recordset对象中设置对数据的筛选条件,使被过滤出来的Recordset成为当前Recordset。8.EOF属性10.LockType属性 LockType属性用于设置当前记录的锁定方式,以确定是否可以将记录写入数据库。11.MaxRecords属性 MaxRecords属性用于设置从数据源一次返回的最大记录数。MaxRecords属性的默认值为0,表示返回所有记录。10.LockType属性12.PageCount属性 PageCount属性指明当前Recordset对象所包含的页数。每一页包括一组记录,其记录的数量由PageSize属性设置。13.PageSize属性 当Recordset对象设置了分页,使用PageSize属性设置每页的记录数。PageSize属性的默认值为10,即每一页有10条记录。12.PageCount属性14.RecordCount属性 使用RecordCount属性能够确定Recordset中有多少条记录。如果ADO无法判断记录总数,则返回-1。需要说明的是如果Recordset以adOpenForwardOnly方式打开,则RecordCount属性不起作用。14.RecordCount属性15.Source属性 Source属性指明Recordset对象的数据来源。16.State属性 State属性可以返回Recordset对象的状态。15.Source属性17.Status属性 Status属性能够返回记录处理是否成功的信息。13.3.4Recordset的主要方法1.Open方法 Open方法的完整格式如下。对象变量.OpenSource,Connection,CursorType,LockType,Type17.Status属性 Open方法中各项参数的含义如下。 “Source”是一个字符串。指明要从数据库中选取的数据。数据源可以是Command对象、SQL语句、存储过程、表名或文件的全路径。 Open方法中各项参数的含义如下。 Connection表示数据库连接的名称。可以使用三种方式表达所要连接的数据库。第一种方式是直接使用已经建立连接的Connection对象变量;第二种方式使用连接参数字符串;第三种方式使用ODBC数据源名称。连接参数可以通过Recordset对象的ConnectionString属性设置。
Connection表示数据库连接的名称。可以使用 CursorType指明Recordset对象打开数据库时所使用的记录指针类型。 LockType是可选参数,它确定了打开Recordset对象时的锁定类型。
Type是可选参数,用于指定打开Recordset对象时对应的Command对象的CommandType类型。 CursorType指明Recordset对象打开2.Close方法 Close方法的作用是关闭一个Recordset对象,释放相关的数据,即为这个Recordset所申请的资源。使用Close方法不能将Recordset对象从内存中清除。 释放对象变量的命令如下。Set<对象名>=nothing2.Close方法3.Update方法 Update方法的功能是将Recordset对象中当前记录保存到数据库中。4.AddNew方法 AddNew方法的作用是在Recordset对象中添加一条记录。AddNew方法的语法格式如下。Recoreset.AddNewFieldList,Values3.Update方法 其中FieldList是一个字段或字段数组的名称;Values是相应的一个字段值或用数组表示的字段值。FieldList和Values都是可选参数。如果使用没有参数的AddNew方法,则在Recordset中插入一个空白记录。 其中FieldList是一个字段或字段数组的名称;Val 使用AddNew方法向Recordset中添加记录的方法有两种:一种方法是在Recordset中添加一个空白记录,再向这个空白记录的字段中输入数据;另一种方法是先为数组赋值,再使用AddNew方法将数组中的数据添加到Recordset中。需要特别注意的是使用AddNew方法添加到Recordset中的数据并没有保存到数据库中,必须使用Update方法才能真正将Recordset中的数据保存到数据库中。 使用AddNew方法向Recordset中添加记录的方法5.Delete方法 使用Delete方法能够删除Recordset对象中一条或多条记录。Delete方法的语法格式如下。Recordset.DeleteAffect 以上命令中的Affect表示删除数据的范围。当该参数的值为1时,只能删除当前的记录;参数的值为2时,则可以将所有与Filter属性所设条件相匹配的记录删除掉。5.Delete方法6.移动记录指针的方法 从数据库中读取的数据都被放在Recordset对象中。而对Recordset对象中的数据进行操作时需要使用记录指针。Recordset对象提供了一组移动记录指针的方法,使用这一组方法,就能够比较方便的操作数据。6.移动记录指针的方法(1)MoveNumRecords “MoveNumRecords,Start”方法的作用是在Recordset对象内,将记录指针从“Start”位置开始移动“NumRecords”条记录。(2)MoveFirst “MoveFirst”方法的作用是在Recordset对象内,将记录指针移动到第一条记录上。(1)MoveNumRecords(3)MoveLast “MoveLast”方法的作用是在Recordset对象内,将记录指针移动到最后一条记录上。(4)MoveNext “MoveNext”方法的作用是在Recordset对象内,将记录指针向后(即记录号增加的方向)移动一条记录。(3)MoveLast(5)MovePrevious “MovePrevious”方法的作用是在Recordset对象内,将记录指针向前移动一条记录。(5)MovePrevious7.CancelUpdate方法 当Recordset中的记录尚未写到数据库中时,也就是说,在Recordset中插入、删除或更新了数据,但是还没有使用Update方法时,若需要撤销对Recordset中记录的更新操作,可以使用CancelUpdate方法。CancelUpdate方法的功能是取消对Recordset对象的更新操作。7.CancelUpdate方法8.Clone方法 Clone方法的功能是复制某个已经存在的Recordset对象。复制得到的新Recordset对象与原来的Recordset对象具有相同的记录集,但是各自拥有独立的记录指针。8.Clone方法13.3.5Recordset的Fields集合 Recordset提供了一个Fields集合,Fields集合的每一项都是一个Field对象。每个Field对象拥有一个名字及序号,分别对应数据库表中的字段。 我们可以利用Fields集合的Count属性读取表中的字段个数,使用Field对象的Name和Value分别读取字段名称和字段数据。13.3.5Recordset的Fields集合13.4Command对象 Command对象能够用来执行查询命令,并将满足条件的记录返回到Recordset对象。Command对象所执行的这些命令可以是SQL语句、存储过程、数据库表或系统能够支持的其他格式的文件。13.4Command对象 Command对象能够用来13.4.1建立Command对象 建立Command对象的方法是使用ASP内置的Server对象的CreateObject方法,命令格式如下。Set<对象名>=Server.CreateObject("ADODB.Command") 其中“对象名”所表示的是Command对象的一个实例。然后,需要将这个对象实例与Connection对象建立连接。13.4.1建立Command对象 与Recordset对象不同,Command对象不需要直接进行打开和关闭的操作。当关闭一个Connection对象时,与该连接相关的所有Command对象同时被关闭,不需要单独使用关闭命令。 与Recordset对象不同,Command对象不需要直13.4.2Command对象的主要属性1.ActiveConnection属性 ActiveConnection属性指明了当前Command对象所连接的Connection对象。如果在执行Execute方法时,尚未指定合法的连接参数,或者没有打开一个可用的Connection对象,系统会产生错误。13.4.2Command对象的主要属性2.CommandType属性 Command对象能够使用多种类型的查询命令。用CommandType属性能够确定查询命令的类型。实际上,这些类型与Recordset对象Open方法中指定的Type类型是一致的。2.CommandType属性3.CommandText属性 CommandType属性值是指明查询命令的类型,查询命令的具体内容则由CommandText属性确定。CommandText属性可以是SQL语句、数据库表名或存储过程名。3.CommandText属性4.CommandTimeout属性 默认情况下,若执行Command对象的等待时间超过30秒仍然没有结束,则停止执行命令。如果需要改变这个等待时间,可以改变CommandTimeout属性,重新设置等待时间。若设置CommandTimeout属性为0,则系统无限期等待命令的执行,直到完成。4.CommandTimeout属性 需要说明的是Connection对象也有一个CommandTimeOut属性。但是Connection对象的CommandTimeOut属性与Command对象的CommandTimeOut属性是彼此独立的,相互之间不会有影响。 需要说明的是Connection对象也有一个Comman13.4.3Command的常用方法1.Execute方法 Execute是Command对象的一个非常重要的方法。使用Execute方法能够执行在CommandText中定义的查询命令。如果所执行的查询有返回记录,则查询结果存放在Recordset对象中。13.4.3Command的常用方法Execute的语法格式如下。Set<记录集名称>=Command.Execute(Count,Parameter,Option)Execute的语法格式如下。 其中Count是可选参数,表示执行本次查询数据库中满足指定条件的记录数;Parameter是可选参数,包含需要传递给存储过程的参数;Option也是可选参数,指明CommandText的类型,实际上就是CommandType的属性值,可以省略。 其中Count是可选参数,表示执行本次查询数据库中满足指2.CreateParamater方法 在使用SQL命令或存储过程进行查询时,查询条件中往往需要指定一些参数,然后按指定的参数进行查询。2.CreateParamater方法第13章使用ADO访问数据库13.1ASP与ADO
13.2建立连接13.3Recordset对象13.4Command对象第13章使用ADO访问数据库13.1ASP与ADO ASP提供了强大的访问数据库的功能。用ASP访问数据库所使用的是ADO(ActiveXDataObjects)组件。 使用ADO编写的ASP程序,不仅能够访问Access数据库,能够访问包括Oracle、MSSQLServer、Sybase等支持OLEDB、ODBC的数据库。 ASP提供了强大的访问数据库的功能。用ASP访问数据库所13.1ASP与ADO13.1.1ASP与数据库 通过ADO对象,ASP可以访问Oracle、Sybase、MSSQLServer、Access、FoxPro等各种支持ODBC或OLEDB的数据库。也就是说,只要具有某种数据库的ODBC或OLEDB驱动程序,就可以通过ADO访问数据库。ASP、ADO、OLEDB及各种数据库之间的关系如图13-1所示。13.1ASP与ADO13.1.1ASP与数据库第13章使用ADO访问数据库课件13.1.2ADO的概念和结构 ODBC(OpenDatabaseConnectivity)是微软公司开发的一套开放数据库应用程序的接口规范,是广泛使用的数据库接口。使用ODBC开发数据库应用程序的方法是建立ODBC数据源,通过ODBC接口函数,提交SQL语句并接收执行SQL命令的结果。数据库的底层操作由各个数据库的驱动程序完成。13.1.2ADO的概念和结构 OLEDB是以ActiveX技术为基础的数据访问技术标准。OLEDB基于组件模型;可以访问多种格式的数据,包括数据库的数据和非数据库的数据。OLEDB标准的具体实现是一组API函数。使用OLEDBAPI,可以编写能够访问符合OLEDB标准的任何数据源应用程序。 OLEDB是以ActiveX技术为基础的数据访问技术标 为了使各种流行的编程语言都能编写符合OLEDB标准的应用程序,微软公司在OLEDBAPI之上提供了一种面向对象的、与语言无关的应用程序编写接口,就是ADO。 ADO是一项数据库访问技术。ADO具有如下优点。 为了使各种流行的编程语言都能编写符合OLEDB标准的应 对于程序设计者而言,ADO很容易掌握和使用。 ADO能够被VisualBasic、Java、C++、VBScript及Jscript等程序设计语言所支持。 ADO能够访问各种支持OLEDB的数据源,也就是说,通过ADO能够访问具有OLEDB驱动程序的数据源。 ADO允许C++的程序员访问OLEDB的底层接口。 对于程序设计者而言,ADO很容易掌握和使用。 ADO包括7个对象及集合,其主要作用描述如下。(1)Connection对象 Connection对象用于建立数据源与ADO应用程序之间的连接。 ADO包括7个对象及集合,其主要作用描述如下。(2)Recordset对象 Recordset对象是ADO中最重要的对象之一,是对数据库进行检索后的数据记录集。这个记录集既可以是Command对象返回的查询结果,也可以是直接运行SQL命令产生的查询结果。Recordset对象把数据库检索的结果封装在一起,并通过它的方法和属性提供一种方便、快捷地访问每条记录、每个字段的方法。(2)Recordset对象(3)Command对象 Command对象用于定义数据库的查询动作,一般使用SQL命令,也可以使用存储过程。 Command对象允许指定参数,其参数通过Parameter对象赋值、使用。(3)Command对象(4)Parameter对象 Parameter对象的作用是将存储过程和参数查询所需的参数传递给Command对象。存储过程是SQL语言的过程。一个Command对象上的所有Parameter对象构成Parameters集合。(4)Parameter对象(5)Field对象 Field对象能够使我们读取记录集(Recordset)对象中各个字段的字段值。定义在一个Recordset对象上的所有Field对象构成Fields集合。(5)Field对象(6)Property对象 Property对象能够指明一个ADO对象的属性。所有的Property对象构成Properties集合。这个集合与Connection、Command、Recordset或Field对象相关联。(6)Property对象(7)Error对象 Error对象的作用是返回一个数据库连接(Connection)上产生的错误。 ADO对象及集合的关系如图13-2所示。(7)Error对象第13章使用ADO访问数据库课件 在ADO的对象中,Connection、Command和Recordset三个对象是顶层对象,也是最重要的对象。我们能够单独的创建、释放这三个对象。而其他对象,尽管可以单独创建对象,但是在使用之前,必须与有关的对象相关联。Field、Error和Property对象在其双亲对象存在的情况下才存在,不能单独的创建这些对象。 在ADO的对象中,Connection、Command Connection对象用于建立应用程序与数据库的连接。在这个基础之上,可以使用Command对象和Recordset对象对所连接的数据库进行各种操作。Command对象用于定义数据库的查询操作,主要采用SQL语言描述查询动作。Recordset对象对应于Command对象的返回结果。当然Recordset对象也可以直接建立一个Recordset,即不显式地为Recordset创建Connection或Command对象,但实际上通过Recordset对象的一些参数设置了Connection对象和Command对象的属性。 Connection对象用于建立应用程序与数据库的连接。13.2建立连接
13.2.1使用Connection对象建立连接 Connection对象用于应用程序与服务器之间的连接。使用Connection对象可以确定以何种方式建立与服务器的连接,设置查询条件,检查整个处理过程中发生的错误。13.2建立连接13.2.1使用Connec1.建立和关闭连接对象建立Connection对象的方法如下。<% DimobjCn setobjCn=Server.CreateObject ("ADODB.Connection")%>1.建立和关闭连接对象 “Server.CreateObject”的含义是执行ASP内置的Server对象的CreateObject方法,创建一个“ADODB.Connection”对象。新创建的连接对象实例被赋值给对象变量“objCn”,即ObjCn就是与数据库建立连接的对象变量。 关闭Connection对象的方法是: <% objCn.Close %> “Server.CreateObject”的含义是执行A “Close”是Connection对象的方法,其作用是关闭Connection对象,将应用程序与数据库的连接断开。但objCn仍在内存中,没有释放所占用的空间。释放对象变量的方法是: <% setobjCn=nothing %> “Close”是Connection对象的方法,其作用是2.与数据源建立连接 建立连接对象,仅仅是创建了一个Connection对象的实例,并没有真正地与一个数据库建立起连接。建立连接的操作通过Connection对象的Open方法实现。2.与数据源建立连接 Connection对象的Open方法的基本语法格式如下<连接对象名>.OpenConnectionString ConnectionString是连接参数,指明了连接的数据库类型、名称等。 Connection对象的Open方法的基本语法格式如下 需要说明的是,建立连接等操作的成功与否,在浏览器上没有任何显示。 不同类别的数据库,具有不同的驱动程序,相应的具有不同的连接参数和格式。 需要说明的是,建立连接等操作的成功与否,在浏览器上没有任13.2.2Connection对象的属性1.CommandTimeOut属性
CommandTimeOut属性用于设置等待时间。在使用Connection对象的Execute方法运行一个查询时,如果由于网络负担过重或其他原因造成在指定的CommandTimeOut时间内未能完成有关操作,则系统会自动取消Execute方法的执行。13.2.2Connection对象的属性 如果将CommandTimeOut的属性值设为0,则系统无限期等待命令的执行。默认值为30秒。2.ConnectionString属性 ConnectionString属性指定了与数据库建立连接的参数,包括所连接的数据库类型、名称等。连接参数是由若干形如“参数=值;”的表达式连接而成。 如果将CommandTimeOut的属性值设为0,则系统3.ConnectionTimeOut属性 ConnectionTimeOut属性用于设置执行Open方法时的超时时间。当超过指定的ConnectionTimeOut时间仍未完成连接操作,系统自动终止Open方法的执行。如果设置ConnectionTimeOut为0,则程序一直等待Open方法的执行,直到连接成功。ConnectionTimeOut属性的默认值为15秒。3.ConnectionTimeOut属性4.DefaultDatabase属性 DefaultDatabase属性可以设置或返回Connection对象的默认数据库。4.DefaultDatabase属性13.2.3通过Connection对象执行查询命令 ADO的Connection对象的主要作用是建立数据库的连接。实际上,Connection对象还可以直接执行查询命令。使用Connection对象的Execute方法能够执行指定的SQL查询命令或由SQL命令构成的文本。13.2.3通过Connection对象执行查询命令 Execute方法格式如下:<连接对象>.ExecuteCommandText[,RecordsetAffectd][,Options] 其中的“CommandText”是包含表名的SQL语句。“RecordsetAffectd”是可选参数,若需要知道执行该命令所影响的记录数,可以在此放置一个变量,待命令执行完毕,检查该变量的值即可。“Options”是可选参数,用于指定CommandText的类型,如存储过程、命令等。 Execute方法格式如下:13.3Recordset对象 从数据库中读取的数据记录通过Recordset对象处理。使用Recordset对象,可以对数据库中数据表的数据进行各种操作,如插入记录、删除记录、更新记录、检索数据等。Recordset对象保存数据的方式类似于二维表,包括字段和记录。13.3Recordset对象 从数据库中读取的数据记13.3.1建立Recordset对象 使用Recordset对象时,需要声明一个Recordset对象的实例,即创建一个Recordset对象的对象变量。其语法格式如下:Set对象变量=Server.CreateObject(“ADODB.Recordset”)13.3.1建立Recordset对象 以上命令的含义是建立一个ADODB.Recordset类型的对象,并赋值给对象变量。对象变量建立后,可以使用Open方法建立一个Recordset。Recordset对象的Open方法的基本格式如下。<对象名>.OpenSource,ConnectionString Source是一个SQL命令,也就是查询要求。ConnectionString是连接参数。 以上命令的含义是建立一个ADODB.Recordset类 例如,从课程管理数据库中读取学生的基本信息,可以使用如下的命令。<% setRS=Server.CreateObject("ADODB.Recordset")cnStr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="_ &Server.MapPath("课程管理.mdb") RS.Open"Select*fromStudent",cnStr%> 例如,从课程管理数据库中读取学生的基本信息,可以使用如下 需要说明的是可以使用多种方式建立Recordset对象。一种方式就是上面提到的直接使用Recordset对象的Open方法建立Recordset。另一种方法是首先建立一个Connection对象,然后使Connection对象与Recordset对象建立关联,从而得到建立了连接的Recordset对象。还有一种方法是通过Connection对象的Execute方法执行有关查询,产生Recordset对象,还可以通过Command对象建立Recordset对象。 需要说明的是可以使用多种方式建立Recordset对象。13.3.2使用Recordset访问数据库
从Recordset对象中读取数据记录时需要使用“记录指针”。从数据库中读取数据、建立Recordset后,有一个“记录指针”指向第一条记录。此时,可以读取这条记录中各个字段的数据,而且只能读取这条记录的数据。就是说,在同一个时刻只能读取当前记录中的数据,即记录指针所指向的记录。如果要读取其他记录的数据时,必须把“记录指针”移动到要访问的记录上。13.3.2使用Recordset访问数据库1.读取数据例13.3读取Recordset中的字段。<%@Language=VBScript%><HTML><HEAD>使用Recordset读取数据<P>1.读取数据</HEAD><BODY><% SetRS=Server.CreateObject("ADODB.Recordset")cnStr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="_ &Server.MapPath("课程管理.mdb") RS.Open"Select*fromstudent",cnStr </HEAD>ifNotRS.EOFthen tmpNumber=RS("SNumber") tmpName=RS("SName") tmpSex=RS("SSex") tmpBirthDay=RS("SBirthday") tmpAddr=RS("SAddress") tmpZip=RS("SZip") tmpSign=RS("SSign") endif
ifNotRS.EOFthenResponse.WritetmpNumber+tmpName%></BODY></HTML>Response.WritetmpNumber+tmpNa2.输入数据 除了前面提到的使用Connection对象的Execute方法执行SQL命令插入记录之外,还可以使用Recordset对象插入记录。具体做法是首先在Recordset中添加一个空白记录,然后,为各个字段赋值。2.输入数据例13.4以下是在记录集中添加一条新记录的示例。<%RS.AddNewRS("SNumber")="98082210"RS("SName")="张红"RS("SSex")="女"RS("出生日期")=Cdate("1980-2-10")RS("地址")="白颐路20号"RS("邮政编码")="100080"RS("入学成绩")=480RS.Update%>例13.4以下是在记录集中添加一条新记录的示例。3.删除记录 Recordset提供了删除对象的方法。 Recordset对象的Delete方法的作用是删除当前记录指针所指向的记录: <% Rs.Delete %>3.删除记录13.3.3Recordset对象的主要属性 1.AbsolutePage属性 AbsolutePage属性可以返回当前记录所在页的绝对页号,也可以指定当前记录应该放置在哪页。13.3.3Recordset对象的主要属性 2.AbsolutePosition属性 当前记录指针的绝对位置。在正常情况下,其值在1-RecordCount(Recordset对象中记录的个数)之间,或是常数值。在Recordset内,第一条记录对应的AbsolutePosition值为1;最后一条记录的AbsolutePosition值为RecordCount。2.AbsolutePosition属性3.ActiveConnection属性
ActiveConnection属性是包含连接信息的连接字符串,包括数据源、用户名、口令等。如果已经建立了连接,通过ActiveConnection属性,Recordset对象和Command对象能够与Connection对象建立关联。我们可以通过ActiveConnection属性使Connection对象和Recordset对象建立关联。我们还可以通过ActiveConnection属性读取与当前数据库的连接有关的参数。3.ActiveConnection属性4.BOF属性 BOF属性检查、判明当前记录指针是否在第一条记录之前,并返回检查的结果。如果当前记录指针已经移到第一条记录之前,BOF为真;否则为假。一般情况下,在向前移动记录指针时,通过检测BOF的值,可以判断是否已经到达第一条记录之前。4.BOF属性5.CursorLocation属性 Cursor称为游标。CursorLocation属性用于选择所使用的游标库。当CursorLocation的值为2,其常数定义为adUseServer,表示使用服务器端的游标库。当CursorLocation的值为1,其常数定义为adUseClient,表示使用客户端的游标库。5.CursorLocation属性6.CursorType属性 在使用Recordset读取数据时涉及到使用记录指针。不同类型的记录指针具有不同的指针移动方式。在打开Recordset时,需要指定记录指针的类型,即CursorType属性。系统提供了四种CursorType值,其含义和属性值见表13-2。6.CursorType属性第13章使用ADO访问数据库课件7.EditMode属性 EditMode属性能够返回Recordset对象当前的编辑模式:0表示目前处理的Recordset中没有任何编辑操作;1表示正在进行编辑操作,但是尚未保存到数据库中;2表示正在增加记录,但是尚未保存到数据库中;4表示当前记录被删除。7.EditMode属性8.EOF属性 EOF属性用于判断记录指针是否到达Recordset的末尾。当EOF的值为True,表示记录指针位于最后一条记录之后。9.Filter属性 Filter属性可以在Recordset对象中设置对数据的筛选条件,使被过滤出来的Recordset成为当前Recordset。8.EOF属性10.LockType属性 LockType属性用于设置当前记录的锁定方式,以确定是否可以将记录写入数据库。11.MaxRecords属性 MaxRecords属性用于设置从数据源一次返回的最大记录数。MaxRecords属性的默认值为0,表示返回所有记录。10.LockType属性12.PageCount属性 PageCount属性指明当前Recordset对象所包含的页数。每一页包括一组记录,其记录的数量由PageSize属性设置。13.PageSize属性 当Recordset对象设置了分页,使用PageSize属性设置每页的记录数。PageSize属性的默认值为10,即每一页有10条记录。12.PageCount属性14.RecordCount属性 使用RecordCount属性能够确定Recordset中有多少条记录。如果ADO无法判断记录总数,则返回-1。需要说明的是如果Recordset以adOpenForwardOnly方式打开,则RecordCount属性不起作用。14.RecordCount属性15.Source属性 Source属性指明Recordset对象的数据来源。16.State属性 State属性可以返回Recordset对象的状态。15.Source属性17.Status属性 Status属性能够返回记录处理是否成功的信息。13.3.4Recordset的主要方法1.Open方法 Open方法的完整格式如下。对象变量.OpenSource,Connection,CursorType,LockType,Type17.Status属性 Open方法中各项参数的含义如下。 “Source”是一个字符串。指明要从数据库中选取的数据。数据源可以是Command对象、SQL语句、存储过程、表名或文件的全路径。 Open方法中各项参数的含义如下。 Connection表示数据库连接的名称。可以使用三种方式表达所要连接的数据库。第一种方式是直接使用已经建立连接的Connection对象变量;第二种方式使用连接参数字符串;第三种方式使用ODBC数据源名称。连接参数可以通过Recordset对象的ConnectionString属性设置。
Connection表示数据库连接的名称。可以使用 CursorType指明Recordset对象打开数据库时所使用的记录指针类型。 LockType是可选参数,它确定了打开Recordset对象时的锁定类型。
Type是可选参数,用于指定打开Recordset对象时对应的Command对象的CommandType类型。 CursorType指明Recordset对象打开2.Close方法 Close方法的作用是关闭一个Recordset对象,释放相关的数据,即为这个Recordset所申请的资源。使用Close方法不能将Recordset对象从内存中清除。 释放对象变量的命令如下。Set<对象名>=nothing2.Close方法3.Update方法 Update方法的功能是将Recordset对象中当前记录保存到数据库中。4.AddNew方法 AddNew方法的作用是在Recordset对象中添加一条记录。AddNew方法的语法格式如下。Recoreset.AddNewFieldList,Values3.Update方法 其中FieldList是一个字段或字段数组的名称;Values是相应的一个字段值或用数组表示的字段值。FieldList和Values都是可选参数。如果使用没有参数的AddNew方法,则在Recordset中插入一个空白记录。 其中FieldList是一个字段或字段数组的名称;Val 使用AddNew方法向Recordset中添加记录的方法有两种:一种方法是在Recordset中添加一个空白记录,再向这个空白记录的字段中输入数据;另一种方法是先为数组赋值,再使用AddNew方法将数组中的数据添加到Recordset中。需要特别注意的是使用AddNew方法添加到Recordset中的数据并没有保存到数据库中,必须使用Update方法才能真正将Recordset中的数据保存到数据库中。 使用AddNew方法向Recordset中添加记录的方法5.Delete方法 使用Delete方法能够删除Recordset对象中一条或多条记录。Delete方法的语法格式如下。Records
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度音乐节场地借用与现场管理服务合同3篇
- 2024软件版权授权与维护服务合同2篇
- 2024年餐饮行业合伙人加盟协议模板版B版
- 2024年版物联网技术研发与应用合同
- 2024幼儿园幼儿艺术教育课程开发与实施劳务合同3篇
- 2024年股权质押融资借款具体合同版
- 2025年度数据中心机房租赁及智能化升级服务合同3篇
- 2024年经销商销售权益合同一
- 2024版承包茶馆经营合同
- 2024年贵族小学教师聘请协议3篇
- 阅读理解(专项训练)-2024-2025学年湘少版英语六年级上册
- 2024年认证行业法律法规及认证基础知识 CCAA年度确认 试题与答案
- 2024年浙江省公务员考试结构化面试真题试题试卷答案解析
- 中国音乐史与名作赏析智慧树知到期末考试答案章节答案2024年山东师范大学
- 管廊维护与运营绩效考核评分表
- 预应力混凝土简支小箱梁大作业计算书
- 阳宅形法及峦头
- 尾矿库施工组织设计
- 投标文件封标用封面、密封条11
- 300MW火电厂水汽氢电导率超标的原因及处理方法
- 国际文凭组织IBO简介
评论
0/150
提交评论