title: Inserting Multiple Records into SQL Server database using for loop
body: <p>I am working on a Windows form project in C#. I am trying to insert multiple records into the SQL Server database from an array. </p>
  
  <p>After entering the first row I get an exception </p>
  
  <blockquote>
    <p>@UserID has already been declared. Variable names must be unique within a query batch or stored procedure.</p>
  </blockquote>
  
  <p>There is no issue with the primary key in the database as <code>UserID</code> is not the primary key.</p>
  
  <p>This is what I am trying to do.</p>
  
  <pre><code>public static void featuresentry()
  {
      SqlConnection connection = new SqlConnection(HandVeinPattern.Properties.Settings.Default.HandVeinPatternConnectionString);
  
      SqlCommand command = new SqlCommand();
      connection.Open();
  
      try
      {
          command = connection.CreateCommand();
  
          for (int i = 0; i &lt; Details.modelKeyPoints.Size; i++)
          {
              command.CommandText = "INSERT INTO FEATURES(UserID, Angle, ClassID, Octave, PointX, PointY, Response, Size) VALUES(@UserID, @Angle, @ClassID, @Octave, @PointX, @PointY, @Response, @Size)";
  
              command.Parameters.AddWithValue("@UserID", Details.ID);
              command.Parameters.AddWithValue("@Angle", Convert.ToDouble(Details.modelKeyPoints[i].Angle));
              command.Parameters.AddWithValue("@ClassID", Convert.ToDouble(Details.modelKeyPoints[i].ClassId));
              command.Parameters.AddWithValue("@Octave", Convert.ToDouble(Details.modelKeyPoints[i].Octave));
              command.Parameters.AddWithValue("@PointX", Convert.ToDouble(Details.modelKeyPoints[i].Point.X));
              command.Parameters.AddWithValue("@PointY", Convert.ToDouble(Details.modelKeyPoints[i].Point.Y));
              command.Parameters.AddWithValue("@Response", Convert.ToDouble(Details.modelKeyPoints[i].Response));
              command.Parameters.AddWithValue("@Size", Convert.ToDouble(Details.modelKeyPoints[i].Size));
  
              command.ExecuteNonQuery();
          }
      }
      catch (Exception)
      {
          throw;
      }
      finally
      {
          if (connection.State == ConnectionState.Open)
          {
              connection.Close();
          }
      }
  }
  </code></pre>