Prevenção de injeção de SQL no .NET

Eu normalmente escrevo meu SQL assim no .NET

sql.Append("SELECT id, code, email FROM mytable WHERE variable = @variable ");

Então faça algo assim:

using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[ConfigurationManager.AppSettings["defaultConnection"]].ConnectionString))
{
    using (SqlCommand myCommand = new SqlCommand(sql.ToString(), conn))
    {
        myCommand.Parameters.AddWithValue("@variable", myVariableName");
        ...

Mas devo também fazer isso addParameter quando os dados que recebi vem diretamente do banco de dados como assim?

likesql.Append(string.Format("SELECT group_id, like_text FROM likeTerms ORDER BY group_id ASC "));

DataTable dtLike = SqlHelper.GetDataTable(likesql.ToString());

foreach (DataRow dr in dtLike)
{
    buildsql.Append(".... varId = " + dr["group_id"].ToString() + "...");

    ...

Isso é aceitável? Qual é a melhor prática?

questionAnswers(4)

yourAnswerToTheQuestion