gpt4 book ai didi

c# - 无法从 C# 执行 MySql 存储过程

转载 作者:行者123 更新时间:2023-11-30 22:58:27 25 4
gpt4 key购买 nike

在 MySql 中:

DELIMITER //

DROP PROCEDURE IF EXISTS `testdb`.`Check_UserId_Sproc` //
CREATE PROCEDURE `testdb`.`Check_UserId_Sproc` (IN User_Id NVARCHAR(100))
BEGIN
select count(*) from demo_user where userid = User_Id;
END //

DELIMITER ;

在 C# 中:

public DataTable ExecuteParameterizedSelectCommand(string CommandName, CommandType cmdType,MySqlParameter[] param)
{
DataTable table = new DataTable();
string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;

using(MySqlConnection con = new MySqlConnection(CS))
{
using (MySqlCommand cmd = con.CreateCommand())
{
cmd.CommandType = CommandType.Text;
cmd.CommandText = CommandName;
cmd.Parameters.AddRange(param);

try
{
if (con.State != ConnectionState.Open)
{
con.Open();
}

using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
{
da.Fill(table);
}
}
catch
{
throw;
}

return table;
}
}
}


public DataTable checkExistingUserId()
{
MySqlDBHelper oHelper = new MySqlDBHelper();
MySqlParameter[] parameters = new MySqlParameter[]
{
new MySqlParameter("User_Id", 'DemoId')
};
return oHelper.ExecuteParameterizedSelectCommand("Check_UserId_Sproc", CommandType.StoredProcedure, parameters);
}

当我尝试执行 checkExistingUserId() 时,出现以下异常:

Incorrect number of arguments for PROCEDURE testdb.Check_UserId_Sproc; expected 1, got 0

可能是我犯了一个愚蠢的错误,但我无法弄清楚。我是 mysql 的新手,正在尝试解决它。​​

当我调试时,数组包含如下图所示的参数,但它不是由 SP 收集的。

enter image description here

提前致谢

最佳答案

在你的代码中:

cmd.CommandType = CommandType.Text;

应该是

cmd.CommandType = cmdType;

关于c# - 无法从 C# 执行 MySql 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25178490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com