从VB.NET调用存储过程没有错误,但数据库

时间:2017-02-23 17:53:31

标签: mysql sql-server vb.net stored-procedures adodb

使用ADODB库(Microsoft ActiveX Data Objects 6.1库)从VB.NET调用存储过程时遇到一个小问题。

我有以下存储过程(从MySQL复制):

USE [DAB_Eindopdracht_DAB-TH]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[spAlterTypeVermogen] 

@strModel as varchar(30),
@strType as varchar(30),
@intVermogen as int
AS
BEGIN
SET NOCOUNT ON;

DECLARE @inttblTypeID int
DECLARE @inttblModelID int
DECLARE @inttblModelTypeID int
SET @inttblTypeID = (SELECT ID FROM tblType WHERE strNaam = @strType)
SET @inttblModelID = (SELECT ID FROM tblModel WHERE strNaam = @strModel)
SET @inttblModelTypeID = (SELECT ID FROM tblModelType WHERE typeID = @inttblTypeID AND modelID = @inttblModelID)

-- Update QUERY
UPDATE tblModelType
SET intVermogen = @intVermogen
WHERE ID = @inttblModelTypeID
END

然后在我的VB代码中,我使用以下代码调用此存储过程:

Public Sub changeTypeVermogen(ByVal intVermogen As Int16, ByVal strType As String, ByVal strModel As String)
    Dim cmdData As New ADODB.Command

    cmdData.CommandText = "spAlterTypeVermogen"
    cmdData.CommandType = ADODB.CommandTypeEnum.adCmdStoredProc
    cmdData.Parameters.Append(cmdData.CreateParameter("strModel", ADODB.DataTypeEnum.adVarChar, ADODB.ParameterDirectionEnum.adParamInput, 30))
    cmdData.Parameters.Append(cmdData.CreateParameter("strType", ADODB.DataTypeEnum.adVarChar, ADODB.ParameterDirectionEnum.adParamInput, 30))
    cmdData.Parameters.Append(cmdData.CreateParameter("intVermogen", ADODB.DataTypeEnum.adInteger, ADODB.ParameterDirectionEnum.adParamInput))

    connOpen()

    cmdData.ActiveConnection = cnnDatabase
    cmdData.Parameters(0).Value = strModel
    cmdData.Parameters(1).Value = strType
    cmdData.Parameters(2).Value = intVermogen
    cmdData.Execute()

    connClose()
end sub

现在我的问题是,当我从MySQL运行这个存储过程时,它工作得非常好,它完全符合我的要求。

但是当我从VB应用程序调用此过程时,没有任何反应...... 它贯穿我的方法,根本不会产生任何错误,但它也不会改变我的数据库中的任何数据。 我检查了我的变量的值,它们在实际的数据库中....这意味着它应该能够完全完成查询。

有没有人可以解释我为什么没有发生? (并没有出现错误)。 难道我做错了什么?我错过了什么吗? 提前谢谢!

0 个答案:

没有答案