2013-10-27 3 views
0

Я пытаюсь использовать и обновлять команду в выражении оператора switch, но когда я запускаю ее, она не обновляется вообще, не уверен, что я делаю неправильно здесь. Вот мой код:Использование команды update в операторе Switch

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 и соединения не назначен на команду. После всего этого, вероятно, вы измените код на

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

И удалите объявление MyCmd в начале метода.

Наконец, откройте соединение explicitily в коде перед входом в корпус выключателя ....

+0

Всегда подчеркивая, что кто-то снижает вас без объяснения причин. oh well ... – Steve

+0

I downvoted, потому что вначале вы вставляете ответ заполнителя, который должен был быть комментарием. – BrokenGlass

+0

Хорошо, я сразу заметил отсутствие ExecuteNonQuery, и это вряд ли комментарий. Однако возникли другие проблемы и сейчас (в пятиминутный период) я все объяснил им – Steve

Смежные вопросы