我发现在我的项目中命名参数的顺序是有意义的。
我称这个过程为
CREATE PROCEDURE `test`.`TestProc` (
in myText varchar (5),
in myText2 varchar (100)
)
BEGIN
END
如果我添加这样的参数:
command.CommandText = "testProc";
command.CommandType = System.Data.CommandType.StoredProcedure;
command.Parameters.AddWithValue("myText2", "aaaaaaaaaaaaaaaaa");
command.Parameters.AddWithValue("myText", "bbbb");
我收到“数据太长”异常。我也无法在测试项目中重现这一点。
有什么想法吗?
我找到了原因。看起来像 MySql .Nat 数据提供程序中的错误。
要重现该错误,您需要不在 root 用户下调用它。
结论:MySql.Data版本6.2.3.0。
如果您使用非根数据库帐户调用过程,则命名参数的顺序有意义
参数的名称不必与列匹配,但必须与占位符匹配:
INSERT INTO testproc (mytext, mytext2) VALUES (?mytext, ?mytext2)
我想如果你使用未命名的参数:
INSERT INTO testproc (mytext, mytext2) VALUES (?, ?)
顺序很重要。
我总是使用前一个选项,但是:
command.Parameters.Add("?mytext2", "aaaaaaaaaaaaaaaaa")
command.Parameters.Add("?mytext", "bbbb")
不知道这对 AddWithValue() 是否有任何影响
更新:刚刚注意到您的参数缺少一个问号。这就是问题所在。为您的查询和参数添加问号。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)