DbDataAdapter.FillSchema Método

Definição

Adiciona a DataTable a DataSet e configura o esquema para corresponder ao da fonte de dados.

Sobrecargas

Name Description
FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior)

Adiciona a DataTable ao especificado DataSet e configura o esquema para corresponder ao da fonte de dados com base no especificado SchemaType.

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

Configura o esquema do especificado DataTable com base no especificado SchemaType, cadeia de comandos e CommandBehavior valores.

FillSchema(DataSet, SchemaType, String)

Adiciona a DataTable ao especificado DataSet e configura o esquema para corresponder ao da fonte de dados com base no especificado SchemaType e DataTable.

FillSchema(DataTable, SchemaType)

Configura o esquema do especificado DataTable com base no especificado SchemaType.

FillSchema(DataSet, SchemaType)

Adiciona uma DataTable "Tabela" nomeada ao especificado DataSet e configura o esquema para corresponder ao da fonte de dados com base no especificado SchemaType.

FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior)

Adiciona a DataTable ao especificado DataSet e configura o esquema para corresponder ao da fonte de dados com base no especificado SchemaType.

protected:
 virtual cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType, System::Data::IDbCommand ^ command, System::String ^ srcTable, System::Data::CommandBehavior behavior);
protected virtual System.Data.DataTable[] FillSchema(System.Data.DataSet dataSet, System.Data.SchemaType schemaType, System.Data.IDbCommand command, string srcTable, System.Data.CommandBehavior behavior);
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * System.Data.IDbCommand * string * System.Data.CommandBehavior -> System.Data.DataTable[]
Protected Overridable Function FillSchema (dataSet As DataSet, schemaType As SchemaType, command As IDbCommand, srcTable As String, behavior As CommandBehavior) As DataTable()

Parâmetros

dataSet
DataSet

O DataSet que deve ser preenchido com o esquema da fonte de dados.

schemaType
SchemaType

Um dos SchemaType valores.

command
IDbCommand

A instrução SQL SELECT usada para recuperar linhas da fonte de dados.

srcTable
String

O nome da tabela fonte a usar para mapeamento de tabelas.

behavior
CommandBehavior

Um dos CommandBehavior valores.

Devoluções

Um array de DataTable objetos que contêm informação do esquema devolvida da fonte de dados.

Observações

O FillSchema método recupera o esquema da fonte de dados usando o SelectCommand. O objeto de ligação associado ao SelectCommand deve ser válido, mas não precisa de ser aberto. Se a ligação for fechada antes FillSchema de ser chamada, é aberta para recuperar dados e depois fechada. Se a ligação estiver aberta antes FillSchema de ser chamada, permanece aberta.

Uma FillSchema operação adiciona a DataTable ao destino DataSet. Depois, adiciona colunas ao DataColumnCollection de DataTable, e configura as seguintes DataColumn propriedades se existirem na fonte de dados:

FillSchema também configura as PrimaryKey propriedades e Constraints de acordo com as seguintes regras:

  • Se uma ou mais colunas de chave primárias forem devolvidas pelo SelectCommand, elas são usadas como colunas de chave primárias para o DataTable.

  • Se não forem devolvidas colunas de chave primárias mas colunas únicas forem, as colunas únicas são usadas como chave primária se, e só se, todas as colunas únicas forem não anuláveis. Se alguma das colunas for anulável, a UniqueConstraint é adicionado ao ConstraintCollection, mas a PrimaryKey propriedade não é definida.

  • Se forem retornadas tanto as colunas chave primárias como as colunas únicas, as colunas principais primárias são usadas como as colunas principais primárias para o DataTable.

Note-se que as chaves primárias e as restrições únicas são adicionadas ao ConstraintCollection de acordo com as regras anteriores, mas outros tipos de restrições não são adicionados.

Se um único índice clusterizado for definido numa coluna ou colunas numa tabela SQL Server e a restrição principal da chave for definida num conjunto separado de colunas, então os nomes das colunas no índice clusterizado serão devolvidos. Para devolver o nome ou nomes das colunas de chave primária, use uma dica de consulta com a instrução SELECT que especifica o nome do índice de chave primária. Para mais informações sobre especificação de dicas de consulta, veja Dicas (Transact-SQL) - Consulta.

Se encontrar IDataAdapter colunas duplicadas ao preencher um DataTable, gera nomes para as colunas seguintes, usando o padrão "nome da coluna1", "nome da coluna2", "nome da coluna3", e assim sucessivamente. Se os dados recebidos contêm colunas sem nome, são colocadas segundo DataSet o padrão "Coluna 1", "Coluna 2", e assim sucessivamente. Quando vários conjuntos de resultados são adicionados, DataSet cada conjunto de resultados é colocado numa tabela separada. Conjuntos de resultados adicionais são nomeados adicionando valores integrais ao nome da tabela especificado (por exemplo, "Table", "Table1", "Table2", entre outros). Se a sua aplicação usar nomes de colunas e tabelas, certifique-se de que não há conflitos com esses padrões de nomenclatura.

O FillSchema método suporta cenários em que contém DataSet múltiplos DataTable objetos cujos nomes diferem apenas consoante o caso. Nessas situações, FillSchema realiza uma comparação sensível a maiúsculos e minúsculos para encontrar a tabela correspondente, criando uma nova tabela se não existir correspondência exata. O seguinte código C# ilustra este comportamento.

DataSet dataset = new DataSet();
dataset.Tables.Add("aaa");
dataset.Tables.Add("AAA");
adapter.FillSchema(dataset, "aaa"); // Fills the schema of "aaa", which already exists in the DataSet.
adapter.FillSchema(dataset, "Aaa"); // Adds a new table called "Aaa".

Se FillSchema for chamado e o DataSet contiver apenas um DataTable cujo nome difere apenas por caso, esse DataTable é atualizado. Neste cenário, a comparação não distingue minúsculas e maiúsculas. O seguinte código C# ilustra este comportamento.

DataSet dataset = new DataSet();
dataset.Tables.Add("aaa");
adapter.FillSchema(dataset, "AAA"); // Fills the schema of table "aaa" because only one similarly named table is in the DataSet.

FillSchema não devolve nenhuma linha. Use o Fill método para adicionar linhas a um DataTable.

Note

Ao lidar com instruções SQL em lote que retornam múltiplos resultados, a implementação de FillSchema para o .NET Framework Data Provider para OLE DB recupera informação de esquema apenas para o primeiro resultado. Para obter informação de esquema para múltiplos resultados, use Fill com o MissingSchemaAction conjunto para AddWithKey.

Ao usar FillSchema, o .NET Framework Data Provider for SQL Server acrescenta uma cláusula FOR BROWSE à instrução que está a ser executada. O utilizador deve estar atento a potenciais efeitos secundários, como interferência com o uso das instruções SET FMTONLY ON. Para obter mais informações, consulte SET FMTONLY (Transact-SQL).

Notas para Herdeiros

Esta implementação do método FillSchema(DataSet, SchemaType) está protegida e foi concebida para utilização por um fornecedor de dados .NET Framework.

Ver também

Aplica-se a

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

Configura o esquema do especificado DataTable com base no especificado SchemaType, cadeia de comandos e CommandBehavior valores.

protected:
 virtual System::Data::DataTable ^ FillSchema(System::Data::DataTable ^ dataTable, System::Data::SchemaType schemaType, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual System.Data.DataTable FillSchema(System.Data.DataTable dataTable, System.Data.SchemaType schemaType, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType * System.Data.IDbCommand * System.Data.CommandBehavior -> System.Data.DataTable
Protected Overridable Function FillSchema (dataTable As DataTable, schemaType As SchemaType, command As IDbCommand, behavior As CommandBehavior) As DataTable

Parâmetros

dataTable
DataTable

O DataTable que deve ser preenchido com o esquema da fonte de dados.

schemaType
SchemaType

Um dos SchemaType valores.

command
IDbCommand

A instrução SQL SELECT usada para recuperar linhas da fonte de dados.

behavior
CommandBehavior

Um dos CommandBehavior valores.

Devoluções

Um objeto de DataTable que contém informação do esquema devolvida da fonte de dados.

Observações

O FillSchema método recupera o esquema da fonte de dados usando o SelectCommand. O objeto de ligação associado ao SelectCommand deve ser válido, mas não precisa de ser aberto. Se a ligação for fechada antes FillSchema de ser chamada, é aberta para recuperar dados e depois fechada. Se a ligação estiver aberta antes FillSchema de ser chamada, permanece aberta.

Uma FillSchema operação adiciona a DataTable ao destino DataSet. Depois, adiciona colunas ao DataColumnCollection de DataTable, e configura as seguintes DataColumn propriedades se existirem na fonte de dados:

FillSchema também configura as PrimaryKey propriedades e Constraints de acordo com as seguintes regras:

  • Se uma ou mais colunas de chave primárias forem devolvidas pelo SelectCommand, elas são usadas como colunas de chave primárias para o DataTable.

  • Se não forem devolvidas colunas de chave primárias mas colunas únicas forem, as colunas únicas são usadas como chave primária se, e só se, todas as colunas únicas forem não anuláveis. Se alguma das colunas for anulável, a UniqueConstraint é adicionado ao ConstraintCollection, mas a PrimaryKey propriedade não é definida.

  • Se forem retornadas tanto as colunas chave primárias como as colunas únicas, as colunas principais primárias são usadas como as colunas principais primárias para o DataTable.

Note-se que as chaves primárias e as restrições únicas são adicionadas ao ConstraintCollection de acordo com as regras anteriores, mas outros tipos de restrições não são adicionados.

Se um único índice clusterizado for definido numa coluna ou colunas numa tabela SQL Server e a restrição principal da chave for definida num conjunto separado de colunas, então os nomes das colunas no índice clusterizado serão devolvidos. Para devolver o nome ou nomes das colunas de chave primária, use uma dica de consulta com a instrução SELECT que especifica o nome do índice de chave primária. Para mais informações sobre especificação de dicas de consulta, veja Dicas (Transact-SQL) - Consulta.

Se encontrar IDataAdapter colunas duplicadas ao preencher um DataTable, gera nomes para as colunas seguintes, usando o padrão "nome da coluna1", "nome da coluna2", "nome da coluna3", e assim sucessivamente. Se os dados recebidos contêm colunas sem nome, são colocadas segundo DataSet o padrão "Coluna 1", "Coluna 2", e assim sucessivamente. Quando vários conjuntos de resultados são adicionados, DataSet cada conjunto de resultados é colocado numa tabela separada. Conjuntos de resultados adicionais são nomeados adicionando valores integrais ao nome da tabela especificado (por exemplo, "Table", "Table1", "Table2", entre outros). Se a sua aplicação usar nomes de colunas e tabelas, certifique-se de que não há conflitos com esses padrões de nomenclatura.

FillSchema não devolve nenhuma linha. Use o Fill método para adicionar linhas a um DataTable.

Note

Ao lidar com instruções SQL em lote que retornam múltiplos resultados, a implementação de FillSchema para o .NET Framework Data Provider para OLE DB recupera informação de esquema apenas para o primeiro resultado. Para obter informação de esquema para múltiplos resultados, use Fill com o MissingSchemaAction conjunto para AddWithKey.

Ao usar FillSchema, o .NET Framework Data Provider for SQL Server acrescenta uma cláusula FOR BROWSE à instrução que está a ser executada. O utilizador deve estar atento a potenciais efeitos secundários, como interferência com o uso das instruções SET FMTONLY ON. Para obter mais informações, consulte SET FMTONLY (Transact-SQL).

Notas para Herdeiros

Esta implementação do método FillSchema(DataSet, SchemaType) está protegida e foi concebida para utilização por um fornecedor de dados .NET Framework.

Ver também

Aplica-se a

FillSchema(DataSet, SchemaType, String)

Adiciona a DataTable ao especificado DataSet e configura o esquema para corresponder ao da fonte de dados com base no especificado SchemaType e DataTable.

public:
 cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType, System::String ^ srcTable);
public System.Data.DataTable[] FillSchema(System.Data.DataSet dataSet, System.Data.SchemaType schemaType, string srcTable);
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * string -> System.Data.DataTable[]
Public Function FillSchema (dataSet As DataSet, schemaType As SchemaType, srcTable As String) As DataTable()

Parâmetros

dataSet
DataSet

A DataSet para inserir o esquema.

schemaType
SchemaType

Um dos SchemaType valores que especifica como inserir o esquema.

srcTable
String

O nome da tabela fonte a usar para mapeamento de tabelas.

Devoluções

Uma referência a uma coleção de DataTable objetos que foram adicionados ao DataSet.

Exceções

Não foi possível encontrar uma tabela fonte de onde obter o esquema.

Exemplos

O exemplo seguinte usa a classe derivada, SqlDataAdapter, para preencher a DataSet com o esquema, e devolve um DataSet.

public static DataSet GetCustomerData(string dataSetName,
    string connectionString)
{
    DataSet dataSet = new DataSet(dataSetName);

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter(
            "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", connection);

        DataTableMapping mapping = adapter.TableMappings.Add("Table", "Customers");
        mapping.ColumnMappings.Add("CompanyName", "Name");
        mapping.ColumnMappings.Add("ContactName", "Contact");

        connection.Open();

        adapter.FillSchema(dataSet, SchemaType.Source, "Customers");
        adapter.Fill(dataSet);

        return dataSet;
    }
}
Private Function GetCustomerData(ByVal dataSetName As String, _
    ByVal connectionString As String) As DataSet

    Dim dataSet As New DataSet(dataSetName)

    Using connection As SqlConnection = New SqlConnection(connectionString)

        Dim adapter As New SqlDataAdapter( _
           "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", _
           connection)

        Dim mapping As DataTableMapping = adapter.TableMappings.Add( _
           "Table", "Customers")
        mapping.ColumnMappings.Add("CompanyName", "Name")
        mapping.ColumnMappings.Add("ContactName", "Contact")

        connection.Open()

        adapter.FillSchema(dataSet, SchemaType.Source, "Customers")
        adapter.Fill(dataSet)
        Return dataSet
    End Using
End Function

Observações

Este método recupera a informação do esquema da fonte de dados usando o SelectCommand.

Uma FillSchema operação adiciona a DataTable ao destino DataSet. Depois, adiciona colunas ao DataColumnCollection de DataTable, e configura as seguintes DataColumn propriedades se existirem na fonte de dados:

FillSchema também configura as PrimaryKey propriedades e Constraints de acordo com as seguintes regras:

  • Se uma ou mais colunas de chave primárias forem devolvidas pelo SelectCommand, elas são usadas como colunas de chave primárias para o DataTable.

  • Se não forem devolvidas colunas de chave primárias mas colunas únicas forem, as colunas únicas são usadas como chave primária se, e só se, todas as colunas únicas forem não anuláveis. Se alguma das colunas for anulável, a UniqueConstraint é adicionado ao ConstraintCollection, mas a PrimaryKey propriedade não é definida.

  • Se forem retornadas tanto as colunas chave primárias como as colunas únicas, as colunas principais primárias são usadas como as colunas principais primárias para o DataTable.

Note-se que as chaves primárias e as restrições únicas são adicionadas ao ConstraintCollection de acordo com as regras anteriores, mas outros tipos de restrições não são adicionados.

Se um único índice clusterizado for definido numa coluna ou colunas numa tabela SQL Server e a restrição principal da chave for definida num conjunto separado de colunas, então os nomes das colunas no índice clusterizado serão devolvidos. Para devolver o nome ou nomes das colunas de chave primária, use uma dica de consulta com a instrução SELECT que especifica o nome do índice de chave primária. Para mais informações sobre especificação de dicas de consulta, veja Dicas (Transact-SQL) - Consulta.

A informação da chave primária é usada durante Fill o processo para encontrar e substituir quaisquer linhas cujas colunas chave coincidam. Se este não for o comportamento desejado, use Fill sem pedir informação do esquema.

Se encontrar DbDataAdapter colunas duplicadas ao preencher um DataTable, gera nomes para as colunas seguintes, usando o padrão "nome da coluna1", "nome da coluna2", "nome da coluna3", e assim sucessivamente. Se os dados recebidos contêm colunas sem nome, são colocadas segundo DataSet o padrão "Coluna 1", "Coluna 2", e assim sucessivamente. Quando vários conjuntos de resultados são adicionados, DataSet cada conjunto de resultados é colocado numa tabela separada. Conjuntos de resultados adicionais são nomeados adicionando valores integrais ao nome da tabela especificado (por exemplo, "Table", "Table1", "Table2", entre outros). Se a sua aplicação usar nomes de colunas e tabelas, certifique-se de que não há conflitos com esses padrões de nomenclatura.

O FillSchema método suporta cenários em que contém DataSet múltiplos DataTable objetos cujos nomes diferem apenas consoante o caso. Nessas situações, FillSchema realiza uma comparação sensível a maiúsculos e minúsculos para encontrar a tabela correspondente, criando uma nova tabela se não existir correspondência exata. O seguinte código C# ilustra este comportamento.

DataSet dataset = new DataSet();
dataset.Tables.Add("aaa");
dataset.Tables.Add("AAA");
adapter.FillSchema(dataset, "aaa"); // Fills the schema of "aaa", which already exists in the DataSet.
adapter.FillSchema(dataset, "Aaa"); // Adds a new table called "Aaa".

Se FillSchema for chamado e o DataSet contiver apenas um DataTable cujo nome difere apenas por caso, esse DataTable é atualizado. Neste cenário, a comparação não distingue minúsculas e maiúsculas. O seguinte código C# ilustra este comportamento.

DataSet dataset = new DataSet();
dataset.Tables.Add("aaa");
adapter.FillSchema(dataset, "AAA"); // Fills the schema of table "aaa" because only one similarly named table is in the DataSet.

O IDbConnection objeto associado ao comando select deve ser válido, mas não precisa de ser aberto. Se o IDbConnection for fechado antes FillSchema de ser chamado, é aberto para recuperar os dados, e depois fechado. Se a ligação estiver aberta antes FillSchema de ser chamada, fica aberta.

Note

Ao lidar com instruções SQL em lote que retornam múltiplos resultados, a implementação de FillSchema para o .NET Framework Data Provider para OLE DB recupera informação de esquema apenas para o primeiro resultado. Para obter informação de esquema para múltiplos resultados, use Fill com o MissingSchemaAction conjunto para AddWithKey.

Ao usar FillSchema, o .NET Framework Data Provider for SQL Server acrescenta uma cláusula FOR BROWSE à instrução que está a ser executada. O utilizador deve estar atento a potenciais efeitos secundários, como interferência com o uso das instruções SET FMTONLY ON. Para obter mais informações, consulte SET FMTONLY (Transact-SQL).

Ver também

Aplica-se a

FillSchema(DataTable, SchemaType)

Configura o esquema do especificado DataTable com base no especificado SchemaType.

public:
 System::Data::DataTable ^ FillSchema(System::Data::DataTable ^ dataTable, System::Data::SchemaType schemaType);
public System.Data.DataTable FillSchema(System.Data.DataTable dataTable, System.Data.SchemaType schemaType);
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType -> System.Data.DataTable
Public Function FillSchema (dataTable As DataTable, schemaType As SchemaType) As DataTable

Parâmetros

dataTable
DataTable

O DataTable que deve ser preenchido com o esquema da fonte de dados.

schemaType
SchemaType

Um dos SchemaType valores.

Devoluções

A DataTable que contém informação do esquema devolvida da fonte de dados.

Exemplos

O exemplo seguinte usa a classe derivada, SqlDataAdapter, para preencher a DataSet com o esquema, e devolve um DataTable.

public static DataTable GetCustomerData(string dataSetName,
    string connectionString)
{
    DataTable table = new DataTable(dataSetName);

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter(
            "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", connection);

        DataTableMapping mapping = adapter.TableMappings.Add("Table", "Customers");
        mapping.ColumnMappings.Add("CompanyName", "Name");
        mapping.ColumnMappings.Add("ContactName", "Contact");

        connection.Open();

        adapter.FillSchema(table, SchemaType.Mapped);
        adapter.Fill(table);
        return table;
    }
}
Private Function GetCustomerData(ByVal dataTableName As String, _
    ByVal connectionString As String) As DataTable

    Dim table As New DataTable(dataTableName)

    Using connection As SqlConnection = New SqlConnection(connectionString)

        Dim adapter New SqlDataAdapter( _
           "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", _
           connection)

        Dim mapping As DataTableMapping = adapter.TableMappings.Add( _
           "Table", "Customers")
        mapping.ColumnMappings.Add("CompanyName", "Name")
        mapping.ColumnMappings.Add("ContactName", "Contact")

        connection.Open()

        adapter.FillSchema(table, SchemaType.Mapped)
        adapter.Fill(table)
        Return table
    End Using
End Function

Observações

O FillSchema método recupera o esquema da fonte de dados usando o SelectCommand. O objeto de ligação associado ao SelectCommand deve ser válido, mas não precisa de ser aberto. Se a ligação for fechada antes FillSchema de ser chamada, é aberta para recuperar dados e depois fechada. Se a ligação estiver aberta antes FillSchema de ser chamada, permanece aberta.

Uma FillSchema operação devolve um DataTable. Depois, adiciona colunas ao DataColumnCollection de DataTable, e configura as seguintes DataColumn propriedades se existirem na fonte de dados:

FillSchema também configura as PrimaryKey propriedades e Constraints de acordo com as seguintes regras:

  • Se a PrimaryKey já foi definido para o DataTable, ou o DataTable contém dados, a PrimaryKey propriedade não será definida.

  • Se uma ou mais colunas de chave primárias forem devolvidas pelo SelectCommand, elas são usadas como colunas de chave primárias para o DataTable.

  • Se não forem devolvidas colunas de chave primárias mas colunas únicas forem, as colunas únicas são usadas como chave primária se, e só se, todas as colunas únicas forem não anuláveis. Se alguma das colunas for anulável, a UniqueConstraint é adicionado ao ConstraintCollection, mas a PrimaryKey propriedade não é definida.

  • Se forem retornadas tanto as colunas chave primárias como as colunas únicas, as colunas principais primárias são usadas como as colunas principais primárias para o DataTable.

Note-se que as chaves primárias e as restrições únicas são adicionadas ao ConstraintCollection de acordo com as regras anteriores, mas outros tipos de restrições não são adicionados. Este processo pode exigir várias idas e voltas ao servidor.

Se um único índice clusterizado for definido numa coluna ou colunas numa tabela SQL Server e a restrição principal da chave for definida num conjunto separado de colunas, então os nomes das colunas no índice clusterizado serão devolvidos. Para devolver o nome ou nomes das colunas de chave primária, use uma dica de consulta com a instrução SELECT que especifica o nome do índice de chave primária. Para mais informações sobre especificação de dicas de consulta, veja Dicas (Transact-SQL) - Consulta.

Se encontrar DbDataAdapter colunas duplicadas ao preencher um DataTable, gera nomes para as colunas seguintes, usando o padrão "nome da coluna1", "nome da coluna2", "nome da coluna3", e assim sucessivamente. Se os dados recebidos contêm colunas sem nome, são colocadas segundo DataSet o padrão "Coluna 1", "Coluna 2", e assim sucessivamente. Quando vários conjuntos de resultados são adicionados, DataSet cada conjunto de resultados é colocado numa tabela separada. Conjuntos de resultados adicionais são nomeados adicionando valores integrais ao nome da tabela especificado (por exemplo, "Table", "Table1", "Table2", entre outros). Se a sua aplicação usar nomes de colunas e tabelas, certifique-se de que não há conflitos com esses padrões de nomenclatura.

FillSchema não devolve nenhuma linha. Use o Fill método para adicionar linhas a um DataTable.

Note

Ao lidar com instruções SQL em lote que retornam múltiplos resultados, a implementação de FillSchema para o .NET Framework Data Provider para OLE DB recupera informação de esquema apenas para o primeiro resultado. Para obter informação de esquema para múltiplos resultados, use Fill com o MissingSchemaAction conjunto para AddWithKey.

Ao usar FillSchema, o .NET Framework Data Provider for SQL Server acrescenta uma cláusula FOR BROWSE à instrução que está a ser executada. O utilizador deve estar atento a potenciais efeitos secundários, como interferência com o uso das instruções SET FMTONLY ON. Para obter mais informações, consulte SET FMTONLY (Transact-SQL).

Ver também

Aplica-se a

FillSchema(DataSet, SchemaType)

Adiciona uma DataTable "Tabela" nomeada ao especificado DataSet e configura o esquema para corresponder ao da fonte de dados com base no especificado SchemaType.

public:
 override cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType);
public override System.Data.DataTable[] FillSchema(System.Data.DataSet dataSet, System.Data.SchemaType schemaType);
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType -> System.Data.DataTable[]
Public Overrides Function FillSchema (dataSet As DataSet, schemaType As SchemaType) As DataTable()

Parâmetros

dataSet
DataSet

A DataSet para inserir o esquema.

schemaType
SchemaType

Um dos SchemaType valores que especifica como inserir o esquema.

Devoluções

Uma referência a uma coleção de DataTable objetos que foram adicionados ao DataSet.

Implementações

Exemplos

O exemplo seguinte usa a classe derivada, SqlDataAdapter, para preencher a DataSet com o esquema, e devolve um DataSet.

public static DataSet GetCustomerData(string dataSetName,
    string connectionString)
{
    DataSet dataSet = new DataSet(dataSetName);

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter(
            "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", connection);

        DataTableMapping mapping = adapter.TableMappings.Add("Table", "Customers");
        mapping.ColumnMappings.Add("CompanyName", "Name");
        mapping.ColumnMappings.Add("ContactName", "Contact");

        connection.Open();

        adapter.FillSchema(dataSet, SchemaType.Mapped);
        adapter.Fill(dataSet);

        return dataSet;
    }
}
Private Function GetCustomerData(ByVal dataSetName As String, _
    ByVal connectionString As String) As DataSet

    Dim dataSet As New DataSet(dataSetName)

    Using connection As SqlConnection = New SqlConnection(connectionString)
        Dim adapter As New SqlDataAdapter( _
           "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", _
           connection)

        Dim mapping As DataTableMapping = adapter.TableMappings.Add( _
           "Table", "Customers")
        mapping.ColumnMappings.Add("CompanyName", "Name")
        mapping.ColumnMappings.Add("ContactName", "Contact")

        connection.Open()

        adapter.FillSchema(dataSet, SchemaType.Mapped)
        adapter.Fill(dataSet)
        Return dataSet
    End Using
End Function

Observações

Este método recupera a informação do esquema da fonte de dados usando o SelectCommand.

Uma FillSchema operação adiciona a DataTable ao destino DataSet. Depois, adiciona colunas ao DataColumnCollection de DataTable, e configura as seguintes DataColumn propriedades se existirem na fonte de dados:

FillSchema também configura as PrimaryKey propriedades e Constraints de acordo com as seguintes regras:

  • Se uma ou mais colunas de chave primárias forem devolvidas pelo SelectCommand, elas são usadas como colunas de chave primárias para o DataTable.

  • Se não forem devolvidas colunas de chave primárias mas colunas únicas forem, as colunas únicas são usadas como chave primária se, e só se, todas as colunas únicas forem não anuláveis. Se alguma das colunas for anulável, a UniqueConstraint é adicionado ao ConstraintCollection, mas a PrimaryKey propriedade não é definida.

  • Se forem retornadas tanto as colunas chave primárias como as colunas únicas, as colunas principais primárias são usadas como as colunas principais primárias para o DataTable.

Note-se que as chaves primárias e as restrições únicas são adicionadas ao ConstraintCollection de acordo com as regras anteriores, mas outros tipos de restrições não são adicionados.

Se um único índice clusterizado for definido numa coluna ou colunas numa tabela SQL Server e a restrição principal da chave for definida num conjunto separado de colunas, então os nomes das colunas no índice clusterizado serão devolvidos. Para devolver o nome ou nomes das colunas de chave primária, use uma dica de consulta com a instrução SELECT que especifica o nome do índice de chave primária. Para mais informações sobre especificação de dicas de consulta, veja Dicas (Transact-SQL) - Consulta.

A informação da chave primária é usada durante Fill o processo para encontrar e substituir quaisquer linhas cujas colunas chave coincidam. Se este não for o comportamento desejado, use Fill sem pedir informação do esquema.

Se encontrar IDataAdapter colunas duplicadas ao preencher um DataTable, gera nomes para as colunas seguintes, usando o padrão "nome da coluna1", "nome da coluna2", "nome da coluna3", e assim sucessivamente. Se os dados recebidos contêm colunas sem nome, são colocadas segundo DataSet o padrão "Coluna 1", "Coluna 2", e assim sucessivamente. Quando vários conjuntos de resultados são adicionados, DataSet cada conjunto de resultados é colocado numa tabela separada. Conjuntos de resultados adicionais são nomeados adicionando valores integrais ao nome da tabela especificado (por exemplo, "Table", "Table1", "Table2", entre outros). Se a sua aplicação usar nomes de colunas e tabelas, certifique-se de que não há conflitos com esses padrões de nomenclatura.

O IDbConnection objeto associado ao comando select deve ser válido, mas não precisa de ser aberto. Se o IDbConnection for fechado antes FillSchema de ser chamado, é aberto para recuperar os dados, e depois fechado. Se a ligação estiver aberta antes FillSchema de ser chamada, fica aberta.

Note

Ao lidar com instruções SQL em lote que retornam múltiplos resultados, a implementação de FillSchema para o .NET Framework Data Provider para OLE DB recupera informação de esquema apenas para o primeiro resultado. Para obter informação de esquema para múltiplos resultados, use Fill com o MissingSchemaAction conjunto para AddWithKey.

Ao usar FillSchema, o .NET Framework Data Provider for SQL Server acrescenta uma cláusula FOR BROWSE à instrução que está a ser executada. O utilizador deve estar atento a potenciais efeitos secundários, como interferência com o uso das instruções SET FMTONLY ON. Para obter mais informações, consulte SET FMTONLY (Transact-SQL).

Ver também

Aplica-se a