在asp查询SQL 2005视图的问题
|
admin
2011年3月15日 11:21
本文热度 8105
|
我在数据库创建了个视图,如下
- SQL code
SELECT t.iId, t.iEmployee, t.dtStartDate, t.dtEndDate, t.iWay, t.sConnector, t.sAddress, t.sNote, t.sMsg, t.cSecurity, t.cRemind, t.dtRemindTime, a.iSenderId, a.sReceiverId, a.cFlag FROM dbo.tblCalendar AS t LEFT OUTER JOIN dbo.tblActionSend AS a ON t.iId = a.Kindid AND a.iKind = 3
创建后在数据库打开能正确显示数据 于是拿到asp页面写显示代码,如下
- HTML code
<!-- #include file="../common/DbConnection.asp"-->
<% Response.charset="GB2312" %>
<body>
<table cellpadding="0" cellspacing="0">
<%
ConnDB()
set rs = server.createobject("adodb.recordset")
rs.open "SELECT * FROM v_calendar",conn,3,3
while not rs.eof
%>
<tr>
<td><%=rs(0)%></td>
</tr>
<%
rs.movenext
wend
%>
</table>
</body>
显示空白内容,没报错。于是改成其他视图试了下,能正确显示出内容,唯独该视图不行。 另外我也尝试了将outer联结改成inner,能正常显示,请问是甚么原因?
该文章在 2011/3/15 11:21:00 编辑过
| |
全部评论4 |
|
admin
2011年3月15日 11:21
改成下面这样既可
ConnDB()
set rs = server.createobject(adodb.recordset)
rs.open SELECT * FROM v_calendar,conn,3,1
while not rs.eof
%>
<tr>
<td><%=rs(0)%></td>
</tr>
<%
rs.movenext
wend
该评论在 2011/3/15 11:23:53 编辑过
|
|
admin
2011年3月15日 11:24
游标常量 对应常数值 游标说明
-------------------------------------------------------------
adOpenForwardOnly 0 缺省值,启动一个只能向前移动的游标,也是速度最快的游标。
adOpenKeyset 1 启动一个关键集类型的游标。
adOpenDynamic 2 启动一个动态游标。
adOpenStatic 3 启动一个静态游标。
-------------------------------------------------------------
锁定常量 对应常数值 锁定说明
--------------------------------------------------------------
adLockReadOnly 1 缺省值,Recordset对象以只读方式启动,无法运行AddNew、Update及Delete等方法
adLockPrssimistic 2 当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性。
adLockOptimistic 3 当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作。
adLockBatchOptimistic 4 当数据源正在更新时,其他用户必须将CursorLocation属性改为adUdeClientBatch才能对数据进行增删改操作。
该评论在 2011/3/15 11:24:08 编辑过
|
|
admin
2011年3月15日 12:11
RS.OPEN SQL,CONN,A,B
A:
ADOPENFORWARDONLY(=0)
只读,且当前数据记录只能向下移动
ADOPENKEYSET(=1)
只读,当前数据记录可自由移动
ADOPENDYNAMIC(=2)
可读写,当前数据记录可自由移动
ADOPENSTATIC(=3)
可读写,当前数据记录可自由移动,可看到新增记录
B:
ADLOCKREADONLY(=1)
缺省锁定类型,记录集是只读的,不能修改记录
ADLOCKPESSIMISTIC(=2)
悲观锁定,当修改记录时,数据提供者将尝试锁定记录以确保成功地编辑记录。只要编辑一开始,则立即锁住记录。
ADLOCKOPTIMISTIC(=3)
乐观锁定 ,直到用Update方法提交更新记录时才锁定记录。
ADLOCKBATCHOPTIMISTIC(=4)
批量乐观锁定,允许修改多个记录,只有调用UpdateBatch方法后才锁定记录。
当不需要改动任何记录时,应该使用只读的记录集,这样提供者不用做任何检测。对于一般的使用,乐观的锁定可能是最好的选择,因为记录只被锁定一小段时间,数据在这段时间被更新。这减少了资源的使用。
该评论在 2011/3/15 12:11:07 编辑过
|
|
tercel
2011年3月15日 12:17
rs.open sql,conn,1,1/1,3/3,2区别
Rs.Open语法如下:rs.Open Source,ActiveConnection,CursorType,LockType Source为sql语句,ActiveConnection为数据库连接,CursorType是游标,LockType是数据锁定类型.
经常开发asp但对于细致的说法,真实不太清楚,这里简单的介绍下。
一般情况下
读取数据都是用rs.open sql,conn,1,1
修改数据:rs.open sql,conn,1,3
删除数据:直接要conn.execute(delete * from new where id=1)这样的。
Rs.Open语法如下:rs.Open Source,ActiveConnection,CursorType,LockType
Source为sql语句,ActiveConnection为数据库连接,CursorType是游标,LockType是数据锁定类型.
CursorType
常量 说明
adOpenForwardOnly(值为0) (默认值)打开仅向前类型游标。
adOpenKeyset(值为1) 打开键集类型游标。
adOpenDynamic(值为2) 打开动态类型游标。
adOpenStatic(值为3) 打开静态类型游标。
LockType
常量 说明
adLockReadOnly (值为1) (默认值)只读 — 不能改变数据。
adLockPessimistic(值为2) 保守式锁定(逐个) — 提供者完成确保成功编辑记录所需的工作,通常通过在编辑时立即锁定数据源的记录来完成。
adLockOptimistic(值为3) 开放式锁定(逐个) — 提供者使用开放式锁定,只在调用 Update 方法时才锁定记录。
adLockBatchOptimistic(值为4) 开放式批更新 — 用于批更新模式(与立即更新模式相对)。
CursorType
0 仅向前游标,只能向前浏览记录,不支持分页、Recordset、BookMark
1 键集游标,其他用户对记录说做的修改将反映到记录集中,但其他用户增加或删除记录不会反映到记录集中。支持分页、Recordset、BookMark
2 动态游标功能最强,但耗资源也最多。用户对记录说做的修改,增加或删除记录都将反映到记录集中。支持全功能浏览。
3 静态游标,只是数据的一个快照,用户对记录说做的修改,增加或删除记录都不会反映到记录集中。支持向前或向后移动
LockType
LockType为记录集的锁定类型,其取值为:
1 锁定类型,默认的,只读,不能作任何修改
2 当编辑时立即锁定记录,最安全的方式
3 只有在调用Update方法时才锁定记录集,而在此前的其他操作仍可对当前记录进行更改、插入和删除等
4 当编辑时记录不会被锁定,而更改、插入和删
rs.open sql,conn,3,2
这两个是游标,具体的作用是:
RS.OPEN SQL,CONN,A,B
A:
ADOPENFORWARDONLY(=0)
只读,且当前数据记录只能向下移动
ADOPENKEYSET(=1)
只读,当前数据记录可自由移动
ADOPENDYNAMIC(=2)
可读写,当前数据记录可自由移动
ADOPENSTATIC(=3)
可读写,当前数据记录可自由移动,可看到新增记录
B:
ADLOCKREADONLY(=1)
缺省锁定类型,记录集是只读的,不能修改记录
ADLOCKPESSIMISTIC(=2)
悲观锁定,当修改记录时,数据提供者将尝试锁定记录以确保成功地编辑记录。只要编辑一开始,则立即锁住记录。
ADLOCKOPTIMISTIC(=3)
乐观锁定 ,直到用Update方法提交更新记录时才锁定记录。
ADLOCKBATCHOPTIMISTIC(=4)
批量乐观锁定,允许修改多个记录,只有调用UpdateBatch方法后才锁定记录。
当不需要改动任何记录时,应该使用只读的记录集,这样提供者不用做任何检测。
对于一般的使用,乐观的锁定可能是最好的选择,因为记录只被锁定一小段时间,
数据在这段时间被更新。这减少了资源的使用。
总结一下:
sql,conn,1,1 代表不允许更新,一般用于查询操作。
sql,conn,1,3 代表允许更新,一般用于插入,更新和删除操作。
该评论在 2011/3/15 12:17:09 编辑过
|
|
|