2015-06-03 6 views
-3

моя проблема заключается в том, что я попробовал все виды решений, но это не обновить таблицу здесь мой код позади обновления button_click:UPDATE ЗАЯВЛЕНИЕ 2 таблицы C#

protected void Button2_Click(object sender, EventArgs e) 
     { 

      string fileName = Path.GetFileName(FileUpload1.PostedFile.FileName); 
      FileUpload1.SaveAs(Server.MapPath("Files/" + fileName)); 
      SqlConnection cnx = new SqlConnection(); 
      cnx.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["str"].ConnectionString; 

      SqlCommand cmd = new SqlCommand("Update Appel_offre set Titre_ao='" + TextBox4.Text + "',Description_ao='" + TextBox5.Text + "',Cout='" + TextBox6.Text + "',Type='" + DropDownList3.Text + "',Date='" + TextBox8.Text + "',Echeance='" + TextBox9.Text + "',Reference='" + TextBox7.Text + "',Piece_jointe='" + "Files/" + fileName + "',filename='" + fileName + "' where Id_ao = '" + Session["Id_ao"] + "' ", cnx); 
      SqlCommand cmd1 = new SqlCommand("Update Lot set [email protected],[email protected],[email protected] where Titre = '" + Dropdownlst.SelectedItem.Value + "'",cnx); 
      cnx.Open(); 
      cmd1.Parameters.AddWithValue("@desc", TextBox2.Text); 
      cmd1.Parameters.AddWithValue("@ref", TextBox3.Text); 
      cmd1.Parameters.AddWithValue("@type", DropDownList2.Text); 

      cmd.ExecuteNonQuery(); 
      cmd1.ExecuteNonQuery(); 

      cnx.Close(); 

      if (IsPostBack) 
      { 
       conff.Visible = true; 
      } 


     } 
+3

Вы получаете сообщение об ошибке или ошибке? Какие ваши запросы на обновления выглядят после ваших добавленных значений? Вы отлаживали свой код? Не могли бы вы уточнить свою проблему? Также параметризуйте все переменные, как и во второй команде. –

+0

Что происходит _does_? Есть ли исключение, о котором вы могли бы написать подробности? Вы проверили, что сгенерированный SQL правильный? Вы запускаете SQL, сгенерированный против вашей базы данных, напрямую? Что происходит? – amcdermott

+0

Спасибо @ SonerGönül за ответ .. я не получаю никакого сообщения об ошибке, и я не получаю никаких запросов на обновление .. Я попытался параметризовать переменные до этого ... ничего не произошло –

ответ

0

Трудно сказать, что здесь не так, но я будет улучшать ваш код.

Возможно, это также исправляет проблему.

  • Используйте дословные строковые литералы, что делает ваш SQL запрос гораздо лучше читать

  • Используйте using заявления, чтобы убедиться, что все получает утилизировать должным образом

  • Не использовать конкатенацию, чтобы построить ваш SQL-запрос, но SqlParameter, без исключения. Это предотвращает внедрение SQL-запросов и другие проблемы.

  • Использовать не AddWithvalue, а Add с правильным SqlDbType, в противном случае база данных делает догадки о типе вашего параметра.

  • Передайте правильный тип и не позволить базе отливать свои параметры, которые также проверяют недопустимый ввод (к неправильной дате)

Код:

string updateApple = @"Update Appel_offre Set 
          Titre_ao = @Titre_ao, 
          Description_ao = @Description_ao, 
          Cout   = @Cout, 
          Type   = @Type, 
          Date   = @Date, 
          Echeance  = @Echeance, 
          Reference  = @Reference, 
          Piece_jointe = @Piece_jointe, 
          filename  = @filename 
         where Id_ao = @Id_ao;"; 
string updateLot = @"Update Lot Set 
          Description = @Description, 
          Reference  = @Cout, 
          Type   = @Type 
        where Titre = @Titre;"; 
using (var cnx = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["str"].ConnectionString)) 
using(var cmd_UpdateApple = new SqlCommand(updateApple, cnx)) 
using (var cmd_UpdateLot = new SqlCommand(updateLot, cnx)) 
{ 
    cmd_UpdateApple.Parameters.Add("@Titre_ao", SqlDbType.VarChar).Value = TextBox4.Text; 
    cmd_UpdateApple.Parameters.Add("@Description_ao", SqlDbType.VarChar).Value = TextBox5.Text; 
    // ... 
    cmd_UpdateApple.Parameters.Add("@Date", SqlDbType.DateTime).Value = DateTime.Parse(TextBox8.Text); 
    // ... 

    cnx.Open(); 
    int updatedAppels = cmd_UpdateApple.ExecuteNonQuery(); 

    cmd_UpdateLot.Parameters.Add("@Description", SqlDbType.VarChar).Value = TextBox2.Text.Text; 
    // ... 
    cmd_UpdateLot.Parameters.Add("@Titre", SqlDbType.VarChar).Value = Dropdownlst.SelectedItem.Value; 
    int updatedLot = cmd_UpdateApple.ExecuteNonQuery(); 
} 

Я использовал DateTime.Parse, используйте DateTime.TryParse, если формат может быть недействительным.

+0

Спасибо, что проблема связана с отсутствующим закрывающим тегом. .btw я буду использовать ур код .. спасибо еще раз :) –