Inquiridor
Uso dos PARAMETERS

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
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
-
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...
Abraços
Danilo Fernandes
-
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,