【问题标题】:Retrieving a Return Value from a Stored Procedure in a MsgBox [closed]从 MsgBox 中的存储过程中检索返回值 [关闭]
【发布时间】:2015-01-05 21:03:58
【问题描述】:

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

我刚刚明白了:

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 中需要的。

【问题讨论】:

  • 改用ExecuteScalar()
  • 为什么将 ReturnValue 调暗为对象?在您的 SQL 代码中,它是一个整数。
  • 哎呀,谢谢大家,我做了您的更改,现在可以使用了! Dim returnValue As IntegerreturnValue = cmd.ExecuteScalar 非常感谢。
  • 你能显示存储过程的代码吗?很确定零不是上面的@return_value。您能否也测试非零回报?
  • 当有人给你一个解决方案(你在下面有两个)你应该选择一个作为正确的。寻求帮助,得到帮助,然后编辑您的问题以添加“已解决”或“解决方案:按照这些人所说的做”有点粗鲁。

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


【解决方案1】:
cmd.ExecuteReader.ToString

这是做什么的?好了,语句的前半部分就执行完了

cmd.ExecuteReader

返回此类型的实例

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

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

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

【讨论】:

    【解决方案2】:

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

    SqlCommand.ExecuteScalar Method

    而不是ExecuteReader

    【讨论】:

      猜你喜欢
      • 2012-10-06
      • 1970-01-01
      • 2010-09-10
      • 2019-01-16
      • 2012-08-03
      • 1970-01-01
      • 1970-01-01
      • 2013-01-22
      相关资源
      最近更新 更多