【问题标题】:MySqlHelper.Execute exception (C#) - doing something wrong with parametersMySqlHelper.Execute 异常 (C#) - 参数有问题
【发布时间】:2014-10-19 01:03:40
【问题描述】:

我有一个 WPF/.Net 4.5 C# 应用程序,我正在使用 MySQL NET 连接器 6.8.3。我正在尝试在 MySQL 数据库中执行存储过程,需要 3 个参数。

存储过程如下:

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `storedProc1`(name VarChar(50), surname VarChar(50), age INT)
BEGIN
INSERT INTO table1 (name, surname, age) VALUES (name, surname, age);
END

这是我的 C# 代码:

using MySql.Data.MySqlClient;
string connString = "server=localhost;database=db1;user id=user1;password=pass1";
MySqlParameter[] parameters = new MySqlParameter[3];
parameters[0] = new MySqlParameter("name", "john");
parameters[1] = new MySqlParameter("surname", "smith");
parameters[2] = new MySqlParameter("age", 35);
MySql.Data.MySqlClient.MySqlHelper.ExecuteNonQuery(connString, "storedProc1", parameters);

但我收到以下错误:

MySql.Data.dll 中出现“MySql.Data.MySqlClient.MySqlException”类型的未处理异常 附加信息:PROCEDURE tracker.insert_track 的参数数量不正确;预期 3,得到 0。

我不知道哪里出错了。有任何想法吗?谢谢...

【问题讨论】:

  • 尝试将new MySqlParameter("name"更改为new MySqlParameter"@name"等,然后将查询字符串更改为"call storedProc1 @name, @surname, @age"
  • 感谢劳伦斯,成功了。
  • 愚蠢的问题,我如何将您的答案标记为正确的?抱歉,我对 stackoverflow 有点陌生...
  • 我需要先把它写成答案,也可能需要一段时间才能标记它。

标签: c# mysql sql .net stored-procedures


【解决方案1】:

new MySqlParameter("name"更改为new MySqlParameter"@name"等,然后将查询字符串更改为"call storedProc1 @name, @surname, @age"

也许可以使用?参数以您尝试的方式调用该过程。有关一些信息,请参阅here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多