我用ASP编写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;
}
答案 0 :(得分:1)
正确的语法是:
while (record) {
//Some Code Stuff
record = record.NextRecordset();
}
这样,当NextRecordset()
将返回null时,循环将停止。