Parameterized queries prohibit the sql injection in your web application.
It allows you to safely write code like the  following:
Let say, I have a SqlDataReader function to get the details of the particular ID:
public static SqlDataReader GetDetail(int id)
    {
        string sql = "select * from Raj_table where id = @id ";
        SqlParameter paramUserId = new SqlParameter("id", SqlDbType.Int);
        paramUserId.Value = id;
        // I like to use the SqlHelper class
    return SqlHelper.ExecuteReader(GetConnectionString(), CommandType.Text, sql,                    paramUserId);
    }
Firstly, this parameter  ensures that the paramater is an INT so a string value would throw an exception  here. Also, if we were using a VARCHAR parameter, the SqlParameter value  assignment automatically escapes the string for us.
If you run SQL  Profiler and observe the queries, you'll notice that they are actually execute  via a Stored Procedure (sp_executesql)
Happy Programming!!
 
