Como recuperar informações de esquema usando o .NET GetOleDbSchemaTable e translation from VPE for Csharp Visual

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: 309681
Sumário
Este artigo demonstra como usar o método GetOleDbSchemaTable do objeto OleDbConnection no ADO.NET para recuperar informações de esquema do banco de dados. Esquema informações em uma fonte de dados inclui bancos de dados ou catálogos disponíveis da fonte de dados, tabelas e modos de exibição em um banco de dados, bem como restrições que existem e assim por diante. Informações de esquema em uma tabela incluem chaves primárias, colunas e campos AutoNumeração.

Observe que nenhum método é equivalente a GetOleDbSchemaTable quando você usa um objeto SqlClient.SqlConnection . O provedor de dados .NET do SQL Server expõe informações de esquema back-end por meio de procedimentos armazenados e modos de exibição informativos. Para obter mais informações sobre modos de exibição e procedimentos armazenados que estão disponíveis através do Microsoft SQL Server, consulte a referência Transact-SQL na biblioteca MSDN.

back to the top

Requisitos

A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs que você precisa:
  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server ou Windows NT 4.0 Server
  • Microsoft Visual Studio .NET
Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:
  • O Visual Studio .NET
  • Conceitos básicos do ADO.NET e sintaxe
back to the top

Método GetOleDbSchemaTable do objeto OleDbConnection

O provedor OLEDB .NET dados usa o método GetOleDbSchemaTable do objeto OleDbConnection para expor as informações do esquema. GetOleDbSchemaTable retorna uma DataTable é preenchida com as informações de esquema.

O primeiro argumento de GetOleDbSchemaTable é o parâmetro de esquema, um argumento OleDbSchemaGuid que identifica quais informações de esquema para retornar (como tabelas, colunas e chaves primárias). O segundo argumento é uma matriz de objeto de restrições para filtrar as linhas que são retornadas no esquema de DataTable (por exemplo, você pode especificar as restrições de nome, tipo, proprietário e /or esquema da tabela).

back to the top

OleDbSchemaGuid membros

O argumento OleDbSchemaGuid Especifica o tipo do esquema da tabela para o método GetOleDbSchemaTable . Alguns dos membros OleDbSchemaGuid incluem o seguinte:
  • Colunas
  • Chaves externas
  • Índices
  • Chaves primárias
  • Tabelas
  • Modos de exibição
Para obter uma lista completa dos membros OleDbSchemaGuid , consulte o site "OleDbSchemaGuid membros" na seção References.

back to the top

Restrições

As restrições são uma matriz de objeto de valores de filtro, cada um dos quais corresponde a um DataColumn na DataTable resultante. O argumento OleDbSchemaGuid determina as restrições relevantes. Por exemplo, quando você especificar um OleDbSchemaGuid de tabelas, a matriz de restrições é da seguinte maneira:
{TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE}
Para rever as restrições disponíveis, clique em qualquer um dos membros OleDbSchemaGuid no seguinte site da Microsoft: Quando você passa valores na matriz de restrição, inclua a palavra-chave de Nulo Visual translation from VPE for Csharp .NET para elementos de matriz que não contêm valores. Por exemplo, se você desejar recuperar esquemas de tabela, use OleDbSchemaGuid.Tables . No entanto, se você especificar tabelas, isso também retornará aliases, sinônimos, modos de exibição e outros objetos relacionados. Assim, se você desejar filtrar todos os objetos, exceto tabelas, use uma restrição do TABLE para TABLE_TYPE. Você pode usar Nulo para TABLE_CATALOG TABLE_SCHEMA e TABLE_NAME porque você não está filtrando esses objetos:
schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,               new Object[] {null, null, null, "TABLE"});				
back to the top

DataTable retornada

A DataTable método GetOleDbSchemaTable retorna possui uma linha para cada objeto que atenda aos critérios de restrição e o tipo de OleDbSchemaGuid . A DataTable possui uma coluna para cada uma das colunas restrição, que é seguido por informações adicionais do esquema com base no campo OleDbSchemaGuid .

Por exemplo, quando você usa o código a seguir, cada linha na DataTable retornada é uma tabela de banco de dados:
schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,               new Object[] {null, null, null, "TABLE"});				
as colunas que são retornadas na DataTable são as colunas de restrição (TABLE_CATALOG TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE), que são seguidas pelas colunas adicionais do esquema de TABLE_GUID, descrição, TABLE_PROPID, DATE_CREATED e DATE_MODIFIED.

Para obter essa lista de nomes de coluna (ou seja, os campo descritores, como TABLE_CATALOG, TABLE_SCHEMA e TABLE_NAME), você pode usar a posição ordinal das colunas. Observe que a matriz de colunas é baseado em zero:
for (int i = 0; i < schemaTable.Columns.Count; i++) {   Console.WriteLine(schemaTable.Columns[i].ToString());}				
para obter os valores em cada coluna (ou seja, as tabela real nomes, como categorias, clientes e funcionários), você pode usar a posição ordinal em ItemArray da linha. Observe que o ItemArray é baseado em zero:
for (int i = 0; i < schemaTable.Rows.Count; i++) {   Console.WriteLine(schemaTable.Rows[i].ItemArray[2].ToString());}				
back to the top

Criar o exemplo que lista de tabelas em um banco de dados

O exemplo a seguir lista tabelas no SQL Server Northwind banco de dados.

OleDbSchemaGuid.Tables retorna essas tabelas (incluindo modos de exibição) que são acessíveis a um determinado logon. Se você especificar uma matriz de objeto de {nulo, nulo, nulo, "TABLE"}, você filtrar para incluir somente uma TABLE_TYPE de TABLE. Em seguida, você lista a tabela nome (TABLE_NAME) de cada linha na tabela de esquema retornado.
  1. Inicie o Visual Studio NET..
  2. Crie um novo projeto do Visual translation from VPE for Csharp Console Application. Class1.cs é adicionado para o projeto por padrão.
  3. 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;					
  4. Na janela código, cole o código a seguir para a função principal :
    OleDbConnection cn = new OleDbConnection();DataTable schemaTable;//Connect to the Northwind database in SQL Server.//Be sure to use an account that has permission to list tables.cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=<username>;                       Password=<strong password>;Initial Catalog=Northwind";cn.Open();//Retrieve schema information about tables.//Because tables include tables, views, and other objects,//restrict to just TABLE in the Object array of restrictions.schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,               new Object[] {null, null, null, "TABLE"});//List the table name from each row in the schema table.for (int i = 0; i < schemaTable.Rows.Count; i++) {   Console.WriteLine(schemaTable.Rows[i].ItemArray[2].ToString());}//Explicitly close - don't wait on garbage collection.cn.Close();//PauseConsole.ReadLine();					
  5. Modificar ConnectionString se conectar ao seu computador SQL Server com uma conta que tenha permissão para lista de tabelas no banco de dados Northwind.
  6. Pressione a tecla F5 para compilar e executar o projeto. Observe que as tabelas estão listadas na janela do console.
  7. Pressione ENTER para encerrar o aplicativo de console e retornar para o IDE (ambiente de desenvolvimento integrado).
back to the top

Criar o exemplo que recupera o esquema para uma tabela

O exemplo a seguir lista informações de esquema para os funcionários tabela no banco de dados Northwind do SQL Server.

OleDbSchemaGuid.Tables retorna essas tabelas (incluindo modos de exibição) que são acessíveis a um determinado logon. Se você especificar uma matriz de objeto de {nulo, nulo, "Funcionários", "TABLE"}, você pode filtrar para incluir somente uma tabela chamada Employees. Em seguida, você listar as informações de esquema para a tabela do esquema retornado.
  1. Crie um novo projeto do Visual translation from VPE for Csharp Console Application. Class1.cs é adicionado para o projeto 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 para a função principal :
    OleDbConnection cn = new OleDbConnection();DataTable schemaTable;//Connect to the Northwind database in SQL Server.//Be sure to use an account that has permission to retrieve table schema.cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=<username>;                      Password=<strong password>;Initial Catalog=Northwind";cn.Open();//Retrieve schema information about the Employees table.schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,               new Object[] {null, null, "Employees", "TABLE"});//List the schema info for the Employees table//in the format Field Descriptor : Field Value.for(int i = 0; i < schemaTable.Columns.Count; i++) {   Console.WriteLine(schemaTable.Columns[i].ToString() + " : " +                      schemaTable.Rows[0][i].ToString());}//Explicitly close - don't wait on garbage collection.cn.Close();//PauseConsole.ReadLine();					
  4. Modificar ConnectionString se conectar ao seu computador SQL Server com uma conta que tenha permissão para recuperar o esquema da tabela Funcionários.
  5. Pressione F5 para compilar e executar o projeto. Observe que as tabelas estão listadas na janela do console.
  6. Pressione ENTER para encerrar o aplicativo de console e retornar para o IDE.
back to the top

Criar o exemplo que lista colunas em uma tabela

A exemplo a seguir lista os nomes das colunas das funcionários tabela no banco de dados Northwind do SQL Server.

OleDbSchemaGuid.Columns retorna as colunas em tabelas e exibições que estão acessíveis para um determinado logon. Se você especificar uma matriz de objeto de {nulo, nulo nulo, "Funcionários"}, você filtrar para incluir somente as colunas da tabela Funcionários.
  1. Crie um novo projeto do Visual translation from VPE for Csharp Console Application. Class1.cs é adicionado para o projeto 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 para a função principal :
    OleDbConnection cn = new OleDbConnection();DataTable schemaTable;//Connect to the Northwind database in SQL Server.//Be sure to use an account that has permission to list the columns in the Employees table.cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=<username>;                       Password=<strong password>;Initial Catalog=Northwind";cn.Open();//Retrieve schema information about columns.//Restrict to just the Employees TABLE.schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,               new Object[] {null, null, "Employees", null});//List the column name from each row in the schema table.for (int i = 0; i < schemaTable.Rows.Count; i++) {   Console.WriteLine(schemaTable.Rows[i].ItemArray[3].ToString());}//Explicitly close - don't wait on garbage collection.cn.Close();//PauseConsole.ReadLine();					
  4. Modificar ConnectionString se conectar ao seu computador SQL Server com uma conta que tem permissão para lista de colunas na tabela Funcionários.
  5. Pressione F5 para compilar e executar o projeto. Observe que as colunas da tabela funcionários estão listadas na janela do console.
  6. Pressione ENTER para encerrar o aplicativo de console e retornar para o IDE.
back to the top

Criar o exemplo que listas de chaves primárias em uma tabela

As seguintes listas exemplo as chaves primárias de funcionários a tabela no SQL Server Northwind banco de dados e do funcionário da tabela no banco de dados Pubs do SQL Server.

OleDbSchemaGuid.Primary_Keys retorna as chaves primárias em um catálogo que são acessíveis a um determinado logon. Neste exemplo, OleDbConnection é para o SQL Server, mas não um banco de dados específico do SQL Server:
cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=<username>;                       Password=<strong password>;"				
em vez disso, esse código especifica os bancos de dados Northwind ou Pubs como TABLE_CATALOG na matriz de restrição. Esse código especifica o proprietário da tabela, "dbo", para a restrição TABLE_SCHEMA. Além disso, esse código especifica os nomes de tabela para a restrição TABLE_NAME.

Para obter a chave primária da tabela Funcionários no banco de dados Northwind, você use uma matriz de objeto de {"Northwind", "dbo", "Funcionários"}:
schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys,               new Object[] {"Northwind", "dbo", "Employees"});				
para obter a chave primária da tabela Funcionários no banco de dados Pubs, você usar uma matriz de objeto de {"pubs", "dbo", "Funcionário"}:
schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys,               new Object[] {"Pubs", "dbo", "Employee"});				
para criar o exemplo, execute estas etapas:
  1. Crie um novo projeto do Visual translation from VPE for Csharp Console Application. Class1.cs é adicionado para o projeto 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 para a função principal :
    OleDbConnection cn = new OleDbConnection();DataTable schemaTable;//Connect to SQL Server.//Be sure to use an account that has permissions to list primary keys//in both the Northwind and Pubs databases.cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=<username>;                       Password=<strong password>;";cn.Open();//Retrieve schema information about primary keys.//Restrict to just the Employees TABLE in the Northwind CATALOG.schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys,               new Object[] {"Northwind", "dbo", "Employees"});//List the primary key for the first row in the schema table.//The first three items in the ItemArray in the row are catalog, schema, and table.//The fourth item is the primary key.Console.WriteLine(schemaTable.Rows[0].ItemArray[3].ToString());//Retrieve primary key for the Employee TABLE in the Pubs CATALOG.schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys,               new Object[] {"Pubs", "dbo", "Employee"});//List the primary key for the first row in the schema table.Console.WriteLine(schemaTable.Rows[0].ItemArray[3].ToString());//Explicitly close - don't wait on garbage collection.cn.Close();//PauseConsole.ReadLine();					
  4. Modificar ConnectionString se conectar ao seu computador SQL Server com uma conta que tenha permissões suficientes para listar as chaves primárias.
  5. Pressione F5 para compilar e executar o projeto. Observe que as chaves primárias da tabela Funcionários no banco de dados Northwind e da tabela Funcionários no banco de dados Pubs estão listadas no console de janela.
  6. Pressione ENTER para encerrar o aplicativo de console e retornar para o IDE.
back to the top
Referências
Para obter uma lista completa dos membros OleDbSchemaGuid , consulte o tópico seguinte no Microsoft .NET documentação Framework Software Development Kit (SDK). Para obter uma lista de restrições disponíveis, clique em qualquer um dos membros OleDbSchemaGuid : Para obter mais informações, consulte os seguintes tópicos no .NET Framework SDK documentação: back to the top

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 309681 - Última Revisão: 07/01/2004 17:45:17 - Revisão: 3.4

Microsoft ADO.NET (included with the .NET Framework), Microsoft ADO.NET 1.1, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft Visual C# .NET 2003 Standard Edition

  • kbmt kbhowtomaster kbsystemdata KB309681 KbMtpt
Comentários