610 likes | 774 Views
asp. ADO 的内部对象. ADO?. ADO 的内部对象. Connection 对象,连接对象,主要用来建立与数据库的连接。 Command 对象,命令对象,是对数据库执行命令的对象,它可以执行对数据库查询、添加、删除、修改等记录操作。 Recordset 对象,记录集对象,用来得到从数据库返回的记录集 。 Error 、 Parameter 、 ield 分别是它们的子对象. Connection 对象. 通常我们打电话要经过拨号连接、会话、会话结束后挂断等操作步骤,对 Web 数据库的操作也是如此,即建立与数据库的连接、操作数据库和关闭与数据库的连接。
E N D
asp ADO的内部对象
ADO的内部对象 • Connection对象,连接对象,主要用来建立与数据库的连接。 • Command对象,命令对象,是对数据库执行命令的对象,它可以执行对数据库查询、添加、删除、修改等记录操作。 • Recordset对象,记录集对象,用来得到从数据库返回的记录集 。 • Error、Parameter、ield分别是它们的子对象
Connection对象 • 通常我们打电话要经过拨号连接、会话、会话结束后挂断等操作步骤,对Web数据库的操作也是如此,即建立与数据库的连接、操作数据库和关闭与数据库的连接。 • Connection对象就是用于建立并管理与数据库的连接。连接建立后,才可以利用Connection对象的一些方法、Command命令对象和Recordset记录集对象对数据库进行操作。
Connection对象 • 利用ASP中的Server对象的CreateObject方法建立连接对象。 • 建立Connection对象的方法如下: Set Connection对象实例=Server.CreateObject("ADODB.Connection")
连接对象建立后,再使用连接对象的Open方法打开数据库。注意创建与打开是两回事。 • Connection对象实例.Open 数据库连接字符串 • 在上面的数据库连接字符串中,会用到若干参数,如DSN :ODBC数据源名称User:数据库登录用户名 Password:数据库登录密码 Driver :数据库的驱动程序类型Dbq :数据库的物理路径Provider: 数据提供者Data Source:数据库的物理路径
连接access数据库的具体方法 • 基于ODBC数据源的连接方式的省略方式"address2" • 基于ODBC但是没有数据源的连接方式(使用Server.MapPath转换路径) "Driver={Microsoft Access Driver (*.mdb)};Dbq="Server.MapPath("address.mdb") • 基于OLE DB的连接方式(使用Server.MapPath转换路径) "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("address.mdb")
SQL数据库的连接方式 • SQL数据库的连接方式与Access的基本一样,不过SQL数据库一般有登录账号和密码,因此需要在代码中表示出来。 • 例如有一个SQL 数据库,数据源名为zbsdbbszb,数据库登录账号为sdzb,密码为123456。<%Set db=Server.CreateObject("ADODB.Connection") db.Open"zbsdbbszb","sdzb","123456" %>
连接数据库的代码要插入到要操作数据库的ASP页面代码之上,如果ASP页面数比较多,可以采用包含连接文件的方式进行连接。例,将连接代码转成一个连接文件conn.asp,然后在ASP页面<html>标签前面写上 <!--#include file="conn.asp"-->。
Connection对象的常用属性 • ConnectionTimeOut用于指定连接对象执行与数据库连接的最长时间,如果超过时间数据库没有连上,则停止执行,语法如下:db.ConnectionTimeout=秒数 • 默认值15秒。 • 如果数据库比较慢,可以设置允许连接时间长些,例如设置时间为30秒。<% db.ConnectionTimeout=30 %>
CommandTimeOut属性用于设置Connection对象的Execute方法的最长执行时间。CommandTimeOut属性用于设置Connection对象的Execute方法的最长执行时间。 • 默认值为30秒。 • 执行数据库操作时,如果时间到了仍然无法正确执行,将结束操作,语法如下:db.CommandTimeout=秒数 • 可以根据需要设置时间。如果数据库比较慢,可以设置允许操作的时间长些,例如设置时间为60秒。<% db.CommandTimeout=60 %>
ConnectionString、Provider、Mode属性。这几个属性通常用来设置数据库连接信息或连接权限等。其中ConnectionString属性用于指定数据库连接字符串,如: Provider属性用于指定OLE DB提供者,如:conn.Provider="Microsoft.Jet.OLEDB.4.0“
Mode属性用来设置连接数据库的权限,利用该属性就可以在打开数据库时限制数据库的连接方式,比如只读或只写。Mode值:1只读权限;2只写权限;3可读可写权限。Mode属性用来设置连接数据库的权限,利用该属性就可以在打开数据库时限制数据库的连接方式,比如只读或只写。Mode值:1只读权限;2只写权限;3可读可写权限。 • 默认情况下,是可读可写。 • 例<%Set db=Server.CreateObject("ADOBD.Connection")db.Mode=1db.Open"Dbq="&Server.Mappath("sdadd.mdb")&”;Driver={Microsoft Access Driver(*.mdb)} "%>如果不想对数据库进行修改操作,可以设置连接数据库的权限为只读,这样数据库安全性能好。
Connection对象的方法 • Open用于建立Connection连接对象与数据库的连接。 • 连接建立后,使用连接对象的Open方法打开数据库,才可以继续进行各种数据库操作。语法如下:
Close方法用来关闭一个已打开的Connection对象。 • 语法如下:db.Close • 当与数据库的连接任务完成之后,应关闭这个连接,以释放与这个连接相关的系统资源。所有信赖于此连接对象的命令对象和记录集对象也将被切断连接关系, • 当页面关闭后,连接对象也会自动关闭,Close方法可以省略不写,但最好使用代码形式下达关闭命令。特别是用户量很大的ASP程序应该使用代码形式下达关闭连接对象的命令。 • Close方法关闭记录集对象,并不会将记录集对象从内存中清除。用Set db=nothing语句清除这个对象,以完全释放所占用的系统资源。 • 将连接对象彻底清除<%db.CloseSet db=nothing%>
Execute方法用来执行数据库查询,利用该方法可以完成查询、添加、更新和删除记录的功能。Execute方法用来执行数据库查询,利用该方法可以完成查询、添加、更新和删除记录的功能。 • 当创建了连接对象并且与数据库连接后,就可以通过连接对象的Execute方法直接与数据库对话,对数据库进行添加、更新和删除等操作。 • 有两种语法。 • 第一种,Set rs=db.Execute(SQL字符串)rs是我们给Recordset对象取的名字,这种方法将返回一个Recordset对象,得到查询操作的记录集。如果对数据库查询操作需要显示记录时就需要用到记录集,一般就要用到这种方法。
例,返回记录集,并显示记录<%Set db=Server.CreateObject("ADODB.Connection") db.Open"zbsdbbszb"set rs=db.execute("select * from article where name='张三'") do while not rs.eofresponse.write rs("title")&"<br>"rs.movenextloop%>
第二种,db.Execute SQL字符串这种方法不返回一个Recordset对象。如果对数据库执行的是添加、删除和更新操作,由于没有必要返回记录集,所以可以采用这种方法。 • 例:执行数据库的删除操作<%Set db=Server.CreateObject("ADODB.Connection") db.Open"zbsdbbszb" strsql="delete from article where name='张三'"db.execute strsql • %>
BeginTrans、CommitTrans、RollbackTrans方法。 • 这三种方法是关于事务处理的。 • 其中BeginTrans方法用于开始一个事务处理;CommitTrans (委托\递交)方法用于提交事务处理结果,只有执行该方法后,才将结束事务处理通道并且真正更新数据库的内容;RollbackTrans (反转)用于取消事务处理结果,执行该方法后,将结束事务处理通道并且取消当前事务处理中的任何更新动作。
事务处理? • 事务是指整体成功或失败的操作,一般性质的数据库操作没有必要考虑事务处理,但是如果是重要的数据库操作则有必要采用事务处理方式以保证进行可靠的数据更新。例如网上商店系统,在进行交易的时候,用户要把费用从自己的账号转到公司的账号,这项操作一般分两步执行,第一步先从该用户账号上删除这笔款项,第二步再在公司的账号上加上这笔款项,如果在第一步执行后发生意外,第二步则无法进行,这样就会出现账面上的错误。为了防止这种错误,可以将分散执行的数据库操作封装成一个整体操作来完成,以保证两步操作均正确执行,否则一步都不执行,从而保证数据库里数据的完整性。
<%Set db=Server.CreateObject("ADODB.Connection") db.Open"zbsdbbszb" On Error Resume Next ' 如果发生错误,跳过执行下一句db.BeginTrans ' 开始事务处理过程 strSql="Delete from article where name='张三'" ' 删除记录db.Execute(strSql) strSql="Insert into article (name) values('李四')" ' 添加记录db.Execute(strSql)If db.Errors.Count=0 Then ' 如果没有错误发生,则执行下面语句 db.CommitTrans ' 提交事务处理 Elsedb.RollbackTrans ' 如果有错误发生,则取消事务处理End If%>
Error对象和Errors集合 • Error对象又称为错误对象,是Connection对象的子对象。连接时发生错误的可能性大,例如,对服务器的要求已经饱和、连接时所指定的数据源打不开等,因此Error对象可以看成连接对象的子对象。 • 数据库程序运行时,一个错误就是一个Error对象,所有的Error对象就组成了Errors集合,又称错误集合。
Errors集合 • Count属性。Count返回Errors集合中Error对象数目,可以用于判断是否有错误发生。如果Count=0则表示没有错误发生;Count>0则表示有错误发生。
Item: 用于创建Error错误对象。Errors集合中可能包括多种错误,利用Item可以给每个错误对象建立实例。 • Set err=db.Errors.Item(index) 省略Item为: Set err=db.Errors (index) • 上面语句中index为错误索引值,从0起始,index取值是从0到Errors.Count-1的一个长整数,0值表示第一个错误,类推。
Recordset对象 • 当用Command对象或Connection对象执行查询指令后,就会返回一个记录集对象,该记录集包含满足条件的所有记录,然后就可以利用ASP语句将记录集的数据显示在页面上。 • 一般只有在查询记录时才会需要建立Recordset对象。而插入、删除和修改记录时则不需要返回记录集,所以一般就利用Connection对象的Execute方法就可以了。
建立Recordset对象 • Set Recordset对象实例=Server.CreateObject("ADODB.Recordset") • Recordset对象实例.Open [Source], [ActiveConnection], [CursorType], [LockType], [Options]
指针类型---CursorType参数值 • 0 向前指针,默认值。向前单向移动指针,所耗系统资源最少,执行速度也最快,但很多属性和方法将不能用。 • 1 键盘指针,记录集中可以前后移动。
LockType参数值 • 1 只读,默认值,适用于仅浏览数据。执行速度快,消耗系统资源少。 • 2,只能同时被一个用户所修改,修改时锁定,完毕解锁
建立Recordset对象的方法 • 利用Connection对象的Execute方法建立 <% Dim conn Set conn=Server.CreateObject("ADODB.Connection") conn.Open "address" Dim rs Set rs=conn.Execute("Select * From tbAddress") %> • 这种方法是最常用的方法。但功能有限。
利用Connection对象但明确建立Recordset对象的方式 • <% Dim conn Set conn=Server.CreateObject("ADODB.Connection") conn.Open "address" Dim rs Set rs=Server.CreateObject("ADODB.Recordset") rs.Open "Select * From tbAddress",conn,1,2,1 %> • 说明:这是将方法一修改为明确建立Recordset对象。通过参数配置,增强功能,还可用于删除、添加、修改等操作。
Recordset对象的重要属性 • Source、ActiveConnection、CursorType、LockType属性 • 这一组属性主要用于设定记录集的特性。 • <% Dim rs Set rs=Server.CreateObject("ADODB.Recordset") rs.Source="Select * From tbAddress“ rs.ActiveConnection=conn rs.CursorType=1 '设置为键盘指针,可前后移 rs.LockType=2 '设置可被一个客户修改 rs.Open '打开记录集 %>
RecordCount属性 • 该属性用于返回记录集中的记录总数。例如下面语句将输出记录总数: <% Response.Write rs.RecordCount %>
Bof、Eof属性 • 这两个属性用于判断当前记录指针是否指向记录集的开头或结尾或为空。 • 如果记录集为空,指针同时指向Bof、Eof。
< %if not rs.bof and rs.eof then ' 如果不是开头,也不是结尾,则执行…End if%>
循环输出记录集记录的代码如下:< %Do while not rs.eof ' 如果没有到达记录集未尾,则循环输出下面的记录…Rs.MoveNextLoop%>
PageSize、PageCount、AbsolutePage、AbsolutePosition属性 • 这一组属性用来完成分页显示数据的功能。 • PageSize属性用于设置每一页的记录数。例如下面语句将设置每页显示10条记录: <% rs.PageSize =10 %> • PageCount属性:用于返回数据页的总数,如下面语句将输出数据页总数: <% Response.Write rs.PageCount %>
AbsolutePage属性:用于设置当前指针指向哪一页,如下面语句将指向第2页:AbsolutePage属性:用于设置当前指针指向哪一页,如下面语句将指向第2页: <% rs.AbsolutePage=2 %> • AbsolutePosition属性:用于设置当前指针指向的记录行的绝对值,如下面语句将指向第10条记录: <% rs.AbsolutePosition=10 %> • 利用这几个属性时一般也要求设置指针类型为1(键盘指针)
分页显示数据 • 首先显示第1页数据,并且在下方提供页码链接,当客户选择页码时,仍然传递到本文件,并显示新的一页。