代码之家  ›  专栏  ›  技术社区  ›  Denis Palnitsky

命名参数顺序对MySql.Net数据提供程序有意义吗?

  •  1
  • Denis Palnitsky  · 技术社区  · 14 年前

    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数据提供程序中的bug。

    结论:MySql.Data版本6.2.3.0。

    3 回复  |  直到 14 年前
        1
  •  1
  •   Jürgen Steinblock    14 年前

    参数的名称不必与列匹配,但必须与占位符匹配:

    INSERT INTO testproc (mytext, mytext2) VALUES (?mytext, ?mytext2)
    

    如果使用未命名参数:

    INSERT INTO testproc (mytext, mytext2) VALUES (?, ?)
    

    顺序很重要。

    command.Parameters.Add("?mytext2", "aaaaaaaaaaaaaaaaa")
    command.Parameters.Add("?mytext", "bbbb")
    

    更新:刚刚注意到您的参数缺少问号。这就是问题所在。在查询和参数中添加问号。

        2
  •  1
  •   Denis Palnitsky    14 年前

    雷吉伯内特

    我不相信这是虫子。我 相信你的测试用户没有 列兵们要去看这个过程的主体。 请使用 命令行客户端和测试用户 帐户。执行“显示创建过程” 在你的程序上。如果你的身体是空的 bodies=false”选项并传入 参数的正确顺序。

        3
  •  0
  •   Guffa    14 年前