StoredProcedure参数数不正确(C#)
我有一个像这样创建的StoredProcedure参数数不正确(C#),c#,mysql,stored-procedures,C#,Mysql,Stored Procedures,我有一个像这样创建的storedProcess CREATE DEFINER=`mysqladmin`@`%` PROCEDURE `Alerts_GetAlerts`(IN managerID INT) BEGIN SELECT ID, Type, EmpID, ManagerID, HolID FROM Alerts WHERE ManagerID = managerID; END$$ 然后我试着从我的C代码中调用它,就像这样 using (var con = ne
storedProcess
CREATE DEFINER=`mysqladmin`@`%` PROCEDURE `Alerts_GetAlerts`(IN managerID INT)
BEGIN
SELECT ID, Type, EmpID, ManagerID, HolID
FROM Alerts
WHERE ManagerID = managerID;
END$$
然后我试着从我的C代码中调用它,就像这样
using (var con = new MySqlConnection(MySQLConStr))
{
con.Open();
using (MySqlCommand cmd = new MySqlCommand("Alerts_GetAlerts", con))
{
cmd.Parameters.AddWithValue("@managerID", managerID);
using (var dataReader = cmd.ExecuteReader())
{
while (dataReader.Read())
{
var alert = new AlertsModel
{
ID = Convert.ToInt32(dataReader[0]),
Type = Convert.ToInt32(dataReader[1]),
ManagerID = Convert.ToInt32(dataReader[2]),
EmployeeID = Convert.ToInt32(dataReader[3]),
HolidayID = Convert.ToInt32(dataReader[4]),
};
AllAlerts.Add(alert);
}
}
}
return AllAlerts;
}
但是,我经常会发现,过程sdcdatabase.Alerts\u GetAlerts的参数数量不正确;预期为1,得到0,即使在我看来我正在传递managerID参数
cmd.Parameters.AddWithValue(“@managerID”,managerID)代码>
我哪里出错了?试试这个代码
using (var con = new MySqlConnection(MySQLConStr))
{
con.Open();
using (MySqlCommand cmd = new MySqlCommand("Alerts_GetAlerts(@managerID)", con))
{
cmd.Parameters.AddWithValue("@managerID", managerID);
using (var dataReader = cmd.ExecuteReader())
{
while (dataReader.Read())
{
var alert = new AlertsModel
{
ID = Convert.ToInt32(dataReader[0]),
Type = Convert.ToInt32(dataReader[1]),
ManagerID = Convert.ToInt32(dataReader[2]),
EmployeeID = Convert.ToInt32(dataReader[3]),
HolidayID = Convert.ToInt32(dataReader[4]),
};
AllAlerts.Add(alert);
}
}
}
return AllAlerts;
}
尝试添加cmd.CommandType=CommandType.StoredProcess代码>它看起来更像是一个整型变量吗?不要使用AddWithValue,而是使用参数集合的特定重载。添加允许您指定参数的确切数据类型的参数。请在SQL server中运行探查器,并检查通过该命令传递的内容。是识别这类错误的方法。我一定是瞎子。这段代码和提供的一个OP有什么区别?这行代码使用(MySqlCommand cmd=newmysqlcommand(“Alerts_GetAlerts(@managerID)”,con))哦,我明白了。。我没想到:参数名必须在存储过程中定义。添加参数名应该可以解决这个问题。