以下是一个较大函数的简单代码片段作为示例。
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参数。
答案 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 ...