我正在使用旧的经典ASP网站并遇到问题。我可以查询数据库表但不查看视图。
对表的查询返回正确的行数:
Set rs = Server.CreateObject("ADODB.Recordset")
sqlQuery = "SELECT * FROM tblContent;"
rs.Open sqlQuery, conn, 1, 2
response.write "q1 cnt = " & rs.RecordCount
视图上的相同查询返回-1
:
Set rs = Server.CreateObject("ADODB.Recordset")
sqlQuery = "SELECT * FROM myView;"
rs.Open sqlQuery, conn, 1, 2
response.write "q2 cnt = " & rs.RecordCount
如果从SQL Server Management Studio运行,则两个查询都返回正确的行数,但只有一个在从.asp
网页调用时才能正常工作。这似乎同样适用于DB中的所有表格和视图(我已经测试了其中的六个)。
任何人都可以提供有关此处发生的事情的任何线索吗?
答案 0 :(得分:1)
好的,这是我的评论作为答案
这是一种解决方法,它无法解释为什么recordcount属性不能处理视图,但您可以使用SQL查询来计算行数,例如
Set rs = Server.CreateObject("ADODB.Recordset")
sqlQuery = "SELECT COUNT(*) as myrecordcount FROM myView;"
rs.Open sqlQuery, conn, 1, 2
response.write "q2 cnt = " & rs("myrecordcount")
答案 1 :(得分:-1)
您正在请求可编辑记录集,该记录集可能会在视图上失败。尝试打开默认的仅向前只读记录集
rs.Open sqlQuery, conn, adOpenForwardOnly, adLockReadOnly
或
rs.Open sqlQuery, conn, 0, 1