读书笔记文档 (8).doc_第1页
读书笔记文档 (8).doc_第2页
读书笔记文档 (8).doc_第3页
读书笔记文档 (8).doc_第4页
读书笔记文档 (8).doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

常熟理工学院本科班毕业设计(论文)读书笔记读书笔记(一)摘自:闪四清编著,SQL Server 2000实用教程2000年12月第1版 人民邮电出版社1.SQL Server 存储过程管理技术存储过程的概念 存储过程是存储在服务器上的一组预编译的Transact-SQL语句。存储过程是一种封装重复任务操作的方法,支持用户提供的变量,具有强大的编程功能。存储过程可以在服务器上的SQL Server环境下运行,这可以带来许多好处。从性能方面讲,由于存储过程是在服务器上运行的,而服务器通常是一种功能强大的机器,它的执行时间要比在工作站中的执行时间短得多。另外,由于数据库信息已经物理的在同一系统中准备好,因此就不必等待记录通过网络传递进行处理。相反,存储过程具有对数据库立即的、准备好的访问、这使得信息的处理非常迅速。从客户机/服务器开发方面来看,将客户端和服务器端的开发任务的开发任务分离,有时可减少完成项目的需要时间。用户可以独立的开发服务器端组件而不涉及客户端,但是可以在客户端的应用程序中间重复使用服务器端组件。存储过程可以返回值、修改值,将系统预请求的信息与用户提供的值进行比较。在一般的SQL Server配置情况下,存储过程可以快速运行。用户还可以向存储过程传递值,存储过程也可以返回表中的值,这些值在存储过程运行期间可以参加运算。存储过程的优点1 与其他应用程序共享应用程序的逻辑,因此确保一致的数据访问和操纵。存储过程可以封装企业的功能模块,在存储过程中封装的企业的功能模块,也称为商业规则或者商业策略,可以只在一个地方修改维护。所有的客户机程序可以使用同一个存储过程进行各种操作,从而确保数据修改的一致性。2 提供一种安全机制。如果用户被授予执行存储过程的权限,那么即使是该用户没有执行访问在该存储过程中所参考的表或者视图的权限,该用户也可以完全执行该存储过程,而不会受到影响。因此,可以创建存储过程来完成所有的增加,删除等操作,并且可以通过编程方式控制上述操作中对信息的访问。3 如果把系统存储过程sp_procoption设置为true,那么可以在系统启动时,自动存储过程。这样,可以自动完成一些需要预先操作的任务,而不必在系统启动之后再进行手工操作。4 由于存储过程在第一次执行之后,其执行规划就存储在高速缓冲存储器中。在以后的操作中,只需要从过程高速缓冲存储器中调用编译好的存储过程的二进制形式来执行,因此可以加速存储过程的执行,提高系统的性能。5 减少网络交通。这是一条非常重要的使用存储过程的原因。如果有1000条SQL语句的命令,一条一条的通过网络在客户机和服务器之间传送,那么这种传输所耗费的时间长得使世界上最有耐心的人也无法忍受。但是,如果把这1000条SQL语句的命令写成一条较为复杂的存储过程命令,这时在客户机和服务器之间的网络传输就会大大减少所需的时间。存储过程的类型 在SQL Server 2000关系型数据库管理系统中,支持5种类型的存储过程:系统存储过程、本地存储过程、临时存储过程、远程存储过程和扩展存储过程。执行存储过程技术存储过程的执行技术包括创建存储过程和执行存储过程。当第一次执行存储过程时,存储过程的执行规则放在过程高速缓冲存储区中。过程高速缓冲存储区是一块内存缓冲区,这块缓冲区是SQL Server用来存储已经编译的查询规划以便执行存储过程的地方。当存储过程创建之后,系统检查其中语句的正确性。语法检查之后,系统将存储过程的名称存储在当前数据库的系统表sysobjects中,将存储过程的文本存储在当前数据库的系统表syscomments中。在存储过程的创建过程中,如果碰到语法错误,那么存储过程创建失败。在存储过程创建过程中,被称为延迟的名称解决方案允许存储过程参考还不存在的对象。但是,在执行存储过程的时候,这些对象必须存在。当存储过程第一次执行的时候,或者当存储过程必须重新编译的时候,查询处理器阅读在解决方案进程中的存储过程。在下列环境中,存储过程重新编译:1 无论何时模式版本改变的时候,例如,表或者索引修改的时候;2 当存储过程编译时的环境与该存储过程执行时的环境不同的时候;3 当存储过程所参考的表或者索引的统计发生改变的时候。当存储过程成功的通过解决方案阶段时,系统的查询优化器分析在存储过程中的Transact-SQL语句,然后创建包含访问数据最快的规划。为了做到这些,查询优化器必须考虑下列因素:1 表中的数据量;2 是否有索引以及表索引的特点和索引列中的数据分布;3 在where子句的条件中使用的比较运算符和比较值;4 是否出现连接和UNION、GROUP BY、ORDER BY等字句。编译是指分析存储过程和执行查询规划的进程。当查询优化器把已经编译的规划放在过程高速缓冲存储器之后,执行存储过程。当在第一次执行存储过程之后再执行存储过程的时候,其速度快于第一次的执行速度,这是因为系统使用了过程高速缓冲存储器中的已经优化的查询规划。创建存储过程技术创建存储过程的步骤类似于创建视图的步骤。只能在当前数据库中创建存储过程。首先,编写和测试用来创建过程的Transact-SQL语句。然后,如果得到了预想的结果,那么就可以真正创建存储过程。创建存储过程有三种方法:1 使用create procedure语句;2 使用create stored procedure wizard向导;3 使用SQL Server Enterprise Manager。创建存储过程可以使用create procedure语句。当创建存储过程的时候,要考虑下列一些因素:1 存储过程可以参考表、视图和存储过程,还可以参考临时表;2 如果存储过程创建了临时表,那么该临时表只能用于存储过程,并且当存储过程执行完毕时,临时表消失;3 在一个批次中,create procedure语句不能与其他的Transact-SQL语句混合使用;4 在create procedure语句的定义中,可以包括任意数量和类型的Transact-SQL的语句,但是下面的对象创建语句不能使用; create default create procedure create rule create trigger create view5 只有具有create procedure权限,或者是下列角色的成员,才能执行create procedure语句; System Administrators(sysadmin) Database owner(db_owner) Data definition language administrator(db_ddladmin)6 存储过程可以嵌套,即一个存储过程调用另外一个存储过程。存储过程最多可以嵌套32层。当前的嵌套层的数据值存储在全局变量nestlevel中。如果第一个存储过程调用第二个存储过程,那么第二个存储过程可以调用第一个存储过程所创建的全部对象,包括临时表。Create procedure语句语法形式如下:Create procedure procedure_name;number(parameter data_type=defaultoutput),nwithrecompile|encryption|recompile,encryptionas sql_statement存储过程的执行技术 只有具有存储过程的执行权限execute,才可以执行存储过程。执行存储过程有两种方法。一种方法是直接执行存储过程,另外一种方法是在insert语句中执行存储过程。直接执行存储过程就是调用execute语句来执行存储过程。在执行存储过程的时候,需要提供存储过程的名称和存储过程所需要的参数。Execute语句的语法形式如下:execute return_status= procedure_name;number|procedure_name_var parameter=value|variableoutput|default,n with recompile使用参数执行存储过程通过在存储过程中使用参数,可以扩展存储过程的功能。使用参数既可以把外部信息传输到存储过程中,也可以把存储过程内的信息传输到外部以供使用。这样,就允许使用同一个存储过程多次搜索数据库,因此可以避免为每一个需要的值提供一个的存储过程。SQL Server支持两种类型的参数:输入参数和输出参数。一 使用输入参数的技术输入参数允许把外部信息传输到存储过程中。为了定义一个接收输入参数的存储过程,必须在创建存储过程的时候,根据实际情况,在create procedure语句中声明一个或者多个变量。参数声明的语法形式如下:parameter data_type=default 当在create procedure语句中声明一个或者多个变量的时候,应该考虑下面规则和因素:1 所有输入参数都应该在创建存储过程的时候进行检查,以便发现减少错误和改正2 应该为某一个输入参数提供一个缺省值。如果在存储过程中定义了一个缺省值,那么执行该存储过程的时候,可以不为该参数指定值。参数的缺省值必须是常量或者NULL3 在存储过程中,参数的数量不能超过255个4 根据机器可以使用的内存,在存储过程中的本地变量和全局变量受到一定的限制5 参数只是针对一个存储过程而言,因此同一个参数名称可以使用在不同的存储过程中。存储过程的参数信息存储在系统表syscolumns中。二 用输入参数执行存储过程的技术 为了把输入参数的数值传送到存储过程中,可以使用两种方法。一种方法是根据参数名称来指定,另外一种方法是根据参数的位置来指定。但是,当执行一个存储过程的时候,只能任意选择一种输入参数的方法,不能把两种方法混合在一起使用。1 根据参数名称来指定输入参数根据参数名称来指定输入参数就是在execute语句中使用格式parameter=value来指定输入的参数。当使用这种方法指定参数的时候,参数的顺序可以是任意的顺序,并且对于允许为空的参数或者有缺省值的参数,可以省略。根据参数名称来指定输入参数的语法形式如下:execute procedure_nameparameter=valueparameter=value2 根据参数的位置来指定输入参数根据参数的位置来指定输入参数就是只提供数值。当只提供数值时,这些数值的顺序必须与在创建存储过程语句中的参数顺序完全一致。当根据参数的位置来指定输入参数时,可以忽略有缺省值的参数,但是不能破坏参数的顺序。例如,如果某一个存储过程有5个参数,那么可以忽略第4个参数和第5个参数,但是不能仅忽略第4个参数而指定第5个参数。根据参数的位置来指定输入参数语句的语法形式如下:execute procedure_namevalue,value3 用输出参数返回值的技术存储过程可以把信息返回到调用存储过程的应用程序中或者返回到有输出参数的客户机程序中。为了使用输出参数,必须在create procedure语句和execute语句中指定关键字output。如果没有指定关键字output,那么当执行该存储过程的时候,存储过程仍然可以执行,但是会产生一个错误消息。输出参数具有下列一些特点:1 在调用存储过程的语句中,必须包含一个可以接收返回值的变量;2 在同一个批文件中的其他Transact-SQL语句中或者在调用存储过程中,使用这个接收返回值的变量;3 如果以与存储过程定义中参数顺序的不同顺序指定参数,那么参数必须使用参数名称传送;4 参数的数据类型可以是除text、ntext和image类型之外的任意数据类型。感想:看了有关存储过程的内容后,我决定在系统中使用存储过程,提高系统的运行效率。(二)摘自:肖金秀主编ASP网络编程技术2001年10月第1版 清华大学出版社Command对象 ADO的Recordset对象是用来记录由数据库数据库所取得的数据库对象,Connection对象则提供客户端应用程序与数据库之间的联络管道,而Command对象所担任的是整个应用系统的“信息传递”角色,它必须对数据库提出数据查询信息。如果精通SQL语句的写法,那么一定了解它的强大功能,有时可能需要在SQL中加入参数甚至返回值。我们可以利用存储过程的概念编写自己的子程序,并在Command对象调用使用。Command对象内拥有Parameters数据集合以记录存储过程中所定义的参数及参数值。1 建立Command对象Command对象主要的用途是执行Action Query指令。类似于使用Visual Basic Script建立一个Command对象同样是使用Server.CreateObject()的方法。用CreateObject方法建立Command对象之后,还要将Command对象的ActionConnection属性设置成某一个Connection对象。这样Command对象才能够被用来操作Connection对象所连接的数据库。程序如下:Set conn=server.createobject(“ADODB.Connection”)Connstr=”provider=sqloledb; data source=yinson;uid=sa;pwd=;database=website”conn.open connstrset cn.activeConnection=connsqlstr=”select * from t_member”mandtext=sqlstrset rs=cn.execute2 Command对象属性(1)ActiveConnection 使用ActiveConnection属性可确定在其上将执行指定Command对象或打开指定Recordset的Connection对象。(2)CommandText该对象为SQL语句,但也可以是提供者识别的任何其他类型的命令语句(如存储的过程调用)。如果设置CommandText属性时将Command对象的Prepared属性设置为true,并将Commmand对象绑定到打开的连接,则在调用execute或open方法时ADO将准备查询。(3)CommandTimeout使用Connection对象或Command上的CommandTimeout属性,允许由于网络拥塞或服务器负载过重产生的延迟而取消execute方法调用。如果在CommandTimeout属性中设置的时间间隔内没有完成命令执行,将产生错误,然后ADO将取消该命令。如果将该属性设置为零,ADO将无限期等待直到命令执行完毕。请确保正在写入代码的提供者和数据源支持CommandTimeout功能。(4)CommandType使用CommandType属性可优化CommandText属性的计算。如果CommandType属性的值等于adCmdUnknown(默认值),系统的性能将会降低,因为ADO必须调用提供者以确定CommandText属性是SQL语句,存储过程或表格名称。如果知道正在使用的的命令的类型,可通过设置CommandType属性指令ADO直接转到相关代码。如果CommandType属性与CommandText属性中的命令类型不匹配,调用execute方法时将产生错误。adExecuteNoRecords常量通过最小化内部处理来提高性能。该常量不独立使用,它总是与adCmdText或adCmdStoredProc组合使用。如果与Recordset.open一起使用adExecuteNoRecords,或者该方法使用Command对象都将产生错误。(5)Prepared缺省Prepared属性为true。可是,也可以设置这个属性为false来禁止查询的“准备“。在这种情况下,该查询执行时使用SQLExecDirect API。当ODBC接口给远程服务器提交一个查询时,或者直接给该服务器提交这个查询,或者创建一个存储过程执行该操作。创建一个存储过程会延缓初始化操作,但可提高所有随后的对该查询进行引用的性能。不过,有些查询不能在存储过程的窗体中执行。此时,必须设置该Prepared属性为false。3 Command对象方法Command对象有两种方法,分别是CreateParameter与Execute(1)CreateParameter使用CreateParameter方法可用指定的名称、类型、方向、大小和值创建新的Parameter对象。在参数中传送的所有值都将写入相应的Parameter属性。该方法无法自动将Parameter对象追加到Command对象的Parameter集合,这样就可以设置附加属性。如果将Parameter对象追加到集合,则ADO将使该附加属性的值生效。如果在Type参数中指定可变长度的数据类型,那么在将它追加到Parameters集合之前必须传送size参数或者设置Parameter对象的size属性,否则将产生错误。使用语法:Set parameter=command.CreateParameter(Name,Type,Direction,Size,Value)(2)Execute 推荐只对动作查询使用Execute方法。因为动作查询不返回任何行,所以execute不返回rdoResultset。可以对执行多语句的查询使用Execute方法,这些批语句都不能返回行。为了执行组合操作和select查询的多结果集查询,使用OpenResultset方法。4 Command对象的Parameters数据集合Command对象具有由Parameter对象组成的Parameters集合。使用Command对象的Parameters集合的Refresh方法,可以为在Command对象中指定的存储过程中指定的的存储过程或参数化查询,检索提供者的参数信息。某些提供者不支持存储过程调用或参数化的查询,使用此方法的提供者,在调用Parameters集合的Refresh方法将返回错误。如果调用Refresh方法前没有定义自己的Parameter对象而访问Parameters集合,ADO将自动调用该方法并填充该集合。如果知道要调用的存储过程或参数化查询的属性,可以最小化对提供者的调用以提高性能。使用CreateParameter方法可以创建具有适当属性设置的Parameters对象,使用Append方法可以将其添加到Parameters集合。这将允许用户设置并返回参数值而不必调用参数信息的提供者。如果正在写入不提供参数信息的提供者,则必须使用此方法手工填写Parameters集合才能使用参数。如果必要可以使用delete方法将Parameters对象从Parameters集合中删除。(1)Parameters数据集合属性 Count属性 使用Count属性可确定给定集合中对象的数目。 因为集合成员的编号从零开始,因此应该始终以零成员开头且以Count属性的值减1结尾而进行循环编码。并想在不使用Count属性的情况下在集合的成员中循环操作,请使用for eachnext命令。如果Count属性为零,集合中将不存在对象。(2)Parameters数据集合方法1)Append在集合上使用Append方法可将对象添加到该集合,此方法仅在Command对象的Parameters集合上有效。在将Parameter对象追加到Parameters集合中之前必须设置其Type属性。如果选定了变长数据类型,则必须将size属性设置为大于零的值。通过对参数作出说明,可最大程度的减少对提供者的调用,从而在使用存储过程或参数化查询时提高性能。但必须了解与所要调用的存储过程或参数化查询相关联的参数属性。使用CreateParameter方法可创建具有适当属性设置的Parameter对象,而使用Append方法则可将它们添加到Parameters集合。这样可以不必调用参数信息的提供者而设置和返回参数值。如果写到不提供参数信息的提供者,则必须使用该方法手工填写Parameters集合以便能够完全使用参数。使用语法:collection.Append object2)delete使用集合上的delete方法可删除集合中的某个对象。该方法只对Command对象的Parameters集合有效。在调用delete方法时必须使用Parameter对象的Name属性或它的集合索引对象变量是无效参数。使用语法:Parameters.delete index3)Item使用Item方法返回集合中的特定对象。如果方法无法在对应于index参数的集合中找到对象,将产生错误。同时,某些集合不支持已命名的对象,对于这些集合,必须使用顺序号引用。使用语法:set object=collection.Item(index)4)RefreshRefresh方法根据从中调用的不同集合而完成不同的任务。使用语法:collection.refresh(3)Parameter属性Parameter属性相当于Recordset对象内的子对象Field,Connection对象内的子对象Parameter。1)Attributes对于Parameter对象,Attributes属性为读/写,并且其值可能为以下任意一个或多个ParameterAttributesEnum值的和。2)Direction使用Direction属性可指定向过程传递参数或从过程传递参数的方式。Direction属性为读/写;该属性允许使用不返回该信息的提供者,或者在不希望ADO为了获取参数信息而附加调用提供者时设置该信息。并非所有的提供者都可以在其存储过程中确定参数方向。在此情况下,在执行查询前必须设置Direction属性。adParamUnknown:指示参数方向为未知adParamInput:默认值,指示输入参数。adParamOutput:输出参数。adParamInputOutput:指示为输入参数和输出参数。adParamReturnValue:指示为返回值。(4)StoredProcedure在讨论StoredProcedure之前,还要对Command对象的execute方法的作用进行一下阐述,通常使用Command的execute方法有三个目的。1 用于进行一些简单的处理。例如删除一条记录:comm.CommandType=adCmdTextcomm.CommandText=”delete from employee where job_id=1”comm.execute2 用于进行一些复杂的处理这类一般都于StoredProcedure一同工作,而且有输出参数和输入参数。3 用于返回一个RecordSet对象用于其他的处理,例如:comm.CommandType=adCmdTextcomm.CommandText=”delete from employee where job_id=1”set rs=comm.executedim Iwhile not rs.eof for I=0 to rs.fileds.count-1 response.write rs.fileds.item(I).value&”,” nextresponse.write”rs.movenext wend SoredProcedure是一个预先存储的数据库执行动作集,在SQL的管理结构中,对于一个数据库下有几个部分,一个是数据表的集合,一个是StoredProcedure的集合。将两者结合可以完成许多强大的功能。StoredProcedure其实是对传统的SQL语句的一种扩展,主要是在参数的输入与输出上。 StoredProcedure的标准写法: Create Procedure Procedure_name Define parameter As SQL Structure 上面的语法结构中,Procedure_Name为存储过程的名字,也是将在Command中引用的名字。然后是定义输出和输入的参数。最后是一个SQL结构化语句。下面是一个StoredProcedure的例子,它无需输入的参数,也没有输出。Create Procedure Del_UserAs Delete from Employee where job_id=1如果要删除指定的job_id,这时需要给这个StoredProcedure输入的参数。Create Procedure Del_User1 intJob intas delete from Employee where job_id= intJob这里的intJob就是一个输入的参数,它可以从外部接受输入的值,下面是给intJob输入参数的asp程序:set conn=server.createobject(“adodb.connection”)set comm=server.createobject(“mand”)conn.connectionString=”driver=SQL Server;Server=ser;”&_“uid=sa;pwd=;database=employee”conn.opencomm.ActiveConnection=conncomm.CommandType=adCmdStoredProccomm.CommandText=”Del_User1”param=comm.createParameter(“ID”,adint,adparamInput,4)param.value=1comm.parameters.append paramcomm.execute这样便可以向StoredProcedure传递参数了。有时在一个StoredProcedure中,还存在有输出的参数,下面是一个返回一个由Job_ID确定Fri_Name的值的例子。Create Procedure Get_fName intID int fName varChar Output 说明为输出的参数 as select fName=Fri_Name where Job_ID=intID它相应的asp程序也要改写为下面的形式: set conn=server.createobject(“adodb.connection”) set comm=server.createobject(“mand”) conn.connectionString=”Driver=SQL Server;Server=ser;”&_“uid=sa;pwd=;database=employee“ conn.open comm.ActiveConnection=conn comm.CommandType=adCmdStoredProccomm.CommandText=”Get_fName”param=comm.createparameter(“ID”,adint,adparaminput,4)param.value=2comm.Parameters.append paramparam=comm.createParameter(“fName”,adVarchar,adparamoutput,255,”)comm.parameters.append paramcomm.executeresponse.write “Job_id 为”¶m(0)&”的员工的姓名”¶m(1)感想:通过阅读上述内容,我对asp中的存储过程调用的基本语法结构有了系统而全面的认识。(三)摘自:/web/asp/index1/31.htmADO的定义ADO是一个相当简单的思想,一种让你仅用一种方式去访问数据的思想。ADO不算一个新思想,仅是采用现有的数据库访问技术,并将其融合而形成的一种适应现在和未来需要的新东西。适应未来的需求是一件十分重要的事。许多其他的技术,比如DAO和ODBC,在一些应用程序的开发过程中是可以接受的,然而随着Internet的兴起也出现了其自身的一些问题。 在许多情况下,传统的数据存取方法看上去能解决一些关于两层客户/服务器系统的问题,但要求与数据之间要保持一种永久性的连接,并要提供强大的功能,比如快速响应的查询、数据容易修改等。在Internet领域,现在必须考虑到Web无状态性本质,和潜在的众多可以访问Web站点的用户。要与数据建立永久的连接是不现实的,因此必须在设计应用程序时考虑这些因素。 那么,OLD DB和ADO确切地讲到底是什么?让我们与一些已有的数据存取技术做比较后再来回答这个问题。如果读者曾经接触过数据库编程,或许比较熟悉ODBC和RDO。开放数据库连接(ODBC)是允许访问关系数据库(比如Access和SQL Server)的应用程序编程接口(API)。正因为是一个API,许多程序员,特别是Visual Basic领域的程序员,发现它使用起来很复杂。远程数据对象(RDO)是位于ODBC上层的ActiveX对象,可以提供ODBC的所有功能,并且使用起来比较简单。 可以将OLE DB等同于ODBC,ADO等同于RDO。 OLE DB是应用程序与数据源交互的一种基本技术。 这相当复杂,确实也只有C和C+程序员能够使用。正如ADO的名字所暗示的,它是易于访问OLE DB功能的ActiveX对象。 你或许发现术语ActiveX与COM对象经常混用。对于ASP程序员来说它们并没有本质上的区别,因为两者都基于COM系统结构,只不过ActiveX是组件的一个跨平台标准,而COM是Windows专有的。 虽然微软已经引入了一种新的存取数据的技术,但并没有立即取消旧的技术,ODBC工作起来仍然很有效,并同OLE DB和ADO紧密地一起工作着。事实上,ODBC并不只是微软的产品,也受到国际组件的控制。并且由于广泛的使用,ODBC也不会突然消亡。隐藏在OLE DB背后的思想不是摒弃现有的技术,而是不断地改进它们。8.1.1 OLE DB和ADO的体系结构 前面已经给出了OLE DB与ADO在一些主要方面的简要解释。图8-1显示了这两项技术与应用程序和数据存储相互关系: 从图8-1中可以看出整体思路。图的顶端是应用程序(Web或常规的应用程序,这是无关紧要的),下面是提供对数据的访问的ADO和/或OLE DB。ADO和OLE DB两者兼有是因为OLE DB是一项基本技术。然而,OLE DB并不适用于所有语言,所以ADO位于OLE DB的上层,为那些不能直接访问OLE DB的语言(如Visual Basic和脚本语言)提供编程接口。ADO提供了比OLE DB更容易的编程接口,因此即使那些可以直接使用OLE DB的编程语言,如C+或Java,也可使用ADO以简化对数据的访问。 图8-1显示的是微软的编程语言,而ADO是一个COM组件,因此可用于任何与COM兼容的编程语言,比如Delphi或支持Active Scripting接口的脚本语言。所以,虽然ADO与平台有关,但与开发的语言是无关的。当然,对于ASP主要使用VBScript和JScript,在组件中使用ADO时,有一些Visual Basic代码。 现在知道了OLE DB和ADO允许访问数据,可是为什么需要它们?老方法出问题了吗?这里有两个主要原因: 首先,OLE DB和ADO是用来访问数据存储的。注意这里指“数据存储”而不是“数据库”。尽管数据库仍旧是数据存储最为广泛的形式,但并不一定含有全部的数据。一些消息系统,如Microsoft Exchange Server,也普遍地用于存储数据。目录服务(Directory Service)正开始在初露端倪,它们包含着有关用户、机器等的数据;Web服务器中存有大量的信息。可以继续罗列下去,很明显需要一种能访问所有这些不同类型数据的方法。 其次,源于Internet应用程序的兴起与Web的状态本质。过去的访问数据的方法主要考虑与数据存储保持永久连接的情况下处理数据。而OLE DB和ADO正是为解决这个问题而设计的,提供断开连接的记录集,我们将会在后面看到有关这方面的内容。8.1.2 消费者与提供者 ADO系统结构图展示了ADO是如何在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论