¿Qué es pasar parámetros a SQL y por qué lo necesito?

Principiante aquí:

En estoresponder A mi pregunta de cómo insertar datos en SQL Server, mencionó los parámetros de paso en lugar de la concatenación de cadenas como lo tengo actualmente.

¿Es esto realmente necesario para la seguridad? Si es así, ¿qué es exactamente pasar parámetros? Cuando lo busco en Google, obtengo mucho sobre los procedimientos almacenados. Es eso lo que quiero, no sé sobre los procedimientos almacenados ... todavía.

Si puede señalarme en la dirección correcta, se lo agradecería.

Gracias.

EDITAR:

Ok, esto es lo que tengo. Parece actualizar la base de datos correctamente y eventualmente cambiaré las entradas codificadas a entradas de una etiqueta. Confirma si lo que hice no es vulnerable a ninguna inyección de SQL o piratería.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;

using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;



public partial class Stats : System.Web.UI.Page
{

    public SqlDataReader DataReader;
    public SqlCommand Command;
    string queryString = ("INSERT INTO UserData (UserProfileID, ConfidenceLevel, LoveLevel, HappinessLevel) VALUES (@UID, @CL, @LL, @HL);");
    //string queryString = ("INSERT INTO UserData (UserProfileID, ConfidenceLevel, LoveLevel, HappinessLevel) VALUES ('a051fc1b-4f51-485b-a07d-0f378528974e', 2, 2, 2);"); 

    protected void Page_Load(object sender, EventArgs e)
    {
       LabelUserID.Text = Membership.GetUser().ProviderUserKey.ToString();

    }

    protected void Button1_Click(object sender, EventArgs e)
    {

        //connect to database
        MySqlConnection database = new MySqlConnection();
        database.CreateConn(); 

        //create command object
        Command = new SqlCommand(queryString, database.Connection);

        //add parameters. used to prevent sql injection
        Command.Parameters.Add("@UID", SqlDbType.UniqueIdentifier);
        Command.Parameters["@UID"].Value = Membership.GetUser().ProviderUserKey;

        Command.Parameters.Add("@CL", SqlDbType.Int);
        Command.Parameters["@CL"].Value = 9;

        Command.Parameters.Add("@LL", SqlDbType.Int);
        Command.Parameters["@LL"].Value = 9;

        Command.Parameters.Add("@HL", SqlDbType.Int);
        Command.Parameters["@HL"].Value = 9;

        Command.ExecuteNonQuery(); 


    }

}

Respuestas a la pregunta(5)

Su respuesta a la pregunta