none
Como atribuir ao DataTable parâmetros de um objeto que passará para uma procedure do SQL Server 2014 RRS feed

  • Pergunta

  • Olá Galera, tudo bem?

    Tenho uma user defined type  criada no SQL Server 2014 e uma procedure (uspInserirCliente) que receberá um parâmetro do tipo tabela para poder dar um Insert (Sugestão de um companheiro do fórum).

    Na minha aplicação C#, tenho uma função que precisa carregar um dataTable com os parâmetros necessários para enviar para a procedure do sql server... Como eu faço isso? Alguém pode me dar um help?

    Segue o link onde o companheiro me deu a dica: https://social.msdn.microsoft.com/Forums/pt-BR/c62f08e9-809e-4e09-9100-802ec811c52d/dvida-sobre-insert-em-3-tabelas-com-controle-de-transao-c-e-sql-server?forum=vscsharppt

    Grande abraço!!!!

    public String Inserir (Cliente cliente)

    {

    //Implementação aqui...

    }

    segunda-feira, 20 de abril de 2015 21:55

Respostas

  • E ai Jalber, tudo bom?

    Então, complementando sobre a criação de um DataTable, você cria um objeto do tipo DataTable e acrescenta as colunas nele, atribuindo o mesmo nome que têm as colunas do seu user defined table type, e atribuindo o mesmo tipo que seja apropriado pra conversão dos tipos das colunas do seu user defined table type. Depois de criada a estrutura do seu DataTable, você simplesmente acrescenta os registros que precisar, respeitando a estrutura criada para as colunas, atribuindo os valores dos atributos do seu objeto. Abaixo um exemplo da criação de um DataTable e atribuição dos valores a partir de um objeto:

          DataTable Cliente = new DataTable( "Cliente" );
    
          Cliente.Columns.Add( "Nome", typeof( String ) );
          Cliente.Columns.Add( "Sobrenome", typeof( String ) );
          Cliente.Columns.Add( "Compras", typeof( Double ) );
    
          Cliente.Rows.Add(cliente.Nome, cliente.Sobrenome, cliente.Compras);

    Espero que isso lhe ajude.

    Boa sorte e aquele abrass o/

    quarta-feira, 22 de abril de 2015 13:02

Todas as Respostas

  • E ai Jalber, tudo bom?

    Então, complementando sobre a criação de um DataTable, você cria um objeto do tipo DataTable e acrescenta as colunas nele, atribuindo o mesmo nome que têm as colunas do seu user defined table type, e atribuindo o mesmo tipo que seja apropriado pra conversão dos tipos das colunas do seu user defined table type. Depois de criada a estrutura do seu DataTable, você simplesmente acrescenta os registros que precisar, respeitando a estrutura criada para as colunas, atribuindo os valores dos atributos do seu objeto. Abaixo um exemplo da criação de um DataTable e atribuição dos valores a partir de um objeto:

          DataTable Cliente = new DataTable( "Cliente" );
    
          Cliente.Columns.Add( "Nome", typeof( String ) );
          Cliente.Columns.Add( "Sobrenome", typeof( String ) );
          Cliente.Columns.Add( "Compras", typeof( Double ) );
    
          Cliente.Rows.Add(cliente.Nome, cliente.Sobrenome, cliente.Compras);

    Espero que isso lhe ajude.

    Boa sorte e aquele abrass o/

    quarta-feira, 22 de abril de 2015 13:02
  • E ai grande Samuel, que bom te encontrar novamente meu caro!!

    Obrigado pela ajuda cara... Vou colocar me prática sua sugestão. O problema cara é que bateu uma grande dúvida sobre o banco... é que na aplicação eu tenho uma classe de conexão que recebe da camada de negocios e efetiva no banco. Neste caso tenho 3 classes que vão usá-lo... o problema é que preciso de uma procedure que receba os 3 datatables de uma vez e os grave.... se a aplicação manda um apenas, pode dar zica...

    Se eu enviar meu projeto para você, você consegue analisar se vai dar certo?

    quarta-feira, 22 de abril de 2015 23:45