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

问题描述:

我遇到一个小问题,使用ADODB库(Microsoft ActiveX Data Objects 6.1 Library)从VB.NET调用存储过程。从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应用此过程中没有任何反应...... 它贯穿于我的方法,在所有不产生任何错误,但它不会改变我的数据库的任何数据。 我检查了我的变量的值,它们在实际的数据库中....意味着它应该能够完全完成查询。

有没有人能解释我为什么没有发生? (并且没有错误出现)。 我做错了什么?我错过了什么吗? 在此先感谢!

+3

MySQL或SQL Server中的@? – DavidG

+2

这看起来像SQL服务器,但你说它是MySql。您需要首先确定您实际使用的是哪个DBMS。 –

+0

我最好的猜测是为什么没有改变是因为你没有任何符合更新语句中的条件的行。通过使用连接而不是遍布整个地方的多个变量,您可以大大简化该更新。 –

您需要在参数名

cmdData.CreateParameter("@strModel".....