2017-01-11 104 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();