Capturar metadados de uma tabela usando recursos do ADO.NET

A manipulação de estruturas de uma tabela de banco de dados pode algo comum quando um sistema se propõe a oferecer algum tipo de interação mais direta com o a estrutura da base de dados. Para tal tarefa, se faz necessário recuperar os metadados do banco. A recuperação destes metadados pode ser feita de várias formas. Geralmente, utilizamos recursos do próprio banco de dados para tal. Para quem deseja abstrair isto, o ADO.Net oferece uma forma rápida e fácil de se obter os metadados de uma tabela. Mostraremos aqui como fazer isto.

O processo é bem simples. Na instância de seus adapter basta utilizar o comando FillSchema. Veja o código abaixo:

public void FillDataTable(out DataTable table, DbCommand command)

{
   var tableReturn = new DataTable();
   var adapter = new SqlDataAdapter((SqlCommand)command);
   adapter.Fill(tableRetorno);
   FillSchemasDaTaTable(tableReturn, adapter);
   table = tableRetorno;
}


private static void FillSchemasDaTaTable(DataTable table, SqlDataAdapter adapter)
{
   adapter.FillSchema(table, SchemaType.Source);
}



O código acima retorna um DataTable preenchido juntamente com os metadados. Em posse desta informação você pode varrer o DataColumnCollection contido no Table.Columnsrecuperando todos os seus atributos: como Nome da coluna, tamanho máximo, DataType etc. Veja o código a baixo:



public
List/span>string> Read(DataTabletable)

{
   var fields = new Listspan style="color: #0000ff;">string>();

varcolumns = table.Columns;

 

for (int i = 0; contador < columns.Count; contador++)
      fields.Add(colunas[i].ColumnName);

 

return fields;
}

Concluindo este artigo, descobrimos que a manipulação de estruturas de uma tabela de banco de dados pode ser feita com os recursos do próprio ADO.Net, que oferece uma forma rápida e fácil de se obter os metadados de uma tabela.

Para saber mais:

Aprofunde seus conhecimentos sobre este tema na comunidade C# (Csharp)
Aprofunde seus conhecimentos sobre este tema na comunidade ADO.NET


Exibições: 454

Comentar

Você precisa ser um membro de DevBrasil para adicionar comentários!

Entrar em DevBrasil

Comentário de Yan de Lima Justino em 27 fevereiro 2012 às 19:15

Lucas, eu vi seu email! parabéns pela implementação. Fico feliz em ter ajudado.

Comentário de Leandro Rodrigues em 27 fevereiro 2012 às 16:39

Lucas,

Parabéns! Quando eu crescer quero ser igual vc man =D

Abraços,

Leandro Rodrigues

Comentário de Lucas Demetrius em 27 fevereiro 2012 às 15:04

Amigos consegui, vou postar aqui o que consegui fazer:

Inserir campo na minha tabela em tempo de execucao

e quando minha página é carregada ele monta os controles muito massa.

Comentário de Leandro Rodrigues em 27 fevereiro 2012 às 14:13

Lucas,

Muito interessante a sua pergunta.
É possível inserir um campo numa tabela, como também é possível criar um banco de dados ou qualquer outra coisa para isso é necessario utilizar os objetos xxxCommand, dentro desse objeto existe o método xxxExecuteNonQuery que também deverá ser utilizado, dentro do xxxCommand você passará a sua query que irá alterar a tabela.

Abraços,

Leandro Rodrigues  

Comentário de Lucas Demetrius em 27 fevereiro 2012 às 11:38

Massa demais, mais eu gostaria de saber se eu consigo inserir alguma campo na minha tabela via ADO.NET

Comentário de Ray Silva em 25 fevereiro 2012 às 12:15

Muito bom! Compartilhando!

Comentário de Márcio Araújo em 25 fevereiro 2012 às 8:28

Show!, Leandro está sumido hein. 

Comentário de Leandro Rodrigues em 24 fevereiro 2012 às 14:47

Yan,

Muito bom seu artigo, já imaginei até um componente de validação =D
Parabéns, não para não quero ver outros artigos seu!

Abraços,

Leandro Rodrigues

© 2019   Criado por Ramon Durães.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço