版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章利用ADO实现数据库
的存取
本章要点Connection对象Recordset对象Command对象Field对象Error对象ASP作为动态Web应用程序,其开发Web数据库是其最重要的环节。ADO(ActiveXDataObjectsActiveX数据对象)是微软提供的新一代数据库存取访问技术,ASP内置的ADO组件是数据库开发的重要工具。应用ADO组件,通过ODBC驱动程序或OLEDB链接字符串可实现ASP与数据库之间的连接,通过ADO组件提供的各种方法实现数据检索和数据编辑等操作。本章将重点介绍ADO对象的结构和配置,以及各种数据访问对象。本章将详细介绍ActiveX数据对象及其在ASP编程中的应用。8.1ADO简介ADO对象的主要优点是高速、容易使用、占用内存和磁盘空间少,所以非常适合于作为服务器端的数据库访问技术。ADO对象是多线程的,在出现大量并发请求时,也同样可以保持服务器的运行效率,并且通过连接池技术以及对数据库连接资源的完全控制,提供与远程数据库的高效连接与访问,同时它还支持事务处理,以开发高效率、高可靠性的数据库应用程序。ADO结合了OLEDB易于使用的特性以及RDO(RemoteDataObjects远程数据对象)和DAO(DataAccessOjects
数据访问对象)模型中的最好特性,并将它们重新组织在一个对象模型中。ADO包含所有可以被OLEDB标准对象描述的数据类型,即ADO对象模型具有扩展性,即使对于那些从来没有见到过的记录集的信息格式,只要使用正常的ADO编程对象,就能够可视化地处理所有的工作,ADO对象模型给开发人员提供了一种快捷、简单、高效的数据库访问方法,可以在脚本中使用ADO对象建立对数据库的连接,并从数据库中读取记录,形成需要的对象集合。使用ADO对象建立对数据库的连接有两种方法:使用面向ODBC驱动器的OLEDB驱动程序建立连接,这种连接与任何有ODBC驱动器的数据库兼容。使用原始的OLEDB驱动程序建立连接。ADO组件由ADODB对象库构成,ADODB对象库主要包含3个对象和2个数据集合。它们分别是:Connection对象、Recordset对象、Field对象、Fields集合、Error集合。ADO把绝大部分的数据库操作封装在上述3个对象中,在ASP页面中编程调用这些对象执行相应的数据库操作。8.2
Connection对象Connection对象用来建立数据源和ASP程序之间的连接。它代表ASP程序与数据源的唯一对话,建立到数据源的连接后,可以在此基础上用RecordSet对象或Command对象对数据库进行查询、更新、插入、删除等操作。8.2.1
打开和关闭数据库连接
要实现打开和关闭数据库连接,首先要应用Connection对象创建数据连接,因为Connection对象不是ASP内置对象,要使用Connection对象,必须首先显式地创建它。
<%
Dimconn
Setconn=Server.CreateObject("ADODB.Connection")
%>创建了Connection对象之后,需要打开该连接才能连接到数据库。若使用ODBC进行数据源连接,则对应的语法为:
<%cn.Open"DSN=建立的系统DSN名称"%>Connection对象也可直接连接到Access数据库
<%
Dimconn
SetConn=Server.CreateObject("ADODB.Connection")
Conn.open"provider=microsoft.jet.oledb.4.0;datasource=“&server.
mappath("database.mdb")
%>应用完Connection对象之后,用户最好关闭并释放Connection对象,来缓解数据库服务器的压力。其语法如下:
<%
Conn.close
Setconn=nothing
%>8.2.2
Connection对象的属性
属
性含
义ConnectionString包含用来和数据源建立连接的字符串。ConnectionTimeOut包含连接到数据库的等待最长时间。如果超过此时间,则认为连接失败。DefaultDatabase当前连接数据源所使用的默认数据库。Provider包含Connection对象的数据提供者名称。State包含Connection对象的当前状态,返回一个描述连接是打开还是关闭的值。1.ConnectionTimeOut属性:可设置或返回在终止尝试和产生错误之前打开连接需要等待的秒数。默认是15秒,语法格式如下:Setconn=server.createobject(“Adodb.connection”)Conn.connectiontimeout=302.ConnectionString
属性:可设置或返回用于建立到数据源的连接的信息:setconn=Server.CreateObject("ADODB.Connection")conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;datasource="&server.mappath("database.mdb")3.DefaultDatabase
属性:可设置或返回一个字符串值,该值是特定Connection对象上的默认数据库的名称:setconn=Server.CreateObject("ADODB.Connection")conn.DefaultDatabase="database.mdb"4.Provider属性:可设置或返回包含特定Connection对象的提供者名称的字符串值。默认是(MicrosoftOLEDBproviderforODBC),连接关闭时可读写:setconn=Server.CreateObject("ADODB.Connection")conn.Provider="Microsoft.Jet.OLEDB.4.0"conn.Open(Server.Mappath("database.mdb"))response.write(conn.Provider)conn.close
5.State属性:可返回一个值,为只读。该值描述对象的当前状态是打开、关闭、正在连接、正在执行还是正在检索数据。0:对象已经关闭1:对象已经打开2:对象正在连接4:对象正在执行命令8:正在检索对象的行8.2.3
Connection对象的方法
方
法描
述Open打开一个数据库的链接。Execute该方法可以执行SQL语句,并且返回一个RecordSet对象。Close关闭一个已经打开的链接。BeginTrans开始一个新事务。CommitTrans保存任何更改并结束当前事务。RollbackTrans取消当前事务中所作的任何更改并结束事务。1.Open方法:用于打开与数据源的连接,只有调用了Connection对象的Open方法后,Connection对象才会真正存在,然后才能发命令对数据源产生作用。语法为:
connection.Open
connectionstring,userID,passwordconnectionstring:可选。一个包含有关连接的信息的字符串值。该字符串由一系列被分号隔开的parameter=value语句组成的。userID:可选。一个字符串值,包含建立连接时要使用的用户名称。Password:可选。一个字符串值,包含建立连接时要使用的密码。直接将数据源连接字符串传递给open方法:setconn=Server.CreateObject("ADODB.Connection")str="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath("database.mdb")Conn.Open
str先给Connection对象的ConnectionString属性赋值,然后调用Open方法:setconn=Server.CreateObject("ADODB.Connection")str="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath("database.mdb")conn.connectionString=strconn.OpenAccess数据库直接的连接方法:Setconn=server.createobject(“Adodb.connection”)Conn.open“Driver={MicrosoftAccessDriver(*.mdb)};DBQ=”&server.mappath(“database.mdb”)Access数据库的OLEDB连接方法:setconn=Server.CreateObject("ADODB.Connection")Conn.open"Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath("database.mdb")SQLServer的连接方法:setconn=Server.CreateObject("ADODB.Connection")Conn.open“Driver={SQLServer};Server=服务器名称;UID=登录名;PWD=密码;Database=数据库名称;”SQLServer数据库的OLEDB连接方法:setconn=Server.CreateObject("ADODB.Connection")Conn.open“Provider=SQLOLEDB.1;DataSource=服务器名;userID=登录名;Password=密码;initialcatalog=数据库名”数据库的DSN连接方法:setconn=Server.CreateObject("ADODB.Connection")Conn.open“DSN=DSN名称”2.Execute方法:此方法可用于执行指定的SQL语句,用于实现对数据库表的修改、插入、删除和查询等操作。其一般格式有以下两种:1)执行SQL查询语句时,将返回查询得到的记录数。语法为:
Set对象变量名=Connection.Execute(“SQL查询语句”)dimconnSetConn=Server.CreateObject("ADODB.Connection")Conn.open"provider=microsoft.jet.oledb.4.0;datasource="&server.mappath("database.mdb")Setrs=Conn.Execute("SQL语句")2)执行操作性语句时,没有记录集的返回。语法为:
Connection.Execute
CommandText,RecordsAffected,Optionscommandtext:字符串类型,可以是SQL语句,表名称,存储过程等RecordsAffected:操作所影响的记录个数Options:告诉数据源commandtext的类型,1表示SQL语句;2表示表名;4表示存储过程;8表示不清楚;3.Close方法:该方法用于关闭连接对象,以释放所占用的系统资源。Conn.closeSetconn=nothing8.3
RecordSet对象
除了利用Connection对象的Execute方法可获得记录集外,利用ADO的RecordSet对象,也可获得记录集,且该方法所获得的记录集,具有更灵活的控制性和更强的功能。在打开记录集之前,可以详细设置记录集的游标和锁定类型,以决定可对一个记录集进行怎样的操作。同时该对象提供了一系列的方法和属性,通过编程可以非常方便的处理记录集,下面介绍该对象的应用。创建一个RecordSet对象实例,语法如下:
Setrs=Server.CreateObject(“ADODB.RecordSet”)8.3.1
RecordSet对象的属性
1.ActiveConnection属性:通过设置RecordSet对象的ActiveConnection属性可以使Recordset对象与特定的Connection对象相关联,ActiveConnection属性可以是一个Connection对象名称或是一个包含数据源连接信息的字符串,如果连接被关闭,设置或返回连接的定义,如果连接打开,设置或返回当前的Connection对象。2.Source属性:可以是一个Command对象名称、一条SQL语句或是一个指定的数据表等。3.CursorType属性:设置或返回一个Recordset
对象的游标类型。在ADO中,定义了4种不同的游标(指针)类型。符号常量值含
义AdOpenForwardOnly0默认值,仅向前游标,只允许在
Recordset
中向前滚动。此外,由其他用户所做的添加、更改和删除将是不可见的。adOpenKeyset1键集游标,允许用户看到其他用户所做的数据更改。但不能看到其他用户添加和删除的记录。
adOpenDynamic2动态游标,用户可以看到其他用户所作的添加、更改和删除
。adOpenStatic3静态游标,提供记录集的静态副本,可用来查找数据或生成报告。此外,由其他用户所做的添加、更改和删除将是不可见的。4.LockType属性:设置或返回当编辑Recordset
中的一条记录时,可指定锁定类型的值。符号常量值含
义adLockReadOnly0默认值。以只读模式打开,故不能更新、插入或删除记录集中的记录。adLockPessimistic1保守式记录锁定。在编辑修改一个记录时,立即锁定它,以防止其他用户对其进行操作。最安全的锁定机制。adLockOptimistic2开放式记录锁定。在编辑修改记录时,并未加锁,只有在调用记录集的Update方法更新记录时,才锁定记录。adLockBatchOptimistic3开放式批更新,用于立即更新模式相反的批更新模式。5.RecordCount属性:返回一个Recordset
对象中的记录数目。6.BOF属性:如果当前的记录位置在第一条记录之前,则返回true,否则返回fasle。7.EOF属性:如果当前记录的位置在最后的记录之后,则返回true,否则返回fasle。利用该属性,可防止指针越界而发生错误。通常用来作为循环访问记录集结束的标志。8.PageSize属性:设置或返回Recordset
对象的一个单一页面上所允许的最大记录数。9.PageCount属性:返回一个Recordset
对象中的数据页数。10.AbsolutePage属性:设置或返回一个可指定Recordset
对象中页码的值。11.AbsolutePosition属性:设置或返回一个值,此值可指定Recordset
对象中当前记录的顺序位置(序号位置)。该属性一般是介于1和RecordCount属性值之间的整数。8.3.2
RecordSet对象的方法
1.Open方法:RecordSet对象中最重要的方法是应用Open方法可打开一个记录集,其语法如下:记录集对象实例变量.OpenSource,ActiveConnection,CursorType,LockType,Options
Source:该参数可以是含有一个SQL字符串、表格、视图名称或者存储过程调用的字符串ActiveConnection:该参数可以Connection对象的实例名或字符串。CursorType:用来确定服务器打开Recordset时应该使用的游标类型。LockType:用来确定服务器打开Recordset时应该使用的锁定类型。Options:该参数用于指定Source参数项的命令字符串的类型,其取值与对应的类型与Connection对象中Execute方法中Options参数相同constadCmdText=1constadOpenStatic=3constadLockPessimistic=1setconn=Server.CreateObject("ADODB.Connection")conn.Provider="Microsoft.Jet.OLEDB.4.0"conn.Open
server.mappath("database.mdb")fhsql="select*fromstudent"setrs=server.CreateObject("adodb.recordset")rs.open
fhsql,conn,adOpenStatic,adLockReadOnly,adCmdText‘……一些处理语句rs.closeSetrs=nothingconn.close
setconn=nothing2.RecordSet对象其它方法:
RecordSet对象提供了如表所示的非常丰富的记录集方法,通过这些方法可实现对记录集的添加、删除、修改等各种操作。方
法描
述AddNew创建一条新记录。Close关闭一个
Recordset。Delete删除一条记录或一组记录。Find搜索一个
Recordset
中满足指定某个条件的一条记录。GetRows把多条记录从一个
Recordset
对象中拷贝到一个二维数组中。GetString将
Recordset
作为字符串返回。Move在
Recordset
对象中移动记录指针。MoveFirst把记录指针移动到第一条记录。MoveLast把记录指针移动到最后一条记录。MoveNext把记录指针移动到下一条记录。MovePrevious
把记录指针移动到上一条记录。
Open打开一个数据库元素,此元素可提供对表的记录、查询的结果或保存的
Recordset
的访问。Seek搜索
Recordset
的索引以快速定位与指定的值相匹配的行,并使其成为当前行。Update保存所有对
Recordset
对象中的一条单一记录所做的更改。UpdateBatch把所有
Recordset
中的更改存入数据库。请在批更新模式中使用。8.5
Errors数据集合和Error对象
当ADO对象的操作产生错误时,会有一个或多个Error对象被放到Connection对象的Errors集合中;据此,可获得产生错误的原因和来源,以便采取适当的措施,使程序更加完善。Error对象可通过建立的Connection对象的Errors数据集合取得。8.5.1
Errors数据集合
所有Error对象的集合用来响应一个连接(Connection)上的错误。Errors数据集合包括两个属性:Count和Item。
1.Count属性:用来指示集合中有多少个Error对象,应用语法为:
long=Errors集合变量.count。Errors集合的属性Count可以获得数据库是否发生了错误,如果没有错误发生,则Count等于0,否则大于0。
2.Item属性:用来访问Errors集合中每一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 孕期春梦的健康宣教
- 《设寻租理论王》课件
- 社会媒体营销的总结与展望计划
- 线上艺术教学的创新尝试计划
- 科学管理班级时间的有效方式计划
- 如何实现部门间的年度协同目标计划
- 森林防火安全培训
- 制定财务风险控制的措施计划
- 如何分析企业财务数据计划
- 头孢类抗菌药物相关行业投资规划报告
- SYT 6968-2021 油气输送管道工程水平定向钻穿越设计规范-PDF解密
- 安全标准化建设事件事故管理事故事件统计分析台账
- 《第02课 抗美援朝》教学设计(附学案)
- 2024年贵州贵安发展集团有限公司招聘笔试参考题库附带答案详解
- 【110kV变电站电气一次部分设计探究5800字(论文)】
- 线上房展会活动方案
- PCB制造成本参数
- 操作系统智慧树知到期末考试答案2024年
- 《跨境供应链管理》教学大纲(含课程思政)
- 高三英语二轮复习写作专项读后续写人物情绪描写方法课件
- 殡仪馆物业服务方案
评论
0/150
提交评论