none
Erro ao usar Storage Procedure em C# com Visual Studio. RRS feed

  • Pergunta

  • Olá a todos. Bem, depois de procurar em todos os lugares que conseguia imaginar(inclusive aqui no msdn), recorri a esse post como ultima esperança...

    Tenho um Form, onde, aparti do click do usuario eu preciso pegar alguns dados em seus devidos texts box, gerar alguns parametros, e então executar uma Procedure do SQL Server 2005 com tais parametros.

    Já havia feito e usado essa mesma procedure em linguagens diferentes(como Delphi e Java), e ela funcionou sem problema algum.

    Bem, para usar esta procedure no meu projeto C# no Visual Studio, usei a opção "Add > Query" do DataSet Designer, de meu DataSet Padrão. O wizard abriu me perguntando qual seria a conexao com o bando, eu selecionei a conexao padrão, e na proxima  tela, quando o wizard me pergunta que tipo de query gostaria de criar, selecionei "User Existing procedure" e lá escolhe a procedure, que o Visual Studio fez o favor de já definir os parametros e tudo mais, finalizei o wizard e a função que chamava a proc estava lá. Realizei todos os ajustes necessarios, incluindo o lugar onde esta procedure seria chamada, mas quando fui testar recebi o seguinte erro em SQLException:

    The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect.  Parameter 1: Data Type 0xA7 has an invalid data length or metadata length.


    Tentei acompanhar pelo profile, mas a aplicação nem mesmo chega a mandar a instrução para o servidor...

    Eu cheguei a ver este erro acontecer com outras pessoas, mas nenhuma teve uma resposta, e espero que isso tbm não aconteça comigo.


    Agradeço desde já,
    Cristiano.
    quinta-feira, 14 de fevereiro de 2008 15:10

Respostas

  • Grande,

     

     

    Aconselho o uso do objeto SqlCommand, e vc configura na mão os paramentro e tals, assim vc tem um pouco mais de controle...

     

     

    quinta-feira, 14 de fevereiro de 2008 18:51
    Moderador
  • Olá amigo,

     

    Bom respondendo sobre o erro, você provavelmente está passando o valor do primeiro parametro errado, ou maior que o campo suporta. Verifique o type e o size do valor do parametro que está passando para sua procedure.

     

    Sobre a observação do amigo View, acho que ele tem toda razão, claro que usando DataSet tipado a procedure vai funcionar normalmente, mas aconselho que trabalhe com o grupo de classes do Managed Providers usando o IDBCommand.

     

    Espero ter ajudado.

     

    Atenciosamente

    Flávio Secchieri Mariotti

    Analista de Sistemas

    http://fsmworlddotnet.blogspot.com

     

     

    terça-feira, 19 de fevereiro de 2008 12:35

Todas as Respostas

  • Grande,

     

     

    Aconselho o uso do objeto SqlCommand, e vc configura na mão os paramentro e tals, assim vc tem um pouco mais de controle...

     

     

    quinta-feira, 14 de fevereiro de 2008 18:51
    Moderador
  • Olá amigo,

     

    Bom respondendo sobre o erro, você provavelmente está passando o valor do primeiro parametro errado, ou maior que o campo suporta. Verifique o type e o size do valor do parametro que está passando para sua procedure.

     

    Sobre a observação do amigo View, acho que ele tem toda razão, claro que usando DataSet tipado a procedure vai funcionar normalmente, mas aconselho que trabalhe com o grupo de classes do Managed Providers usando o IDBCommand.

     

    Espero ter ajudado.

     

    Atenciosamente

    Flávio Secchieri Mariotti

    Analista de Sistemas

    http://fsmworlddotnet.blogspot.com

     

     

    terça-feira, 19 de fevereiro de 2008 12:35
  •  

    Opa, Vlw!! E me desculpem pela demora, em responder...

     

    Enfim, se bem me lembro, para "resolver" esse problema eu adotei o primeiro conselho, e resolvi tudo na mão!

     

    Obrigado a todos,

    Cristiano.

    terça-feira, 18 de março de 2008 20:13