rs.open sql,conn,a,b中的a,b是什么意思
rs.opensql,conn,a,b中的a,b是什么意思
表示的是访问权限和锁定方式
rs.opensql,conn,1,1本文中大量使用的方式。
无法看到其他用户添加的新数据,但被其他用户删除的数据将变为不可访问,同时可以看到其他用户所作的修改。
rs.opensql,conn,1,3静态打开方式。
在你使用数据是其他用户无法访问该数据
rs.opensql,conn,1,2动态的数据库打开方式,其他用户所进行的修改、删除和新建等工作都会立即在数据对象中体现出来,并且支持全部类型的数据移动方式,除非提供者不支持,否则也可以进行书签操作
rs.opensql,conn,-1不指定打开方式
rs.opensql,conn,a,b
参数a为设定游标的类型,其取值为:
0仅向前游标,只能向前浏览记录,不支持分页、recordset、bookmark
1键集游标,其他用户对记录说做的修改将反映到记录集中,但其他用户增加或删除记录不会反映到记录
集中。
支持分页、recordset、bookmark
2动态游标功能最强,但耗资源也最多。
用户对记录说做的修改,增加或删除记录都将反映到记录集中。
支持全功能浏览。
3静态游标,只是数据的一个快照,用户对记录说做的修改,增加或删除记录都不会反映到记录集中。
支
持向前或向后移动
参数b为记录集的锁定类型,其取值为:
1锁定类型,默认的,只读,不能作任何修改
2当编辑时立即锁定记录,最安全的方式
3只有在调用update方法时才锁定记录集,而在此前的其他操作仍可对当前记录进行更改、插入和删除等
4当编辑时记录不会被锁定,而更改、插入和删除是在批处理方式下完成的
打开数据记录集方法其实不止一种,但是我们用的最多的就是
rs.opensql,1,1的方法,可是后面的数字参数很多人不解其意,下面我们来介绍一下。
其实open方法后面有多个参数
mandtype
比如rs.opensql,1,1
也可以写成
rs.cursortype=1
rs.locktype=1
rs.opensql
其中cursortype代表从一个表或者一个sql查询结果返回的记录。
这个参数有四个值分别是:
adopenforwardonly表示只允许在记录集内的记录间往前移动。
这个是缺省值。
adopenkeyset反映由其它用户所做的对记录的改变或者删除动作,但并不反映由其它用户做作的添加新
记录的动作。
adopendynamic反映由其它用户所做的对记录的改变或者删除动作,包括添加的新记录
adopenstatic不反映其它用户对记录所做的修改,添加,删除动作。
这四个值vbscript预定义位
adopenforwardonly=0
adopenkeyset=1
adopendynamic=2
adopenstatic=3
locktype表示当打开记录集时,数据提供者用于锁定数据库的类型:
adlockreadonly数据不能改变,这是缺省值!
adlockpessimistic数据提供者在开始编辑数据的时候锁定记录
adlockoptimistic仅当调用update方法时,数据提供者锁定记录
adlockbatchoptimistic用于批处理修改
他们的常量值定义分别是:
adlockreadonly=1
adlockpessimistic=2
adlockoptimistic=3
adlockbatchoptimistic=4
commandtype这个参数由于很少用到,这里就不讲了。
你只要记住读方式打开用
rs.opensql,conn,1,1
而读写方式打开用
rs.opensql,conn,1,3
前面的1是游标移动方式,只能向下移动
我写了一个两个数据库转换的代码,我想转完一行,就显示``第N行转换成功``
但是我写的这段代码不会出现这种情况,只能转到完成后才会都显示出来,请问要怎么改,才能转一行,显示一行呢
要把数据库A转到数据库B
i=0
setrs1=Server.CreateObject(``adodb.recordset``)
rs1.open``selectjidfrombookj``,conn1,1,3
dowhilenotrs1.eof
------------------------------------上面这句是读出数据库A
setrs=Server.CreateObject(``adodb.recordset``)
rs.open``select*frombookjwherejid=``&rs1(``jid``),conn,1,3
------------------------------------上面这段是数据库B
ifrs.eofthen
rs.addnew
rs(``jid``)=rs1(``jid``)
rs.update
endif
i=i+1
response.writer``第``&i&``条记录已转换完成``
rs1.movenext
loop
图上的只有全部转换后才会显示i是变量
实添加和更新也没有什么区别,只不过在添加的时候要用到rs.AddNew,
rs.open``select*fromadminwherepassword=```&request.form(``password``)&`````,conn,3,2
ifnot(rs.eoforerr)then
rs.AddNew
rs(``bodymax``)=trim(request.form(``bodymax``))
rs(``pagesize``)=trim(request.form(``pagesize``))
rs.update
更新就把rs.AddNew去掉就行了
3,2是打开数据库的方式
RecordSet对象打开数据表的语法是这样的:
RS.Open数据来源,数据链路,指针类型,锁定方式
其中的参数意义如下:
数据来源:指定数据表的名称
数据链路:指定一个已经申明的Connection对象,当使用RecordSet对象的Open方法建立一个连接的时候,必须使用Connection对象保证连接的安全。
指针类型:设置打开RecordSet的指针类型,其参数值可以设置为0至3,各个值的意义如下:
------------------------------------------------------------------------
①adOpenForwardOnly/0:打开一个只能向前移动的指针,这是默认值;
②adOpenKeyset/1:表示打开一个Keysettype记录指针,使用该指针无法读取其他用户添加或删除的数据,但是更新的数据会立即显示支持双向指针。
③adOpenDynamic/2:打开一个动态指针,使用该指针可以如实反映其他用户操作数据库的情况。
④adOpenStatic/3:表示打开一个静态指针,指针无法实时反映其他用户操作数据库的情况,通常用于搜索或添加记录时使用,支持双向指针。
锁定方式:可以设置所打开RecordSet的锁定状态,其参数值可以设置为1到4,各个值的意义如下:
①adLockReadOnly/1:将RecordSet打开为只读状态,此为默认值。
②adLockPessimistic/2:当用户对RecordSet中某条记录作编辑时便锁定记录。
③adLockOptimistic/3:当用户调用Update函数对RecordSet作更新时才锁定记录。
④adLockBatchOptimistic/4:用户做批次更新时才锁定记录。
rs.movenext将记录指针从当前的位置向下移一行
rs.moveprevious将记录指针从当前的位置向上移一行
rs.movefirst将记录指针移到数据表第一行
rs.movelast将记录指针移到数据表最后一行
rs.absoluteposition=N将记录指针移到数据表第N行
rs.absolutepage=N将记录指针移到第N页的第一行
rs.pagesize=N设置每页为N条记录
rs.pagecount根据pagesize的设置返回总页数
rs.recordcount返回记录总数
rs.bof返回记录指针是否超出数据表首端,true表示是,false为否
rs.eof返回记录指针是否超出数据表末端,true表示是,false为否
rs.delete删除当前记录,但记录指针不会向下移动
rs.addnew添加记录到数据表末端
rs.update更新数据表记录
===========================================================
rs.opensql,conn,a,b
参数a为设定游标的类型,其取值为:
0仅向前游标,只能向前浏览记录,不支持分页、recordset、bookmark
1键集游标,其他用户对记录说做的修改将反映到记录集中,但其他用户增加或删除记录不会反映到记录
集中。
支持分页、recordset、bookmark
2动态游标功能最强,但耗资源也最多。
用户对记录说做的修改,增加或删除记录都将反映到记录集中。
支持全功能浏览。
3静态游标,只是数据的一个快照,用户对记录说做的修改,增加或删除记录都不会反映到记录集中。
支
持向前或向后移动
参数b为记录集的锁定类型,其取值为:
1锁定类型,默认的,只读,不能作任何修改
2当编辑时立即锁定记录,最安全的方式
3只有在调用update方法时才锁定记录集,而在此前的其他操作仍可对当前记录进行更改、插入和删除等
4当编辑时记录不会被锁定,而更改、插入和删除是在批处理方式下完成的
打开数据记录集方法其实不止一种,但是我们用的最多的就是
rs.opensql,1,1的方法,可是后面的数字参数很多人不解其意,下面我们来介绍一下。
其实open方法后面有多个参数
mandtype
比如rs.opensql,1,1
也可以写成
rs.cursortype=1
rs.locktype=1
rs.opensql
其中cursortype代表从一个表或者一个sql查询结果返回的记录。
这个参数有四个值分别是:
adopenforwardonly表示只允许在记录集内的记录间往前移动。
这个是缺省值。
adopenkeyset反映由其它用户所做的对记录的改变或者删除动作,但并不反映由其它用户做作的添加新
记录的动作。
adopendynamic反映由其它用户所做的对记录的改变或者删除动作,包括添加的新记录
adopenstatic不反映其它用户对记录所做的修改,添加,删除动作。
这四个值vbscript预定义位
adopenforwardonly=0
adopenkeyset=1
adopendynamic=2
adopenstatic=3
locktype表示当打开记录集时,数据提供者用于锁定数据库的类型:
adlockreadonly数据不能改变,这是缺省值!
adlockpessimistic数据提供者在开始编辑数据的时候锁定记录
adlockoptimistic仅当调用update方法时,数据提供者锁定记录
adlockbatchoptimistic用于批处理修改
他们的常量值定义分别是:
adlockreadonly=1
adlockpessimistic=2
adlockoptimistic=3
adlockbatchoptimistic=4
commandtype这个参数由于很少用到,这里就不讲了。
求解 <a href="?">第一页</a>什么意思?
第一页的意思,就是转到第一页的链接。
之所以用"?",实际上就是pageno没有赋值。
这个程序,pageno在没有赋值的情况下,默认就是显示第一页。
语句中已经交待清楚了:
If getPageNo = "" Then
pageNo = 1
AbsolutePage分页的原理
使用 AbsolutePage 属性可识别当前记录所在的页码。
使用 PageSize 属性可将 Recordset 对象逻辑划分为一系列的页,每页的记录数等于 PageSize(最后页除外,该页记录数较少)。
提供者必须支持该属性的相应功能才能使用该属性。
与 AbsolutePosition 属性一样,AbsolutePage 从 1 开始并在当前记录为 Recordset 中的第一个记录时等于 1。
设置该属性可移动到特定页的第一个记录。
从 PageCount 属性中可获得总页数。
数据库中recordset 都有什么属性,
zzzzRecordSet对象的属性可分为以下4种类型。
zzzz1)方式属性:包括ActiveConnection属性和Source属性。
zzzz2)行为属性:包括CursorType属性、LockType属性、Filter属性、CacheSize属性和MaxRecords属性。
zzzz3)记录指针移动属性:包括BOF和EOF属性、RecordCount属性、BookMar属性、AbsikytePosition属性、PageSize属性、AbsolutePage属性和PageCount属性。
zzzz4)数据维护属性:包括EditMode属性和Status属性等。
1.方式属性
zzzz(1) ActiveConnection属性
zzzz此属性用于指定链接字符串或Connection对象的名称,方便RecordSet对象完成数据库链接有前置动作。
zzzz(2) Source属性
zzzz此属性用于设置或返回一个字符串,指定要检索数据库服务器。
包含存储进程名、表名、SQL语句或在打开时用于为RecordSet提供记录集合的开放Command对象。
2.行为属性
zzzz(1)CursorType属性:此属性定义了指针的类型,不同的指针类型决定了对数据库所能做的操作,它有4种可取值,如表7-9所示。
zzzz(2)LockType属性:此属性决定了是否可以更新数据以及RecordSet的更新是否可以批量进行。
LockType属性有4种可取值,如表7-10所示。
zzzz(3)Filter属性:此属性用于过滤由数据库服务器端所返回的数据,Filter属性设定值如表7-11所示。
zzzz(4)CacheSize属性:此属性指定保存在高速缓存中RecordSet记录的数目,也就是客户端每次由数据库服务器端取回数据记录的数目。
对于只能向前移动的记录,默认值为1。
zzzz(5)MaxRecords属性:该属性设定返回给RecordSet记录的最大数目,默认值为0,表明将所有记录都加入到RecordSet中,打开RecordSet对象后,此属性为只读。
3.记录指针移动的属性
zzzz(1)BOF和EOF属性:这两个属性是用来判断指针是否在RecordSet的首记录之前或尾记录之后。
如果当记录位于RecordSet的首记录之前,则BOF返回True.如果当前记录是位于RecordSet的尾记录之后,则EOF返回True.如果BOF 和EOF都为True,则说明RecordSet中没有记录。
zzzz(2)RecordCount属性:该属性用于返回RecordSet中的记录数。
zzzz(3)BookMark属性:当创建一个允许使用BookMark属性的RecordSet时,给每一个记录都标上独一无二的书签。
利用此属性可以返回标记书签的位置。
zzzz(4)AbsolutePosition属性:此属性可以用于设置RecordSet当前记录的顺序位置。
zzzz(5)PageSize属性:当记录集合返回到RecordSet中时,集合就会被划分成任意大小的页。
利用此属性可以页记录集合。
zzzz(6)AbsolutePage属性:此属性指定了指针的位置,通过改变它的值来通知ADO移动指定页面的开始位置。
zzzz(7)PageCount属性:此属性可用来返回RecordSet中的页数。
如果RecordSet最后一页未满,其中的记录就少于PageCount值,则PageCount属性值应由下面的公式设定。
zzzzPageCount=(RecordCount+PageSize-1)/PageSize
4.数据维护属性
zzzz(1)EditMode属性:该属性返回一个表明当前记录编辑状态的值。
此属性的返回值有3种如表7-12所示。
zzzz(2)Status属性:此属性可以在实施一次批量更新后,查询RecordSet的状态。
该属性常用于多用户链接管理。
其返回值如表7-13所示。
请问,在asp中用rs结果集的absolutepage 进行分页,会不会影响性能?
看你用什么数据库,如果是SQLSERVER,可以用程储过程分页
但不管最后用什么,我们经过测试,将结果集GetRows到数组里,再在数组里读取,速度快的多
以下是例子
Rs.open "Select 字段 From GuestBook order by id desc",Conn, 1, 1
If Not Rs.Eof Then
Rs.PageSize = 20
Rs.AbsolutePage = 12
Rscount=Rs.RecordCount
ArticleArr = Rs.GetRows(PageSize)
Rs.Close:Set Rs=Nothing
END IF
for I=0 to Ubound(ArticleArr,2)
RESPONSE.WRITE ArticleArr(1,I)
NEXT