亲宝软件园·资讯

展开

ASP 游标 ASP 游标参数详解(ASP记录集)

人气:0
想了解ASP 游标参数详解(ASP记录集)的相关内容吗,在本文为您仔细讲解ASP 游标的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:ASP,游标,下面大家一起来学习吧。
rs.open sql,conn,A,B
A:
ADOPenforwardonly (=0)
只读,且当前数据记录只能向下移动。
ADOPenkeyset (=1)
只读,当前数据记录可自由移动。
ADOpendynamic (=2)
可读写,当前数据记录可自由移动。
ADOpenstatic (=3)
可读写,当前数据记录可自由移动,可看到新增记录。
B:
ADLockreadonly (=1)
缺省锁定类型,记录集是只读的,不能修改记录。
ADLockpessimistic (=2)
悲观锁定,当修改记录时,数据提供者将尝试锁定记录以确保成功地编辑记录,只要编辑一开 始,则立即锁住记录。
ADLockoptimitic (=3)
乐观锁定,直到用Update方法提交更新的记录时才锁定记录。
ADLockbatchoptimistic (=4)
批量乐观锁定,允许修改多个记录,只有调用UPDATE BATCH方法时才锁定记录。
 当不需要改动任何记录时,应该使用只读的记录集,这样提供者不用做任何检测。对于一般的使用,乐观的锁定可能是最好的选择,因为记录只被锁定一小段时间,数据在这段时间被更新。这就减少了资源的利用。

可使用 Recordset 对象操作来自提供者的数据。使用 ADO 时,通过 Recordset 对象可对几乎所有数据进行操作。所有 Recordset 对象均使用记录(行)和字段(列)进行构造。由于提供者所支持的功能不同,某些 Recordset 方法或属性有可能无效。
在 ADO 中定义了四种不同的游标类型:
动态游标 ? 用于查看其他用户所作的添加、更改和删除,并用于不依赖书签的 Recordset 中各种类型的移动。如果提供者支持,可使用书签。
键集游标 ? 其行为类似动态游标,不同的只是禁止查看其他用户添加的记录,并禁止访问其他用户删除的记录,其他用户所作的数据更改将依然可见。它始终支持书签,因此允许 Recordset 中各种类型的移动。
静态游标 ? 提供记录集合的静态副本以查找数据或生成报告。它始终支持书签,因此允许 Recordset 中各种类型的移动。其他用户所作的添加、更改或删除将不可见。这是打开客户端 (ADOR) Recordset 对象时唯一允许使用的游标类型。
仅向前游标 ? 除仅允许在记录中向前滚动之外,其行为类似静态游标。这样,当需要在 Recordset 中单程移动时就可提高性能。
在打开 Recordset 之前设置 CursorType 属性来选择游标类型,或使用 Open 方法传递 CursorType 参数。部分提供者不支持所有游标类型。请检查提供者的文档。如果没有指定游标类型,ADO 将默认打开仅向前游标。
如果 CursorLocation 属性被设置为 adUseClient 后打开 Recordset,则在返回的 Recordset 对象中,Field 对象的 UnderlyingValue 属性不可用。对部分提供者(例如 Microsoft ODBC Provider for OLE DB 连同 Microsoft SQL Server),可以通过使用 Open 方法传递连接字符串,根据以前定义的 Connection 对象独立地创建 Recordset 对象。ADO 仍然创建 Connection 对象,但它不将该对象赋给对象变量。不过,如果正在相同的连接上打开多个 Recordset 对象,就应该显式创建和打开 Connection 对象,由此将 Connection 对象赋给对象变量。如果在打开 Recordset 对象时没有使用该对象变量,即使在传递相同连接字符串的情况下,ADO 也将为每个新的 Recordset 创建新的 Connection 对象。
可以创建所需数量的 Recordset 对象。
打开 Recordset 时,当前记录位于第一个记录(如果有),并且 BOF 和 EOF 属性被设置为 False。如果没有记录,BOF 和 EOF 属性设置是 True。
假设提供者支持相关的功能,可以使用 MoveFirst、MoveLast、MoveNext 和 MovePrevious 方法以及 Move 方法,和 AbsolutePosition、AbsolutePage 和 Filter 属性来重新确定当前记录的位置。仅向前 Recordset 对象只支持 MoveNext 方法。当使用 Move 方法访问每个记录(或枚举 Recordset)时,可使用 BOF 和 EOF 属性查看是否移动已经超过了 Recordset 的开始或结尾。
Recordset 对象可支持两类更新:立即更新和批更新。使用立即更新,一旦调用 Update 方法,对数据的所有更改将被立即写入基本数据源。也可以使用 AddNew 和 Update 方法将值的数组作为参数传递,同时更新记录的若干字段。
如果提供者支持批更新,可以使提供者将多个记录的更改存入缓存,然后使用 UpdateBatch 方法在单个调用中将它们传送给数据库。这种情况应用于使用 AddNew、Update 和 Delete 方法所做的更改。调用 UpdateBatch 方法后,可以使用 Status 属性检查任何数据冲突并加以解决。
注意 要执行不使用 Command 对象的查询,应将查询字符串传递给 Recordset 对象的 Open 方法。但是,在想要保持命令文本并重复执行或使用查询参数时,仍然需要 Command 对象。
AddNew 创建可更新的 Recordset 对象的新记录。
Append 将对象追加到集合中。如果集合是 Fields,可以先创建新的 Field 对象然后再将其追加到集合中。
AppendChunk 将数据追加到大型文本、二进制数据 Field 或 Parameter 对象。
BeginTrans、CommitTrans 和 RollbackTrans 按如下方式管理 Connection 对象中的事务进程:
BeginTrans ? 开始新事务。
CommitTrans ? 保存任何更改并结束当前事务。它也可能启动新事务。
RollbackTrans ? 取消当前事务中所作的任何更改并结束事务。它也可能启动新事务。
Cancel 取消执行挂起的、异步 Execute 或 Open 方法调用。
Cancel (RDS) 取消当前运行的异步执行或获取。
CancelBatch 取消挂起的批更新。
CancelUpdate 取消在调用 Update 方法前对当前记录或新记录所作的任何更改。
CancelUpdate (RDS) 放弃与指定 Recordset 对象关联的所有挂起更改,从而恢复上一次调用 Refresh 方法之后的值。
Clear 删除集合中的所有对象。
Clone 创建与现有 Recordset 对象相同的复制 Recordset 对象。可选择指定该副本为只读。
Close 关闭打开的对象及任何相关对象。
CompareBookmarks 比较两个书签并返回它们相差值的说明。
ConvertToString 将 Recordset 转换为代表记录集数据的 MIME 字符串。
CreateObject (RDS) 创建目标业务对象的代理并返回指向它的指针。
CreateParameter 使用指定属性创建新的 Parameter 对象。
CreateRecordset (RDS) 创建未连接的空 Recordset。
Delete (ADO Parameters Collection) 从 Parameters 集合中删除对象。
Delete (ADO Fields Collection) 从 Fields 集合删除对象。
Delete (ADO Recordset) 删除当前记录或记录组。
Execute (ADO Command) 执行在 CommandText 属性中指定的查询、SQL 语句或存储过程。
Execute (ADO Connection) 执行指定的查询、SQL 语句、存储过程或特定提供者的文本等内容。
Find 搜索 Recordset 中满足指定标准的记录。
GetChunk 返回大型文本或二进制数据 Field 对象的全部或部分内容。
GetRows 将 Recordset 对象的多个记录恢复到数组中。
GetString 将 Recordset 按字符串返回。
Item 根据名称或序号返回集合的特定成员。
Move 移动 Recordset 对象中当前记录的位置。
MoveFirst、MoveLast、MoveNext 和 MovePrevious 移动到指定 Recordset 对象中的第一个、最后一个、下一个或前一个记录并使该记录成为当前记录。
MoveFirst、MoveLast、MoveNext、MovePrevious (RDS) 移动到显示的 Recordset 中的第一个、最后一个、下一个或前一个记录。
NextRecordset 清除当前 Recordset 对象并通过提前命令序列返回下一个记录集。
Open (ADO Connection) 打开到数据源的连接。
Open (ADO Recordset) 打开游标。
OpenSchema 从提供者获取数据库模式信息。
Query (RDS) 使用有效的 SQL 查询字符串返回 Recordset。
Refresh 更新集合中的对象以便反映来自提供者的可用对象以及特定于提供者的对象。
Refresh (RDS) 对在 Connect 属性中指定的 ODBC 数据源进行再查询并更新查询结果。
Requery 通过重新执行对象所基于的查询,更新 Recordset 对象中的数据。
Reset (RDS) 根据指定的排序和筛选属性对客户端 Recordset 执行排序或筛选操作。
Resync 从基本数据库刷新当前 Recordset 对象中的数据。
Save (ADO Recordset) 将 Recordset 保存(持久)在文件中。
Seek 搜索 Recordset 的索引以便快速定位与指定值相匹配的行,并将当前行的位置更改为该行。
SubmitChanges (RDS) 将本地缓存的可更新 Recordset 的挂起更改提交到在 Connect 属性中指定的 ODBC 数据源中。
Supports 确定指定的 Recordset 对象是否支持特定类型的功能。
Update 保存对 Recordset 对象的当前记录所做的所有更改。
UpdateBatch 将所有挂起的批更新写入磁盘。

给你个比较有代表性的程序吧,估计能有所帮助

<%@ LANGUAGE = VBScript%>
<%
'------------------------------------------
'昨天晚上编的简单数据库(ACECESS,有id、password、
'register3个字段)操作,仅支持单表单条件操作,
'不过好像没什么用:)
'col:待查询字段名(必添)
'colvalue:待更新、添加字段的值(没有用""代替)
'table:表名(必添)
'keyid:查询条件的字段名(没有用""代替,可选)
'keyvalue:查询条件字段的值(没有用""代替,可选)
'col和colvalue必须成对出现
'keyid和keyvalue必须同时出现
'------------------------------------------
%>
<%
Function DB_execute(col,colvalue,table,keyid,keyvalue,bz)
Dim ConnStr,conn,rs,sql
ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("data/game.mdb")
Set conn = Server.CreateObject("ADODB.Connection")
conn.open ConnStr
set rs=server.createobject("adodb.recordset")
for i=0 to UBound(col) step 1
if UBound(col)<>i then
sql=sql&col(i)&", "
else
sql=sql&col(i)&" "
end if
next
if keyid <> "" then
sql="select "&sql&"from "&table&" where "&keyid&"='"&keyvalue&"'"
else
sql="select "&sql&"from "&table
end if
select case bz
case "o"
rs.open sql,conn,1,1
dim rsnum
rsnum=rs.RecordCount
if rsnum > 0 then
dim rsArray()
redim rsArray(rsnum,UBound(col))
for i=0 to UBound(col) step 1
rsArray(0,i)=col(i)
next
for i=1 to rsnum step 1
for j=0 to UBound(col) step 1
rsArray(i,j)=rs(col(j))
next
next
DB_execute=rsArray
else
DB_execute="没有查到任何数据"
end if
rs.close
set rs=nothing
case "u"
rs.open sql,conn,3,3
if rs.RecordCount > 0 then
for i=0 to UBound(col) step 1
rs(col(i))=colvalue(i)
next
rs.update
else
DB_execute="没有查到这条数据"
end if
rs.close
set rs=nothing
case "i"
rs.open sql,conn,3,3
rs.addnew
for i=0 to UBound(col) step 1
rs(col(i))=colvalue(i)
next
rs.update
DB_execute="添加数据成功"
rs.close
set rs=nothing
case "d"
sql="delete from "&table&" where "&keyid&"='"&keyvalue&"'"
conn.Execute sql
DB_execute="删除数据成功"
end select
conn.close
set conn=nothing
end Function
%>
<%
'返回记录集
'temp=DB_execute(Array("id","password","register"),"","users","","","o")
'response.write temp(1,2)

'添加一条记录
'temp=DB_execute(Array("id","password","register"),Array("test","test","0"),"users","","","i")
'response.write temp

'更新一条记录
'temp=DB_execute(Array("id","password","register"),Array("new","new","1"),"users","id","test","u")
'response.write temp

'删除一条记录
'temp=DB_execute(Array("id","password","register"),"","users","id","new1","d")
'response.write temp
%>

加载全部内容

相关教程
猜你喜欢
用户评论