没有参考mysql存储过程的参数c#

时间:2017-01-11 09:26:16

标签: c# mysql stored-procedures

我在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

我甚至在执行之前检查了命令中的参数。它们在参数列表中可用。 我在这里错过了什么。?

2 个答案:

答案 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();