我在MySQL数据库中存储过程。 此过程采用6个输入参数和2个输出参数。
我需要从我的c#应用程序中调用此存储过程。 以下是我的代码:
if (_MySqlConnectionSMS1.State != ConnectionState.Open)
_MySqlConnectionSMS1.Open();
using (MySqlCommand sqlcmd1 = new MySqlCommand("usp_Data_Insert", _MySqlConnectionSMS1))
{
sqlcmd1.Parameters.Add(new MySqlParameter("@in_ApplicationName", "AEM"));
sqlcmd1.Parameters.Add(new MySqlParameter("@in_ApplicationCode", "AEM"));
sqlcmd1.Parameters.Add(new MySqlParameter("@in_NTLogin", ntid));
sqlcmd1.Parameters.Add(new MySqlParameter("@in_SMSMsg", Message));
sqlcmd1.Parameters.Add(new MySqlParameter("@in_Workcell", ""));
sqlcmd1.Parameters.Add(new MySqlParameter("@in_SMSTime", System.DateTime.Now));
sqlcmd1.Parameters.Add(new MySqlParameter("@out_Result", MySqlDbType.Int32));
sqlcmd1.Parameters.Add(new MySqlParameter("@out_Message", MySqlDbType.VarChar));
sqlcmd1.Parameters["@out_Result"].Direction = ParameterDirection.Output;
sqlcmd1.Parameters["@out_Message"].Direction = ParameterDirection.Output;
sqlcmd1.ExecuteNonQuery();
int Status = Convert.ToInt16(sqlcmd1.Parameters["@out_Result"].Value);
string retMessage = Convert.ToString(sqlcmd1.Parameters["@out_Result"].Value);
}
但是sqlcmd1.ExecuteNonQuery()。我收到以下错误:
PROCEDURE TE_SMS.usp_SendSMS_Insert的参数数量不正确;预计8,得到0
我甚至在执行之前检查了命令中的参数。它们在参数列表中可用。 我在这里错过了什么。?
答案 0 :(得分:0)
希望这有帮助
在将输入/输出参数添加到sql命令对象之前添加以下行。
sqlcmd1.CommandType = CommandType.StoredProcedure;
答案 1 :(得分:0)
尝试
sqlcmd1.Parameters.AddWithValue(new MySqlParameter("@in_ApplicationName", "AEM"));
sqlcmd1.Parameters.AddWithValue(new MySqlParameter("@in_ApplicationCode", "AEM"));
sqlcmd1.Parameters.AddWithValue(new MySqlParameter("@in_NTLogin", ntid));
sqlcmd1.Parameters.AddWithValue(new MySqlParameter("@in_SMSMsg", Message));
sqlcmd1.Parameters.AddWithValue(new MySqlParameter("@in_Workcell", ""));
sqlcmd1.Parameters.AddWithValue(new MySqlParameter("@in_SMSTime", System.DateTime.Now));
sqlcmd1.Parameters.Add(new MySqlParameter("@out_Result", MySqlDbType.Int32){Direction = ParameterDirection.Output });
sqlcmd1.Parameters.Add(new MySqlParameter("@out_Message", MySqlDbType.VarChar){Direction = ParameterDirection.Output });
sqlcmd1.ExecuteNonQuery();
获得结果
int result1 = int.Parse(sqlcmd1.Parameters["@out_Result"].value.ToString())
string result2 = sqlcmd1.Parameters["@out_Message"].value.ToString();