无法关闭asp& sql server中的记录集

时间:2010-12-20 16:53:56

标签: sql-server asp-classic

我一直收到这个错误:

  

ADODB.Recordset错误'800a0e78'   当时不允许操作   对象已关闭。

我正在使用的Asp代码:

    rs.open "usp_reply_insert 132 ,N'abc',N'teeeeeeext',0,N'gest','x@x.com' ",conn
    rs.close

问题在于rs.close命令

这是存储过程

    ALTER  PROCEDURE [dbo].[usp_reply_insert]
    @maamar_id int,
    @subject nvarchar(200),
    @text nvarchar(max),
    @userid int,
    @name nvarchar(50),
    @email nvarchar(150)
    AS
    begin

    set nocount on

INSERT INTO dbo.tbl_reply
      (maamar_id,
      userid,
      reply_subject,
      reply_text,
      reply_name,
      reply_email,
      reply_date,
      reply_status
      )
VALUES
      (
      @maamar_id,
      @userid,
      @subject,
      @text,
      @name,
      @email,
      getdate(),
      0
      )



    end

如何关闭此已恢复的设置?

10倍

2 个答案:

答案 0 :(得分:4)

来自Recordset.Open method上的MSDN文档:

  

使用它不是一个好主意   Open方法的源参数   执行不执行的操作查询   返回记录,因为没有   简单的方法来判断是否通话   成功了。记录集返回   这样的查询将被关闭。

     

要   执行不返回的查询   记录,例如SQL INSERT   声明,调用Execute方法   一个Command对象或Execute方法   取而代之的是Connection对象。

简而言之,您的rs.open调用不会导致打开记录集,因此rs.close语句不起作用,应该删除。更好的是,遵循引用文本中给出的示例,因为不建议使用ADODB.Recordset来调用INSERT操作。

答案 1 :(得分:0)

您的recordset已关闭,这就是为什么rs.close方法不起作用的原因。 您可以使用下面的简单代码来检查记录集是打开还是关闭(如果state=1它已打开,否则state=0它已关闭)

Dim state As Long
state = rs.state
If state <> 0 Then
rs.close
set rs = Nothing
End If