none
Retorna a descrição dos compos do banco de dados Access? RRS feed

  • Pergunta

  • Pesso to fazendi um programa que preciso que me retorna a descrição dos compos do banco de dados Access.
    preciso da descrição de cada compo da tabela q esta na BD Access.
    Alguem sabe como que faz isso em C#?
    Antecipo agradecimentos...
    sexta-feira, 11 de setembro de 2009 21:12

Respostas

  • Lennon,

    Segue código abaixo:

    // cria conexão
    OleDbConnection oleDbConnection = new OleDbConnection(@"Provider = Microsoft.jet.OleDb.4.0;
        Data Source=CaminhoCompletoMDB");

    // abre conexão
    oleDbConnection.Open();

    // tabela contendo esquema
    DataTable schemaTable = oleDbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,
        new object[] { null, null, "NomeTabela" });

    // lista propriedades da tabela
    foreach (DataRow schemaTableRow in schemaTable.Rows)
    {
        Console.WriteLine(schemaTableRow["COLUMN_NAME"].ToString());
        Console.WriteLine(schemaTableRow["DESCRIPTION"].ToString());
    }

    // fecha conexão
    oleDbConnection.Close();


    Att.

    Ari C. Raimundo
    segunda-feira, 14 de setembro de 2009 20:26
    Moderador

Todas as Respostas

  • Olá Lennon

    Analise o exemplo

    //using System.Data.OleDb;      
    
            OleDbConnection Conn;
    
            public Form3()
            {
                InitializeComponent();
                string strConn = "Provider = Microsoft.jet.OleDb.4.0; Data Source = "
                    + @"E:/DESENV/CaldasNovas/RS_BDados/Vetor/Cadastro.mdb;";
                Conn = new OleDbConnection(strConn);
            }
    
            private void btnTable_Click(object sender, EventArgs e)
            {
                // LISTA AS TABELAS EXISTENTES
                Conn.Open();
                DataTable tabTabelas = Conn.GetSchema("Tables");
                foreach (DataRow rowTabela in tabTabelas.Rows)
                {
                    foreach (DataColumn colTabela in tabTabelas.Columns)
                    {
                        if (colTabela.ColumnName == "TABLE_NAME")
                           listTabelas.Items.Add(rowTabela[colTabela]);
                    }
                }
            }
    
            private void listTabelas_SelectedIndexChanged(object sender, EventArgs e)
            {
                // LISTA OS CAMPOS DA TABELA SELECIONADA
                listColunas.Items.Clear();
                string nomeTabela = listTabelas.Items[listTabelas.SelectedIndex].ToString();
                OleDbCommand comando = new OleDbCommand("Select * from " + nomeTabela, Conn);
                OleDbDataReader reader = comando.ExecuteReader();
                DataTable tabColunas = reader.GetSchemaTable();
                foreach (DataRow rowTabela in tabColunas.Rows)
                {
                    foreach (DataColumn colTabela in tabColunas.Columns)
                    {
                        if (colTabela.ColumnName == "ColumnName")
                           listColunas.Items.Add(rowTabela[colTabela]);
                    }
                }
            }
        }


    Saudações
    Márcio Lima
    sábado, 12 de setembro de 2009 01:25
  • Marcio não é isso que eu quero não..

    Na base de dados access quando vc cria o BD, vc faz uma descrição de cada campo q vc cria, exemplo:
    campo     -     tipo         -          descrição
    id                   int                    Identificador
    nome            varchar              Nome do Cliente
    sexo              char                  M Masculino F Feminino

    Eu preciso q retorna a coluna descrição da base de dados Access.

    Entendeu. 
    sábado, 12 de setembro de 2009 20:24
  • Boa madrugada Lennon,

    você pode utilizar:


    objetoTable
    .Columns["Nome_da_Coluna"].ExtendedProperties["MS_Description"].Value;


    Espero ter ajudado.

    -------------------------------------------------
    Carlos Zani
    segunda-feira, 14 de setembro de 2009 03:04
  • Carlos Zani, vlw pela tentativ, mas ainda não consegui.
    Isso que quero vc já vil alguem fazer, seria possivel?
    segunda-feira, 14 de setembro de 2009 19:05
  • Lennon,

    Segue código abaixo:

    // cria conexão
    OleDbConnection oleDbConnection = new OleDbConnection(@"Provider = Microsoft.jet.OleDb.4.0;
        Data Source=CaminhoCompletoMDB");

    // abre conexão
    oleDbConnection.Open();

    // tabela contendo esquema
    DataTable schemaTable = oleDbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,
        new object[] { null, null, "NomeTabela" });

    // lista propriedades da tabela
    foreach (DataRow schemaTableRow in schemaTable.Rows)
    {
        Console.WriteLine(schemaTableRow["COLUMN_NAME"].ToString());
        Console.WriteLine(schemaTableRow["DESCRIPTION"].ToString());
    }

    // fecha conexão
    oleDbConnection.Close();


    Att.

    Ari C. Raimundo
    segunda-feira, 14 de setembro de 2009 20:26
    Moderador
  • Vlw Ari C. Raimundo, deu certinho, brigadão
    terça-feira, 15 de setembro de 2009 00:31