我在传递给执行存储过程的函数的函数中创建了一个字典。
Dim PParamDict As New Dictionary(Of String, String)
PParamDict.Add("sname", name)
PParamDict.Add("sdescription", description)
PParamDict.Add("sLoggedInID", LoggedInID)
PParamDict.Add("sCompanyID", CompanyID)
字典被传递给函数 PParamDict -> ParameterDict
Dim dbComm As New MySqlCommand(ProcedureName, PConnection)
Dim pair As KeyValuePair(Of String, String)
For Each pair In ParameterDict
dbComm.Parameters.AddWithValue(pair.Key, pair.Value)
Next
参数是从字典中添加的。
这是一个简单的存储过程,没什么特别的,一个简单的插入。
CREATE PROCEDURE `NewCollection`(
IN `sLoggedInID` INT(5),
IN `sCompanyID` INT(5),
IN `sname` VARCHAR(20),
IN `sdescription` VARCHAR(500))
BEGIN
INSERT INTO `collection`
(`userid`, `companyid`, `name`, `description`, `generated`)
VALUES
(sLoggedInID, sCompanyID, sname, sdescription, CURRENT_TIMESTAMP);
END
只要 PParamDict.Add 语句按该顺序,这将起作用。如果它们的顺序不同,它们就会在进来时通过。这是我见过的最荒谬的事情,我将这些该死的键传递给 MySqlCommand,它们是在存储过程中逐个字母定义的。我一定错过了什么,请帮忙!