2013-06-20 2 views
-1

У меня возникают проблемы с обновлением моей базы данных из веб-формы. Я использую серию текстовых полей и dropdownlists, которые заполнены источником данных, но по какой-то причине я не могу их обновить.Обновление базы данных sql-сервера с использованием asp.net C#

В основном первичный ключ строки передается на следующую страницу, где текстовые поля, выпадающие списки заполняются данными из этой строки.

Вот что я пытался до сих пор

//Update the record with new information entered into controls 
    protected void UpdateBut_Click(object sender, EventArgs e) 
    { 

     using (SqlConnection conn = new SqlConnection("Data Source=stephenp\\sqlexpress;Initial Catalog=Asset management System DB;Integrated Security=True")) 
     { 
      string sql = "UPDATE Peripherals SET [email protected], [email protected], [email protected], " + 
       "Company = @Company, [email protected], [email protected], [email protected], [email protected], " + 
       "[email protected], LastModifiedDate = @LastMD, [email protected] WHERE (PeripheralTagNumber = @PeripheralTagNumber)"; 


      //try 
      //{ 
      using (SqlCommand cmd = new SqlCommand(sql, conn)) 
      { 
       cmd.Parameters.AddWithValue("@PeripheralType", TypeDDL.Text.Trim()); 
       cmd.Parameters.AddWithValue("@Model", ModelTB.Text.Trim()); 
       cmd.Parameters.AddWithValue("@SerialNum", SerialNumTB.Text.Trim()); 
       cmd.Parameters.AddWithValue("@Company", CompanyDDL.Text.Trim()); 
       cmd.Parameters.AddWithValue("@Department", DepartmentDDL.Text.Trim()); 
       cmd.Parameters.AddWithValue("@Status", StatusDDL.Text.Trim()); 
       cmd.Parameters.AddWithValue("@Warranty", DateTime.Parse(WarrantyTB.Text.Trim()).ToShortDateString()); 
       cmd.Parameters.AddWithValue("@CapexNum", CapexNumTB.Text.Trim()); 
       cmd.Parameters.AddWithValue("@IPAddress", IPAddressTB.Text.Trim()); 
       cmd.Parameters.AddWithValue("@LastMD", DateTime.Now.Date.ToShortDateString()); 
       cmd.Parameters.AddWithValue("@LastMB", Session["username"].ToString()); 
       cmd.Parameters.AddWithValue("@PeripheralTagNumber", ID); 

       conn.Open(); 
       cmd.ExecuteNonQuery(); 
       conn.Close(); 
      } 
      //} 
      //catch (SqlException ex) { } 
     } 

     this.getData(); 
    } 

благодаря

+0

вы получаете WarrantyDate? –

+0

Каков ваш ploblem? –

+0

Что ж, в чем проблема с этим кодом? Исключения? Сообщения об ошибках? Не обновляете ничего? Пожалуйста, более конкретно – Steve

ответ

0

Использование AddWithValue может привести к некоторым тонким ошибкам. Например, если ваш столбец LastModifiedDate имеет тип даты и времени, вы должны передать значение DateTime в качестве второго параметра в AddWithValue, а не строку. То же за ошибки

Вы могли бы попытаться изменить эти строки

cmd.Parameters.AddWithValue("@LastMD", DateTime.Now.Date); 
cmd.Parameters.AddWithValue("@Warranty", DateTime.Parse(WarrantyTB.Text.Trim())); 
0

Вы должны использовать блок Try/поймать, когда вы строите свой SqlCommand и при выполнении запроса.

Если в базе данных нет обновлений, у вас может возникнуть проблема с вашей командой.

+0

Проблема решена! Я, к сожалению, забыл использовать if (! IsPostBack) в моем основном методе, означающем, что когда я сделал звонок для обновления базы данных, он все еще обновлялся, но значения обновлялись с текущими значениями в базе данных, то есть значения обновлялись с помощью то же самое значение. Добавление if (! IsPostBack) решило проблему, разрешив вызову обновиться с новыми значениями, введенными в текстовые поля/dropdownlists. –

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