从MsgBox中的存储过程中检索返回值

时间:2015-01-05 21:03:59

标签: sql-server vb.net stored-procedures ado.net

我在Visual Studio中连接到SQL Server,我想执行一个Store Procedure并在消息框中检索返回值,但我不知道如何。

我得到这个:

enter image description here

SqlConnection运行正常,显然问题出现在最后几行:

Dim myConnNAC As New SqlConnection("Initial Catalog=Northwind;Data Source=SERVERNAC\KANTAR;Initial Catalog=NACDroid;Persist Security Info=True;User ID=xxxxxx;Password=xxxxxx;")

Dim cmd As New SqlCommand
cmd.CommandText = "NACDRoid_actualiza_domicilios"
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = myConnNAC

myConnNAC.Open()

Dim returnValue As Object
returnValue = cmd.ExecuteReader.ToString()

MsgBox(returnValue)

当我执行存储过程时直接在SQL Server中显示0作为返回值如果没有问题,那就是我在MsgBox中需要的东西。

enter image description here

2 个答案:

答案 0 :(得分:3)

cmd.ExecuteReader.ToString

这是做什么的?好吧,声明的前半部分已经执行

cmd.ExecuteReader

返回此类型的实例

derp

(阅读图片中的文字)然后在这个实例上调用ToStringToString的默认实现返回类型名称。如," System.Data.SqlClient.SqlDataReader"

您需要使用阅读器从数据库中获取数据。 Here's the MSDN docs for this simple operation.

通常,如果使用ADO从数据库中检索单个值,您将要在命令对象上查找名为ExecuteScalar的漂亮小方法。

答案 1 :(得分:1)

如果您只想检索单个值,请使用

SqlCommand.ExecuteScalar Method

而不是ExecuteReader