【发布时间】:2015-02-14 17:04:51
【问题描述】:
我正在使用 Javascript 在 ASP 中编写脚本,并且我需要遍历不确定数量的记录和记录集。循环浏览各个记录没有问题。当我需要移动记录集时,就会出现问题。只要有另一个记录集,它就可以正常工作。如果没有更多的记录集,代码就会死掉,并且似乎没有办法检查或捕获错误。我已经完成了 try/catch 块和我能想到的每个测试,但是代码只是中断并给出了内部服务器错误。我希望我缺少一个 isNextRecordset() 或 isLastRecordset() 函数。
我当前的代码
do{
//Some Code Stuff
record = record.NextRecordset(); //Dies here when no more recordsets
}while(!!record);
使用普通的 VBScript,他们展示了这种方法的工作原理(虽然从未尝试过)。但我不想使用 VBScript。
VBScript 代码
Do Until record = Nothing
set record = record.NextRecordset
Loop
编辑: 我相信我通过添加循环使事情变得混乱,如果您删除循环并在没有下一个记录集时调用一次 nextrecordset 它仍然会死掉。不需要对 null 进行测试。我的代码没有通过 null 测试。
//Get A recordset
//There is only one recordset
record = cmd.Execute();
//Do some stuff with the record set
//Call NextRecordset
//even though there are no more
record = record.NextRecordset(); //<--- Still Dies right here
编辑:
只是想指出我遇到的隐藏问题。下面的答案是正确的,但不是我的实际问题。我看到的一些教程显示了如下结构。关闭记录和连接。但是当record 到达底部时,它已经是null,这是一个问题。这很容易通过显示正确的错误消息来解决,而我没有。我自己的愚蠢,但可能会帮助别人。
try{
//Do Some Stuff
record = record.NextRecordset();
//Test Record set
}catch(e){
}finally{
record.Close(); <---- This is where it was actually having a problem.
record = null;
myconn.Close();
myconn = null;
}
【问题讨论】:
-
你试过检查
null吗?}while(record != null); -
它并没有那么远。当我调用 record.NextRecordset() 时,一切都会中断,(当它是最后一个记录集时)
标签: javascript asp-classic ado recordset