ID do artigo: 310107 - Última revisão: quinta-feira, 1 de julho de 2004 - Revisão: 2.3

Como recuperar o esquema de colunas usando o DataReader GetSchemaTable translation from VPE for Csharp Visual e o método .NET

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sumário

Este artigo demonstra como usar o método GetSchemaTable do objeto DataReader do ADO.NET para recuperar informações de esquema da coluna. Outro nome para o esquema de uma coluna é suas propriedades de campo. Coluna informações de esquema inclui as seguintes informações sobre a coluna:
  • Nome
  • Tipo de dados
  • Tamanho
  • Se a coluna é um campo de chave primária
  • Se a coluna é um campo AutoNumeração (AutoIncrement)
O método GetSchemaTable retorna uma propriedade DataTable que contém o esquema de coluna para um DataReader . A DataTable contém uma linha para cada campo no conjunto de resultados. Cada coluna mapeia para uma propriedade de campo no conjunto de resultados. A propriedade ColumnName da coluna DataTable é o nome da propriedade do campo, tais como a propriedade ColumnName , tipo de dados , ColumnSize , IsKeyColumn ou IsAutoIncrement . O valor da coluna DataTable é o valor da propriedade do campo, como o valor de nome para a propriedade ColumnName .
Observação Para obter informações chaves primárias, incluindo se um campo fizer parte de uma chave primária e se ele é um campo AutoIncrement , você deve definir o valor CommandBehavior do DataReader para CommandBehavior.KeyInfo .

Você pode usar o método GetSchemaTable com o provedor OLEDB .NET ou o .NET SQL provedor. O método OleDbDataReader.GetSchemaTable mapeia para o método OLE IColumnsRowset::GetColumnsRowset . O método SqlDataReader.GetSchemaTable não usa uma camada de provedor OLE DB.

De anotação, a menos que você explicitamente use o método GetSchemaTable , o DataReader não retorna o esquema de coluna. Além disso, se você usar GetSchemaTable para recuperar o esquema de coluna, você não pode atualizar o DataReader . O DataReader sempre recupera um fluxo somente leitura, somente de encaminhamento de dados de um banco de dados.

Quando usar o método GetSchemaTable

  • O objeto SqlConnection não dá suporte recuperar informações de esquema do SQL Server em um método análogo ao método de GetOleDbSchemaTable do objeto OleDbConnection . O método GetSchemaTable da classe SqlDataReader fornece uma maneira simples para obter informações de esquema de coluna do SQL Server.
  • Embora GetOleDbSchemaTable método do objeto OleDbConnection pode retornar banco de dados, tabela e coluna informações de esquema, você pode achar que o método GetSchemaTable o objeto DataReader é mais fácil de usar se você desejar recuperar informações do esquema de coluna apenas.
  • Você pode usar o método GetSchemaTable para criar uma nova DataTable com base em esquema de uma DataTable propriedade existente, enquanto você personalizar os nomes de coluna e outros atributos de coluna. Para obter um exemplo de código que demonstra como usar GetSchemaTable para definir uma nova tabela, consulte o tópico "Visual Studio exemplos: Fitch e Mather 7.0 executar consulta SQL" na documentação do Microsoft Visual Studio .NET ajuda online.

Recuperar o esquema de coluna com o provedor OLE DB .NET

Este exemplo lista as informações de esquema para as colunas (Propriedades de campo) da tabela Funcionários no SQL Server Northwind banco de dados.

Observe que, quando você usa o provedor OLEDB .NET, você usa o método GetSchemaTable do objeto OleDbDataReader .
  1. Inicie o Visual Studio.NET e crie um novo translation from VPE for Csharp Visual Console Application projeto. Class1.cs é criado por padrão.
  2. Abra a janela de código para Class1. Cole o seguinte código na parte superior da janela código acima a declaração de namespace :
    using System.Data;
    using System.Data.OleDb;
    					
  3. Na janela código, cole o código a seguir na função principal :
    OleDbConnection cn = new OleDbConnection();
    OleDbCommand cmd = new OleDbCommand();
    DataTable schemaTable; 
    OleDbDataReader myReader; 
    			 
    //Open a connection to the SQL Server Northwind database.
    cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=login;
                           Password=password;Initial Catalog=Northwind";
    cn.Open();
    
    //Retrieve records from the Employees table into a DataReader.
    cmd.Connection = cn;
    cmd.CommandText = "SELECT * FROM Employees";
    myReader = cmd.ExecuteReader(CommandBehavior.KeyInfo); 
    
    //Retrieve column schema into a DataTable.
    schemaTable = myReader.GetSchemaTable();
    
    //For each field in the table...
    foreach (DataRow myField in schemaTable.Rows){
        //For each property of the field...
        foreach (DataColumn myProperty in schemaTable.Columns) {
    	//Display the field name and value.
    	Console.WriteLine(myProperty.ColumnName + " = " + myField[myProperty].ToString());
        }
        Console.WriteLine();
    
        //Pause.
        Console.ReadLine();
    }
    
    //Always close the DataReader and connection.
    myReader.Close();
    cn.Close();
    					
  4. Modificar os parâmetros da propriedade ConnectionString para se conectar corretamente ao seu SQL Server computador.
  5. Pressione a tecla F5 para compilar e executar o projeto. Observe que as propriedades de cada campo estão listadas na janela do console.
  6. Pressione ENTER para role a lista, encerrar o aplicativo de console e retornar para o IDE (ambiente de desenvolvimento integrado).

Recuperar o esquema de coluna com o provedor de .NET SQL

Este exemplo lista as informações de esquema para as colunas (Propriedades de campo) da tabela Funcionários no SQL Server Northwind banco de dados.

Observe que, quando você usa o provedor do .NET SQL, você usa o método GetSchemaTable do objeto SqlDataReader .
  1. Inicie o Visual Studio.NET e crie um novo translation from VPE for Csharp Visual Console Application projeto. Class1.cs é criado por padrão.
  2. Abra a janela de código para Class1. Cole o seguinte código na parte superior da janela código acima a declaração de namespace :
    using System.Data;
    using System.Data.SqlClient;
    					
  3. Na janela código, cole o código a seguir na função principal :
    SqlConnection cn = new SqlConnection();
    SqlCommand cmd = new SqlCommand();
    DataTable schemaTable; 
    SqlDataReader myReader; 
    			 
    //Open a connection to the SQL Server Northwind database.
    cn.ConnectionString = "Data Source=server;User ID=login;
                           Password=password;Initial Catalog=Northwind";
    cn.Open();
    
    //Retrieve records from the Employees table into a DataReader.
    cmd.Connection = cn;
    cmd.CommandText = "SELECT * FROM Employees";
    myReader = cmd.ExecuteReader(CommandBehavior.KeyInfo);
    
    //Retrieve column schema into a DataTable.
    schemaTable = myReader.GetSchemaTable();
    
    //For each field in the table...
    foreach (DataRow myField in schemaTable.Rows){
        //For each property of the field...
        foreach (DataColumn myProperty in schemaTable.Columns) {
    	//Display the field name and value.
    	Console.WriteLine(myProperty.ColumnName + " = " + myField[myProperty].ToString());
        }
        Console.WriteLine();
    
        //Pause.
        Console.ReadLine();
    }
    
    //Always close the DataReader and connection.
    myReader.Close();
    cn.Close();
    					
  4. Modificar os parâmetros da propriedade ConnectionString para se conectar corretamente ao seu SQL Server computador.
  5. Pressione F5 para compilar e executar o projeto. Observe que as propriedades de cada campo estão listadas na janela do console.
  6. Pressione ENTER para Role pela lista, encerrar o aplicativo de console e retornar ao IDE.

Referências

Para obter mais informações sobre o DataReader e o método GetSchemaTable , consulte os seguintes tópicos no Visual Studio .NET online documentação de Ajuda:
Recuperando dados usando o DataReader
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpcontheadonetdatareader.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpcontheadonetdatareader.asp)

Método IDataReader.GetSchemaTable
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataIDataReaderClassGetSchemaTableTopic.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataIDataReaderClassGetSchemaTableTopic.asp)

Observação : Este tópico inclui uma lista completa das colunas na DataTable retornada.

Método OleDbDataReader.GetSchemaTable
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataOleDbOleDbDataReaderClassGetSchemaTableTopic.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataOleDbOleDbDataReaderClassGetSchemaTableTopic.asp)

Método SqlDataReader.GetSchemaTable
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataSqlClientSqlDataReaderClassGetSchemaTableTopic.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataSqlClientSqlDataReaderClassGetSchemaTableTopic.asp)
Para obter informações adicionais sobre o uso GetOleDbSchemaTable método do objeto OleDbConnection para recuperar informações de esquema, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
309681  (http://support.microsoft.com/kb/309681/EN-US/ ) Como recuperar informações de esquema usando o .NET GetOleDbSchemaTable e translation from VPE for Csharp Visual

A informação contida neste artigo aplica-se a:
  • Microsoft ADO.NET 1.1
  • Microsoft ADO.NET 1.0
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Palavras-chave: 
kbmt kbdatabase kbhowtomaster kbsqlclient kbsystemdata KB310107 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 310107  (http://support.microsoft.com/kb/310107/en-us/ )