【问题标题】:Using a stringbuilder as a parameter to a stored procedure and returning a dataset使用 stringbuilder 作为存储过程的参数并返回数据集
【发布时间】:2012-11-19 19:29:09
【问题描述】:

我有几个问题与将多个值传递给存储过程的参数之一以及返回转换为数据集以便将其绑定到 MS ReportViewer 的结果有关。

我收到的错误是阅读器已关闭。

我的相关代码sn-p是:

    Dim _listOfSites As New StringBuilder()
    Dim _resultDataSet As DataSet = New DataSet

    Using _conn as New SqlConnection()

     _conn.ConnectionString = _connString

       Try

          For i as Integer = 0 To _sites.Count - 1
            _listOfSites.Append(_sites(i))
              If _sites.Count > 1 Then
                _listOfSites.Append(",")
              End If
          Next

          _conn.Open()

          Dim _sqlCommand as SqlCommand = New SqlCommand("GetResults", _conn)

          _sqlCommand.Parameters.Add("@Sites", SqlDbType.Varchar).Value = _listOfSites
          _sqlCommand.Parameters.Add("@Date", SqlDbType.Date).Value = _date

         Dim _reader as SqlDataReader = _sqlCommand.ExecuteReader

         While _reader.Read
               _resultDataSet.Load(_reader, LoadOption.PreserveChanges, New String() {"RegionalResults"})
         End While
         _reader.Close()

有人可以帮忙吗?

谢谢

【问题讨论】:

    标签: asp.net dataset sqldatareader


    【解决方案1】:

    看起来您不应该调用 _reader.Read,因为 _resultDataSet.Load 会自行执行,它可能会关闭 SqlDataReader。所以不是

     Dim _reader as SqlDataReader = _sqlCommand.ExecuteReader
    
     While _reader.Read
               _resultDataSet.Load(_reader, LoadOption.PreserveChanges, New String() {"RegionalResults"})
     End While
     _reader.Close()
    

    随便写

     Using  _reader as SqlDataReader = _sqlCommand.ExecuteReader
          _resultDataSet.Load(_reader, LoadOption.PreserveChanges, New String() {"RegionalResults"})
     End Using
    

    希望有帮助

    【讨论】:

    • 谢谢。我会试一试。但是,你知道如何将一个可以包含一个或多个值的字符串构建器传递给存储过程以执行查询
    • 这是不可能的,只有 sql db 类型的参数可以传递给存储过程(clr 过程也不允许 - msdn.microsoft.com/en-us/library/ms131094.aspx)。您可以将其设为字符串并传递给 sp。
    猜你喜欢
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 2016-08-19
    • 2020-04-15
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多