Artigo: 310107 - Última revisão: quinta-feira, 1 de Julho de 2004 - Revisão: 2.3

Como obter o esquema de coluna utilizando o DataReader GetSchemaTable método e Visual C# .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 | Reduzir tudo

Sumário

Este artigo demonstra como utilizar o método GetSchemaTable do objecto DataReader no ADO.NET para obter informações de esquema de coluna. Outro nome para o esquema de uma coluna é as propriedades de campo. Informações de esquema de coluna incluem 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 de número automático (AutoIncrement)
O método GetSchemaTable devolve uma propriedade de DataTable que contém o esquema de coluna para um DataReader . O DataTable contém uma linha para cada campo no conjunto de resultados. Cada coluna mapeia para uma propriedade do campo no conjunto de resultados. A propriedade ColumnName da coluna DataTable é o nome da propriedade do campo, como a propriedade ColumnName , tipo de dados , ColumnSize , IsKeyColumn ou IsAutoIncrement . O valor da coluna DataTable é o valor de propriedade do campo, tal como o valor de nome para a propriedade ColumnName .
Nota Para obter as informações chaves primárias, incluindo se um campo fizer parte de uma chave primária e se se trata de um campo AutoIncrement , tem de definir o valor CommandBehavior DataReader para CommandBehavior.KeyInfo .

Pode utilizar o método GetSchemaTable com o fornecedor de OLE DB .NET ou o .NET SQL fornecedor. O método OleDbDataReader.GetSchemaTable mapeia para o método de OLE DB IColumnsRowset::GetColumnsRowset . O método SqlDataReader.GetSchemaTable não utiliza uma camada de fornecedor de OLE DB.

Da nota, a menos que explicitamente, utilize o método GetSchemaTable , DataReader não devolve o esquema de coluna. Além disso, se utilizar GetSchemaTable para obter o esquema de coluna, não poderá actualizar DataReader . DataReader sempre copia uma sequência só de leitura, só de reencaminhamento de dados de uma base de dados.

Quando utilizar o método GetSchemaTable

  • O objecto SqlConnection não suporta a obter informações de esquema de SQL Server num método semelhante para GetOleDbSchemaTable método o objecto OleDbConnection . O método GetSchemaTable da classe SqlDataReader fornece uma forma simples de obter informações de esquema de coluna a partir do SQL Server.
  • Apesar de GetOleDbSchemaTable método o objecto OleDbConnection pode devolver base de dados, tabela e informações de esquema de coluna, poderá achar que o método GetSchemaTable do objecto DataReader é mais fácil de utilizar se pretender obter apenas informações de esquema de coluna.
  • Pode utilizar o método GetSchemaTable para criar uma nova DataTable com base no esquema de uma propriedade existente DataTable enquanto é personalizar os nomes das colunas e outros atributos de coluna. Código de exemplo que demonstra como utilizar 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.

Obter o esquema de coluna com o fornecedor de OLE DB .NET

Este exemplo lista as informações esquema para as colunas (propriedades do campo) da tabela Empregados na base de servidor de SQL da base de dados.

Tenha em atenção que quando utiliza o fornecedor de OLE DB .NET, utilize o método GetSchemaTable do objecto OleDbDataReader .
  1. Inicie o Visual Studio .NET e, em seguida, crie um novo projecto de Visual C# consola de aplicação. Class1.cs é criado por predefinição.
  2. Abra a janela de código para Aula1. Cole o seguinte código na parte superior da janela do código acima a declaração de espaço de nomes :
    using System.Data;
    using System.Data.OleDb;
    					
  3. Na janela código, cole o seguinte código 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 CadeiaDeLigação correctamente estabelecer ligação com o SQL Server computador.
  5. Prima a tecla F5 para compilar e executar o projecto. Repare que as propriedades de cada campo são listadas na janela da consola.
  6. Prima ENTER para percorrer a lista, terminar a aplicação da consola e regressar para IDE (Integrated Development Environment).

Obter o esquema de coluna com o fornecedor de .NET SQL

Este exemplo lista as informações esquema para as colunas (propriedades do campo) da tabela Empregados na base de servidor de SQL da base de dados.

Tenha em atenção que quando utiliza o fornecedor de .NET SQL, utilize o método GetSchemaTable do objecto SqlDataReader .
  1. Inicie o Visual Studio .NET e crie um novo projecto de aplicação do Visual C# consola. Class1.cs é criado por predefinição.
  2. Abra a janela de código para Aula1. Cole o seguinte código na parte superior da janela do código acima a declaração de espaço de nomes :
    using System.Data;
    using System.Data.SqlClient;
    					
  3. Na janela código, cole o seguinte código 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 CadeiaDeLigação correctamente estabelecer ligação com o SQL Server computador.
  5. Prima F5 para compilar e executar o projecto. Repare que as propriedades de cada campo são listadas na janela da consola.
  6. Prima ENTER para percorrer a lista, terminar a aplicação da consola e devolver ao IDE.

Referências

Para obter mais informações sobre DataReader e o método GetSchemaTable , consulte os tópicos seguintes no online de .NET de Visual Studio documentação de ajuda:
A obter dados utilizando 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)

Nota : Este tópico inclui uma lista completa das colunas no devolvidos DataTable .

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 como utilizar o OleDbConnection método do objecto GetOleDbSchemaTable obter as informações de esquema, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
309681  (http://support.microsoft.com/kb/309681/EN-US/ ) Como obter informações de esquema utilizando GetOleDbSchemaTable e Visual C# .NET

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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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/ )