带有Using Statement的Sqldatareader会返回一个Output参数吗?

时间:2011-08-21 18:23:13

标签: .net vb.net parameters sqldatareader using-statement

以下是一个较大函数的简单代码片段作为示例。

Using conn as New SqlConnection("conn string")
    Using find as new SqlCommand("ExampleProc",conn)
        Dim rParam as new SqlParameter("@RESULT",SqlDbType.Int)
        rParam.Direction = ParameterDirection.Output
        find.Pareameters.Add(rParam)

        Using f as SqlDataReader = find.ExecuteReader
              'Do stuff with datareader
        End Using

        updateResult.Success = Convert.ToBoolean(find.Parameters("@RESULT").Value)
    End Using
  End Using

我知道在SqlDataReader关闭后会返回Output参数。据我所知,Using语句将在SqlDataReader上调用.Dispose,那么基本上会消除Output参数吗?如果是这样,调用SqlDataReader的最佳方法是什么,该方法还包含关闭并正确处理所有内容的Output参数?我在搜索中找不到任何具体的信息或示例。谢谢!


让我根据我读过的内容添加一下,在SqlDataReader上调用.Close后,只能使用SqlDataReader访问Output参数。

2 个答案:

答案 0 :(得分:1)

您实际上只需要输出参数中返回的

您可以将值复制到Using块之外声明的变量并返回该值,或者只要您有权访问它就直接返回该值。

答案 1 :(得分:0)

不确定我理解你想要达到的目标,但这似乎是一种更好的方法

    updateResult.Success = False

    Using f as SqlDataReader = find.ExecuteReader
          'Do stuff with datareader
          updateResult.Success = Convert.ToBoolean(find.Parameters("@RESULT").Value)
    End Using

您在Using语句中读取结果,如果有任何失败,则将其预设为false ...