title: C# Update Table using SqlCommand.Parameters ASP.NET
body: <blockquote>
    <p><strong>Possible Duplicate:</strong><br>
    <a href="https://stackoverflow.com/questions/1934343/c-update-table-using-sqlcommand-parameters">C# Update Table using SqlCommand.Parameters</a>  </p>
  </blockquote>
  
  <p>I'm trying to update an SQL Server table using SqlCommand, I think it's a syntax error with my T-SQL, but here is what I have so far:</p>
  
  <pre><code>SqlCommand sqlCmd = new SqlCommand(
     "UPDATE yak_tickets 
      SET email = @emailParam, subject = @subjectParam, text = @textParam, 
          statusid = @statusIDParam, ticketClass = @ticketClassParam 
      WHERE id = @ticketIDParam", sqlConn);
  </code></pre>
  
  <p>The parameters are working as they should, however, the table never gets updated when I run the code. Any help would be appreciated =)</p>
  
  <p>Here is the rest of the code:</p>
  
  <pre><code>    #region Parameters
      /* Parameters */
      sqlCmd.Parameters.Add("@ticketIDParam", SqlDbType.BigInt);
      sqlCmd.Parameters["@ticketIDParam"].Value = ticketID;
  
      sqlCmd.Parameters.Add("@emailParam", SqlDbType.NVarChar);
      sqlCmd.Parameters["@emailParam"].Value = ticketToBeSubmitted.getEmail();
  
      sqlCmd.Parameters.Add("@subjectParam", SqlDbType.NVarChar);
      sqlCmd.Parameters["@subjectParam"].Value = ticketToBeSubmitted.getSubject();
  
      sqlCmd.Parameters.Add("@textParam", SqlDbType.Text);
      sqlCmd.Parameters["@textParam"].Value = ticketToBeSubmitted.getTicketContent();
  
      sqlCmd.Parameters.Add("@statusIDParam", SqlDbType.NVarChar);
      sqlCmd.Parameters["@statusIDParam"].Value = ticketToBeSubmitted.getStatus();
  
      sqlCmd.Parameters.Add("@ticketClassParam", SqlDbType.NVarChar);
      sqlCmd.Parameters["@ticketClassParam"].Value = ticketToBeSubmitted.getTicketClass();
      #endregion
  
      #region Try/Catch/Finally
      /* Try/Catch/Finally */
  
      try
      {
          sqlConn.Open();
          sqlCmd.ExecuteNonQuery();
      }
      catch (SqlException sqlEx)
      {
          sqlErrorLabel.Text = sqlEx.ToString();
          sqlErrorLabel.ForeColor = System.Drawing.Color.Red;
      }
      finally
      {
          sqlConn.Close();
      }
  </code></pre>
  
  <p>And the method's signature:</p>
  
  <pre><code>  public static void updateTicketInDatabase(Ticket ticketToBeSubmitted, Label sqlErrorLabel, int ticketID)
  </code></pre>
  
  <p>I've run this through a profiler, and what it does, is the following.</p>
  
  <pre><code>Page Loads -&gt;
  Audit Login: -- Sets a bunch of stuff (irrelevant)
  SQL:BatchStarting -- SELECT * from yak_tickets
  SQL:BatchCompleted -- SELECT * from yak_tickets
  Audit Logout
  
  
  Button Click Event -&gt;
  RPC:Completed: -- exec sp_reset_connection
  Audit Login: -- Sets some more stuff
  SQL:BatchStarting -- SELECT * from yak_tickets
  SQL:BatchCompleted -- SELECT * from yak_tickets
  </code></pre>
  
  <p>Here is the code behind file for the form.</p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Web;
  using System.Web.UI;
  using System.Web.UI.WebControls;
  using YakStudios_Support.Includes;
  
  namespace YakStudios_Support.ys_admin
  {
      public partial class UpdateTicket : System.Web.UI.Page
      {
          protected void Page_Load(object sender, EventArgs e)
          {
              int ticketID = Convert.ToInt32(Request.QueryString["ticketID"]); // Grabs the ?ticketid number from the URL
              Ticket ticketBeingUpdated = TicketDatabase.selectTicketFromDatabase(sqlErrorLabel, 1); // Creates a new Ticket object to be used by the form to populate the text boxes
  
              /* Form Field Population */
              // Email
              emailTxt.Text = ticketBeingUpdated.getEmail();
  
              // Date Submitted
              dateSubText.Text = ticketBeingUpdated.getDateSubmitted().ToString();
  
              // Ticket Class
              classDropDown.SelectedValue = ticketBeingUpdated.getTicketClass();
  
              // Ticket Status
              statusDrop.SelectedValue = ticketBeingUpdated.getStatus();
  
              // Subject
              subjectTxt.Text = ticketBeingUpdated.getSubject();
  
              // Text
              textTxt.Text = ticketBeingUpdated.getTicketContent();
          }
  
          protected void editBtn_Click(object sender, EventArgs e)
          {
              emailTxt.Enabled = true;
              dateSubText.Enabled = true;
              classDropDown.Enabled = true;
              statusDrop.Enabled = true;
              subjectTxt.Enabled = true;
              textTxt.Enabled = true;
          }
  
          protected void submitBtn_Click(object sender, EventArgs e)
          {
              int ticketID = Convert.ToInt32(Request.QueryString["ticketID"]); // Grabs the ?ticketid number from the URL
              DateTime convertedDate = Convert.ToDateTime(dateSubText.Text);
              Ticket ticketUpdated = new Ticket(emailTxt.Text, convertedDate, subjectTxt.Text, textTxt.Text, statusDrop.SelectedValue, classDropDown.SelectedValue);
              //Ticket ticketUpdated = new Ticket(emailTxt.Text, subjectTxt.Text, textTxt.Text, classDropDown.SelectedValue);
              Response.Write(TicketDatabase.updateTicketInDatabase(ticketUpdated, sqlErrorLabel, 1));
              //Response.Redirect("ticketqueue.aspx");
          }
      }
  }
  </code></pre>
  
  <p>What it seems to me like it's doing, is it's running my select method again, which is what it is supposed to do when the page loads. Is this being caused by the button refreshing the page?</p>