2015-11-10 56 views
0

如果我調用一個存儲過程如何檢測到它已在服務器上成功完成,現在我只是做一個嘗試捕獲這不是做這件事的最好方法。檢測是否存儲過程刪除運行

public bool deleteTeam(Guid teamId) 
{ 
    try 
    { 
     string cs = ConfigurationManager.ConnectionStrings["uniteCms"].ConnectionString; 
     SqlConnection myConnection = new SqlConnection(cs.ToString()); 

     // the stored procedure 
     SqlCommand cmd = new SqlCommand(
      "proc_unitecms_deleteTeam", myConnection); 

     // 2. set the command object so it knows 
     // to execute a stored procedure 
     cmd.CommandType = CommandType.StoredProcedure; 

     // 3. add parameter to command, which 
     // will be passed to the stored procedure 
     cmd.Parameters.Add(
      new SqlParameter("@ID", teamId)); 
     return true; 

    } catch(Exception ex) 
    { 
     return false; 
    } 
} 
+0

從存儲的過程返回一個值。只要將'select 1'寫爲sproc的最後一行,然後從方法調用'SqlCommand.ExecuteScalar()'方法中運行即可。讀取值,如果它是'1',你的sproc成功運行。當然,你可以根據你存儲區中的try catch塊返回不同的值。 – singsuyash

+0

爲什麼'try-catch'不夠?如果僅僅是檢測錯誤,這應該就足夠了。你想知道存儲過程中的特定條件是否被滿足?您可以使用您在存儲過程中爲稍後設置的'OUT'參數。在你的代碼示例中,沒有實際執行存儲過程的代碼。這是不是偶然? – Markus

回答

2

您可以返回受影響的行數並在發生異常時返回-1。

您忘記了ExecuteNonQuery。

SqlConnection sqlConnection1 = new SqlConnection("Your Connection String"); 
SqlCommand cmd = new SqlCommand(); 
Int32 rowsAffected; 
cmd.CommandText = "StoredProcedureName"; 
cmd.CommandType = CommandType.StoredProcedure; 
cmd.Connection = sqlConnection1; 
sqlConnection1.Open(); 
rowsAffected = cmd.ExecuteNonQuery(); 
sqlConnection1.Close();