【问题标题】:Executing a stored procedure in vb在vb中执行存储过程
【发布时间】:2019-07-15 10:09:11
【问题描述】:

我正在使用当前代码尝试执行一个存储过程,它没有显示错误,但是该过程所做的更新没有被执行。

Public Function UpdateRouteByRegister(ByVal conexion As String, ByVal idRegister As Integer, ByVal route As String) As Boolean
    Try
        ConnectionString = conexion
        myConnection = New SqlConnection(ConnectionString)
        myDataAdapter = New SqlDataAdapter("spUpdateHistoricLoad", myConnection)
        myDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure

        myDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@idRegister", SqlDbType.Int))
        myDataAdapter.SelectCommand.Parameters("@idRegister").Value = idRegister

        myDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@route", SqlDbType.VarChar, 100))
        myDataAdapter.SelectCommand.Parameters("@route").Value = route

        myDataAdapter.SelectCommand.CommandTimeout = 0
        myDataset = New DataSet
        myDataAdapter.Fill(myDataset)
        myDataset.Dispose()
        myConnection.Close()
        Log("******* Register updated = " + idRegister.ToString + " *******")
        Return True
    Catch objException As Exception
        Log("******* Error on updating register = " + idRegister.ToString + " *******")
        Return False
    End Try
End Function

SQL 存储过程如下:

GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[spUpdateHistoricLoad]
    @idRegister INTEGER,
    @route VARCHAR(100)
AS
BEGIN
    UPDATE tOperation SET ImagenMulti = @route WHERE IDRegister = @idRegister
END

【问题讨论】:

  • 您将此问题标记为VBA,但我假设您使用的是VB.Net
  • 是的,抱歉我会改的
  • 您的帖子中定义的存储过程不返回任何记录。您是打算从存储过程中返回数据并填充数据集,还是只是尝试执行存储过程以进行必要的编辑?
  • @TimLentine,只是尝试执行编辑
  • 使用 Sql Server 的 Profiler 来查看程序的实际执行情况...可能会发现您没有发送您要发送的内容 ;-)

标签: sql vb.net stored-procedures


【解决方案1】:

我建议删除 DataAdapter 和 DataSet 对象,只使用SqlCommand

Public Function UpdateRouteByRegister(ByVal conexion As String, ByVal idRegister As Integer, ByVal route As String) As Boolean
Try
    ConnectionString = conexion
    myConnection = New SqlConnection(ConnectionString)
    myConnection.Open
    Dim cmd as SqlCommand
    cmd = New SqlCommand("spUpdateHistoricLoad", myConnection)
    cmd.Parameters.AddWithValue("@idRegister", idRegister)
    cmd.Parameters.AddWithValue("@route", route)
    cmd.CommandTimeout = 0
    cmd.ExecuteNonQuery
    myConnection.Close()
    Log("******* Register updated = " + idRegister.ToString + " *******")
    Return True
Catch objException As Exception
    Log("******* Error on updating register = " + idRegister.ToString + " *******")
        Return False
End Try
End Function

【讨论】:

  • 我将代码更改为您的建议,但它向我发送了一条错误消息,指出没有打开连接
  • @Throkar 我更新了帖子以包含 myConnection.Open
猜你喜欢
  • 1970-01-01
  • 2010-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多