【问题标题】:Asp-Classic ADODB Recordset missing RecordsAsp-Classic ADODB 记录集缺少记录
【发布时间】:2013-06-10 03:51:08
【问题描述】:

我网站中最简单的组件之一刚刚停止工作,代码没有任何更改。

'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 记录集丢失记录是否有任何已知的错误?请记住,代码完全相同并且“无错误”工作。

【问题讨论】:

  • 查询结尾处connection, 1, 3 的目的是什么?
  • 这不再是查询,而是连接和游标的定义。你也可以这样做: rs.Connection = connection rs.Cursors = 1,3 rs.open(query)
  • 如果您的代码使用不同的数据库,那么错误更有可能出现在数据库中而不是 asp

标签: database asp-classic recordset


【解决方案1】:

一些建议。

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

检查您是否没有破坏 RS。

另外,“connection, 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

这将更容易判断记录集是否为空。

【讨论】:

  • 感谢您的建议。我正在休假一个月,所以我的同事正在尝试它,并发现导致错误的环境存在微小差异。只是因为您想知道,connection, 1, 3 是我们的“编码标准”(我们没有但 nvm)。最后,在表内使用的一些丢失的文件夹中发现了错误(如果它们在那里)。我的同事解决了这个问题,所以我会接受你的回答
猜你喜欢
  • 2020-10-24
  • 2014-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-02
  • 2014-01-26
  • 1970-01-01
相关资源
最近更新 更多