none
Ordem dos parâmetros para passar uma consulta SQL usando string.Format() método. RRS feed

  • Pergunta

  • Olá pessoal, estou desenvolvendo um relatório em Asp.Net aqui na empresa. Sou programador a nível iniciante pois ainda não domino 100% a "coisa". O problema que estou tendo é o seguinte: Tenho um consulta em T-SQL bastante extensa e dependendo se o usuário selecionar ou não os filtros (são os drop down list com os respectivos campos) uso um string.Format(consultaComFiltro, argumento1, argumento2, argumentoN) para ser substituída dentro da minha query, onde tem os "{0} {1 {2}" e assim por diante totalizando 9 lugares para serem ou não preenchidos. Dada essa condição preciso complementar a consulta nas posições marcadas como {6}{7} e {8} sem colocar nada nas posições {0}{1}{2}{3}{4} e {5}. Como faço para selecionar a posição dos meus argumentos dentro do método string.Format()??

    Obrigado a todos!

    terça-feira, 18 de dezembro de 2012 20:17

Respostas

Todas as Respostas

  • Osmar, este tipo de prática não é recomendada, alem de você deixar seu código muito complexo ele abre brechas de segurança. tente refazer utilizando SQLParamers http://msdn.microsoft.com/pt-br/library/system.data.sqlclient.sqlparameter.aspx

    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Facebook Olavo Neto
    Linkedin Olavo Neto
    Se for útil marque como resposta e faça um Developer feliz :)

    quarta-feira, 19 de dezembro de 2012 16:53
  • O Olavo está certo cara... desse jeito vc corre muito risco... além de que vai ter que fazer um algoritmo só para organizar as coisas... melhor usar o SQLParameter mesmo...
    quarta-feira, 19 de dezembro de 2012 17:56
  • Oi Pessoal,

    eu fiz o seguinte:

    Dentro da minha consulta coloquei uma string indicando a posição de onde deve ser acrescida uma condição assim: [CONDICAO_WHERE];

    Aí usei um string.replace("[CONDICAO_WHERE]", " AND NUMERO = " + param1 + ) onde param1 é minha string passada como parâmetro para meu método. Infelizmente não consegui uma solução usando somento os SqlParameters pois dependendo da condição que o usuário solicitar um pedaço da string teria ou não que ser acrescentada na minha query.

    Teria outro jeito? No momento não estou conseguindo visualizar e além disso tenho que entregar isso o mais breve possível...

    Obrigado a todos!

    quarta-feira, 19 de dezembro de 2012 18:48