none
Uso dos PARAMETERS RRS feed

  • Pergunta

  • Fala pessoal....

     

    Hoje venho com uma pergunta relacionada a consultas de banco usando parameters....

     

    Antigamente antes da chegada do ADO.NET as strings SQL tinham seus valores simplesmente concatenados com os parametros da consulta deixando simplesmente gigante as linhas referentes a SQL desejada....

     

    Depois da vinda do ADO.NET comecei a usar os famosos parameters.... Porém me surgiu um problema.... Quando um erro era gerado no ADO era só eu pegar a string e visualiza-la montada para assim detectar o erro...

     

    O que eu preciso saber é uma forma de visualizar da mesma forma via parameters.... Fica mais fácil o entendimento e a detecção de erros....

     

    Existe alguma forma??? Existe alguma possibilidade disso???

     

    Temos o DEBUG de código... Mas durante a execução de uma chamada do ADO.NET não sabemos como os valores estão entrando na string....

     

    Gostaria de saber disso.... Quero criar um analizador de erros e para isso preciso salvar a string do SQL....

     

    Aguardo Reposta

     

    Att.

     

    Danilo Fernandes

     

    quarta-feira, 28 de maio de 2008 14:03

Todas as Respostas

  • Boa Noite,

     

    Antes do ADO.NET, já com o ADO era possível utilizar a coleção Parameters. O que acontecia é que segurança de aplicações era um tema mais embrionário e com o aprendizado de técnicas como o SQL Injection, a utilização do Parameters ganhou mais força.

     

    Você pode pegar o comando SQL vendo a propriedade CommandText do objeto Command, mas inicialmente ela retorna ? no lugar dos parâmetros (não sei se isso é verdadeiro após a atribuição dos parâmetros).

     

    De qualquer forma, na hipótese de um erro, você poderia salvar a string e os valores dos parâmetros.

     

    [ ]s,

     

    Gustavo

     

    quarta-feira, 28 de maio de 2008 21:42
  • Meu velho...

     

    Em primeiro lugar obrigado pela resposta... Porém o commandText só retorna a string com o atalhos para o parameter....

     

    EX.: @ID, @TEXTO

     

    Ai é que está o problema... Eu quero saber em que ponto existe a conversão e pegar a string convertida....

     

    Quanto a salvar os valores, nem sempre é possivel visto que existem converções que são feitas por tipo de dados como por exemplo data e coisas do tipo....

     

    Assim eu gostaria que vinhesse....

     

    SELECT * FROM TBClientes Where id = 12

     

    Ao invés de....

     

    SELECT * FROM TBClientes Where id = @ID

     

    Vamos lá pessoal... Deve ser possível... Stick out tongue

     

    Abraços

     

    Danilo Fernandes

    quinta-feira, 29 de maio de 2008 00:14
  • Oi Danilo, blz?

    Cara, uma solução é a que o Gustavo passou, de vc gravar os dados e analisar.

    Se isso não é possível, coloque um Break-Point no momento que vc vai executar o seu Command. Já depois de ter populado os parametros.

    Com isso, vc terá os dados exatos que serão enviados para o SQL Server. Pegue os dados e execute sua procedure manualmente no SQL Server Management Studio. Substituindo os @id da sua proc, pelos valores que estão sendo setados no seu parametro.

    É um trabalho manual, mas pode resolver seu problema neste instante.

    Se vc quiser realmente ver o trafego das informações, utilize o SQL Server Profiler (Performance Tools >> SQL Server Profiler). Vc vai configurar de acordo com suas necessidades e ele vai pegar todas as interações com o Banco que vc configurar.

    Com certeza, uma dessas sugestões vão resolver o seu problema.

    Abs,
    quinta-feira, 29 de maio de 2008 12:21