2012-08-01 93 views
0
public int Test() 
     { 
      int result = 1; 

      SqlCommand cmd = new SqlCommand("spTest", conn); 
      cmd.CommandType = CommandType.StoredProcedure; 

      var returnParameter = cmd.Parameters.Add("@RETURN_VALUE", SqlDbType.Int); 
      returnParameter.Direction = ParameterDirection.ReturnValue; 

      try 
      { 
       conn.Open(); 
       cmd.ExecuteNonQuery(); 
       result = Convert.ToInt32(returnParameter.Value); 
      } 
      catch (Exception e) 
      { 
       MessageBox.Show(e.Message.ToString()); 
      } 
      finally 
      { 
       conn.Close(); 
      } 

      return result; 
     } 

該方法從result = 1開始,所以如果查詢成功,我可以看到它變爲0。我測試了這一點,它確實從1變爲0.我的問題是,這是從存儲過程獲取默認RETURN_VALUE的正確方法嗎?
從存儲過程獲取默認返回值?

這也將結果值從1改爲0.爲什麼?查詢尚未運行。

public int Test() 
     { 
      int result = 1; 

      SqlCommand cmd = new SqlCommand("spTest", conn); 
      cmd.CommandType = CommandType.StoredProcedure; 

      var returnParameter = cmd.Parameters.Add("@RETURN_VALUE", SqlDbType.Int); 
      returnParameter.Direction = ParameterDirection.ReturnValue; 

      result = Convert.ToInt32(returnParameter.Value); 

      try 
      { 
       conn.Open(); 
       cmd.ExecuteNonQuery(); 
      } 
      catch (Exception e) 
      { 
       MessageBox.Show(e.Message.ToString()); 
      } 
      finally 
      { 
       conn.Close(); 
      } 

      return result; 
     } 
+0

是的,它是啓動存儲過程的名稱 - 或做它沒有工作爲你? – 2012-08-01 20:53:42

+0

我問的原因是因爲我有結果= Convert.ToInt32(returnParameter.Value);在運行查詢之前,它將結果變量從1更改爲0.所以我不確定爲什麼會發生這種情況,考慮到查詢的執行尚未發生。 – Testifier 2012-08-01 20:54:34

+0

增加了它,看看 – Testifier 2012-08-01 20:57:44

回答

1

是的。雖然如果您的連接無法打開,你會在你的finally

得到一個錯誤,如果這是SQL Server,請不要用SP