2017-01-11 109 views
0

我在MySQL数据库中存储过程。 该程序取6个输入参数和2个输出参数。不参与mysql存储过程的参数c#

我需要从我的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

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

+1

你不需要做sqlcmd1.CommandType = CommandType.StoredProcedure; ? – BugFinder

+0

我在调用此代码之前添加了它。但我错过了,我已经创建了该命令的新实例... – Vijay

+0

那么现在是否已修复? – BugFinder

回答

0

希望这会有帮助

在向sql命令对象添加输入/输出参数之前添加下面的行。

sqlcmd1.CommandType = CommandType.StoredProcedure;

+0

我在调用此代码之前添加了它。但是,我已经创建了该命令的新实例... – Vijay

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