Asp-Classic ADODB Recordset缺少记录

时间:2013-05-14 12:25:16

标签: database asp-classic recordset

我网站上最简单的组件之一就是在一天之内停止工作而没有对代码进行任何更改。

'Connection Declaration as connection
Set rs = Server.CreateObject ("ADODB.Recordset")
rs.Open "SELECT * FROM tablename ORDER BY id DESC", connection, 1, 3
while not rs.EOF
  'writing some Table from the records in DB
  'Simplified Code %>
  <tr><td><%=rs("id")%></td><td><%=rs("description")&></td></tr>
  <%
  rs.MoveNext
Wend

在我的数据库中,我已经验证了30个记录的非凡数量:(

当执行上面的代码时,我看到其中的2个

这告诉我两件事,

  

首先:表名是正确的,并且建立了与数据库的连接   第二:表生成本身是正确的

我还有一个较小的测试系统。在那里,示例数据库上完全相同的代码会产生预期的结果。

不幸的是,我没有办法“即时访问”我的主页以进行“调试”

是否有任何已知的错误ADODB记录集丢失记录?请记住,代码完全相同,并且“无错误”。

1 个答案:

答案 0 :(得分:1)

一些建议。

如果尚未使用Option Explicit - (我在你的代码中没有看到它),这将显示SQL错误,这可能会有所帮助。

检查您是否未销毁RS。

此外,“连接,1,3”表示“活动连接”,“cursortype”,“locktype”

你的cursortype是'adOpenKeySet' - 3或'adOpenStatic'更好,除非你特别想要一个KeySet?尝试以这种方式调用Open来强制默认值(奇怪的是分别为3和1!):

RS.Open "SELECT * FROM tablename ORDER BY id DESC",connection 

我也经常写这样的RS输出循环:

If Not RS.BOF Then
   ' write table tag HTML
   Do While Not RS.EOF
      ' write table row + row data
      RS.MoveNext
   Loop
   ' write end table tag HTML
Else
   ' write "RS is empty!"
End If

这样可以更容易判断记录集是否为空。