2013-10-27 145 views
0

我想在switch case語句中使用和更新命令,但是當我運行它時,它根本沒有更新,不知道我在這裏做錯了什麼。以下是我的代碼:在Switch語句中使用update命令

protected void update() 
{ 
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["myConnection"].ConnectionString); 
    SqlCommand Mycmd = new SqlCommand();  
    SqlDataAdapter da = new SqlDataAdapter("SELECT ID, Name, Stage from Mytable WHERE ID= @ID ", con); 
    DataTable dt = new DataTable(); 
    da.SelectCommand.Parameters.AddWithValue("@ID", (ID)); 
    da.Fill(dt); 

    foreach (DataRow row in dt.Rows) 
    { 
     switch (Convert.ToString(row["Stage"])) 
     { 
      case "1":      
       string myStage= txtStageLevel.Text; 
       Mycmd.CommandText = "UPDATE Mytable SET [email protected]"; 
       break; 
     } 
+0

那麼,是你叫'Mycmd.ExecuteNonQuery()'的代碼? –

+1

也缺少實際添加'@ myStage'作爲參數的部分;-) – BrokenGlass

回答

2

缺少ExecuteNonQuery調用,參數@myStage和Connection的設置未分配給該命令。畢竟這可能會改變你的代碼爲

case "1": 
    using(SqlCommand myCmd = new SqlCommand("UPDATE Mytable SET [email protected]", con) 
    { 
     myCmd.Parameters.AddWithValue("@myStage", txtStageLevel.Text); 
     myCmd.ExecuteNonQuery(); 
    } 
    break; 

並且在方法開始時刪除MyCmd的聲明。

最後,在進入交換機的情況下,之前的代碼可明確打開連接....

+0

總是強調某人在沒有任何解釋的情況下低估了你。哦,以及... – Steve

+0

我downvoted,因爲在開始時你把一個佔位符的答案,應該是一個評論。 – BrokenGlass

+0

好,我立即注意到了ExecuteNonQuery的缺失,這很難作出評論。然而,其他問題出現了,現在(在五分鐘的時間),我已經解釋了他們 – Steve