Compartilhar via


DbDataAdapter.FillSchema Método

Definição

Adiciona um DataTable a um DataSet e configura o esquema para corresponder ao existente na fonte de dados.

Sobrecargas

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

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

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

Configura o esquema do DataTable especificado com base no SchemaType, na cadeia de caracteres de comando e nos valores CommandBehavior especificados.

FillSchema(DataSet, SchemaType, String)

Adiciona um DataTable ao DataSet especificado e configura o esquema para corresponder à fonte de dados com base nos SchemaType e DataTable especificados.

FillSchema(DataTable, SchemaType)

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

FillSchema(DataSet, SchemaType)

Adiciona um DataTable com o nome “Tabela” ao DataSet especificado e configura o esquema para corresponder a eles na fonte de dados com base no SchemaType especificado.

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

Origem:
DbDataAdapter.cs
Origem:
DbDataAdapter.cs
Origem:
DbDataAdapter.cs

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

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 a ser preenchido com o esquema da fonte de dados.

schemaType
SchemaType

Um dos valores de SchemaType.

command
IDbCommand

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

srcTable
String

O nome da tabela de origem a ser usado para mapeamento de tabela.

behavior
CommandBehavior

Um dos valores de CommandBehavior.

Retornos

Uma matriz de objetos DataTable que contém informações de esquema retornadas da fonte de dados.

Comentários

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

Uma FillSchema operação adiciona um DataTable ao de destino DataSet. Em seguida, ele adiciona colunas ao DataColumnCollection do DataTablee configura as seguintes DataColumn propriedades se elas existirem na fonte de dados:

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

  • Caso uma ou mais colunas de chave primária sejam retornadas pelo SelectCommand, elas são usadas como colunas de chave primária para o DataTable.

  • Se nenhuma coluna de chave primária for retornada, mas forem colunas exclusivas, as colunas exclusivas serão usadas como a chave primária se, e somente se, todas as colunas exclusivas não forem anuláveis. Caso qualquer uma das colunas seja anulável, um UniqueConstraint é adicionado ao ConstraintCollection, mas a propriedade PrimaryKey não é definida.

  • Caso as colunas de chave primária e as colunas exclusivas sejam retornadas, as colunas de chave primária são usadas como as colunas de chave primária para o DataTable.

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

Se um índice agrupado exclusivo estiver definido em colunas em uma tabela do SQL Server e a restrição de chave primária estiver definida em um conjunto de colunas separado, os nomes das colunas no índice agrupado serão retornados. Para retornar o nome ou os 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 obter mais informações sobre como especificar dicas de consulta, consulte Dicas (Transact-SQL) – Consulta.

Se o IDataAdapter encontrar colunas duplicadas ao preencher um DataTable, ele gerará nomes para as colunas subsequentes, usando o padrão "columnname1", "columnname2", "columnname3" e assim por diante. Se os dados de entrada contiverem colunas sem nome, eles serão colocados no DataSet de acordo com o padrão "Column1", "Column2" e assim por diante. Quando vários conjuntos de resultados são adicionados a DataSet cada conjunto de resultados é colocado em uma tabela separada. Conjuntos de resultados adicionais são nomeados acrescentando valores integrais ao nome da tabela especificado (por exemplo, "Tabela", "Tabela1", "Tabela2" e assim por diante).). Se o aplicativo usar nomes de coluna e tabela, verifique se não há conflitos com esses padrões de nomenclatura.

O FillSchema método dá suporte a cenários em que o DataSet contém vários DataTable objetos cujos nomes diferem apenas por caso. Nessas situações, FillSchema executa uma comparação que diferencia maiúsculas de minúsculas para localizar a tabela correspondente e cria uma nova tabela se não houver correspondência exata. O código C# a seguir ilustra esse 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, isso DataTable será atualizado. Nesse cenário, a comparação não diferencia maiúsculas de minúsculas. O código C# a seguir ilustra esse 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 retorna nenhuma linha. Use o Fill método para adicionar linhas a um DataTable.

Observação

Ao manipular instruções SQL em lote que retornam vários resultados, a implementação de para o provedor de FillSchema dados .NET Framework para OLE DB recupera informações de esquema apenas para o primeiro resultado. Para recuperar informações de esquema para vários resultados, use Fill com o MissingSchemaAction definido AddWithKeycomo .

Ao usar FillSchema, o Provedor de Dados .NET Framework para SQL Server acrescenta uma cláusula FOR BROWSE à instrução executada. O usuário deve estar ciente de efeitos colaterais potenciais, como interferência no uso de instruções SET FMTONLY ON. Para obter mais informações, confira SET FMTONLY (Transact-SQL).

Notas aos Herdeiros

Essa implementação do FillSchema(DataSet, SchemaType) método é protegida e projetada para uso por um provedor de dados .NET Framework.

Confira também

Aplica-se a

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

Origem:
DbDataAdapter.cs
Origem:
DbDataAdapter.cs
Origem:
DbDataAdapter.cs

Configura o esquema do DataTable especificado com base no SchemaType, na cadeia de caracteres de comando e nos valores CommandBehavior especificados.

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);
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 a ser preenchido com o esquema da fonte de dados.

schemaType
SchemaType

Um dos valores de SchemaType.

command
IDbCommand

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

behavior
CommandBehavior

Um dos valores de CommandBehavior.

Retornos

Um objeto DataTable que contém informações de esquema retornadas da fonte de dados.

Comentários

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

Uma FillSchema operação adiciona um DataTable ao de destino DataSet. Em seguida, ele adiciona colunas ao DataColumnCollection do DataTablee configura as seguintes DataColumn propriedades se elas existirem na fonte de dados:

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

  • Caso uma ou mais colunas de chave primária sejam retornadas pelo SelectCommand, elas são usadas como colunas de chave primária para o DataTable.

  • Se nenhuma coluna de chave primária for retornada, mas forem colunas exclusivas, as colunas exclusivas serão usadas como a chave primária se, e somente se, todas as colunas exclusivas não forem anuláveis. Caso qualquer uma das colunas seja anulável, um UniqueConstraint é adicionado ao ConstraintCollection, mas a propriedade PrimaryKey não é definida.

  • Caso as colunas de chave primária e as colunas exclusivas sejam retornadas, as colunas de chave primária são usadas como as colunas de chave primária para o DataTable.

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

Se um índice agrupado exclusivo estiver definido em colunas em uma tabela do SQL Server e a restrição de chave primária estiver definida em um conjunto de colunas separado, os nomes das colunas no índice agrupado serão retornados. Para retornar o nome ou os 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 obter mais informações sobre como especificar dicas de consulta, consulte Dicas (Transact-SQL) – Consulta.

Se o IDataAdapter encontrar colunas duplicadas ao preencher um DataTable, ele gerará nomes para as colunas subsequentes, usando o padrão "columnname1", "columnname2", "columnname3" e assim por diante. Se os dados de entrada contiverem colunas sem nome, eles serão colocados no DataSet de acordo com o padrão "Column1", "Column2" e assim por diante. Quando vários conjuntos de resultados são adicionados a DataSet cada conjunto de resultados é colocado em uma tabela separada. Conjuntos de resultados adicionais são nomeados acrescentando valores integrais ao nome da tabela especificado (por exemplo, "Tabela", "Tabela1", "Tabela2" e assim por diante).). Se o aplicativo usar nomes de coluna e tabela, verifique se não há conflitos com esses padrões de nomenclatura.

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

Observação

Ao manipular instruções SQL em lote que retornam vários resultados, a implementação de para o provedor de FillSchema dados .NET Framework para OLE DB recupera informações de esquema apenas para o primeiro resultado. Para recuperar informações de esquema para vários resultados, use Fill com o MissingSchemaAction definido AddWithKeycomo .

Ao usar FillSchema, o Provedor de Dados .NET Framework para SQL Server acrescenta uma cláusula FOR BROWSE à instrução executada. O usuário deve estar ciente de efeitos colaterais potenciais, como interferência no uso de instruções SET FMTONLY ON. Para obter mais informações, confira SET FMTONLY (Transact-SQL).

Notas aos Herdeiros

Essa implementação do FillSchema(DataSet, SchemaType) método é protegida e projetada para uso por um provedor de dados .NET Framework.

Confira também

Aplica-se a

FillSchema(DataSet, SchemaType, String)

Origem:
DbDataAdapter.cs
Origem:
DbDataAdapter.cs
Origem:
DbDataAdapter.cs

Adiciona um DataTable ao DataSet especificado e configura o esquema para corresponder à fonte de dados com base nos SchemaType e DataTable especificados.

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

Um DataSet para inserir o esquema.

schemaType
SchemaType

Um do valores SchemaType que especificam como inserir o esquema.

srcTable
String

O nome da tabela de origem a ser usado para mapeamento de tabela.

Retornos

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

Exceções

Uma tabela de origem na qual não possível encontrar o esquema.

Exemplos

O exemplo a seguir usa a classe derivada, SqlDataAdapter, para preencher um DataSet com o esquema e retorna 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

Comentários

Esse método recupera as informações de esquema da fonte de dados usando o SelectCommand.

Uma FillSchema operação adiciona um DataTable ao de destino DataSet. Em seguida, ele adiciona colunas ao DataColumnCollection do DataTablee configura as seguintes DataColumn propriedades se elas existirem na fonte de dados:

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

  • Caso uma ou mais colunas de chave primária sejam retornadas pelo SelectCommand, elas são usadas como colunas de chave primária para o DataTable.

  • Se nenhuma coluna de chave primária for retornada, mas forem colunas exclusivas, as colunas exclusivas serão usadas como a chave primária se, e somente se, todas as colunas exclusivas não forem anuláveis. Caso qualquer uma das colunas seja anulável, um UniqueConstraint é adicionado ao ConstraintCollection, mas a propriedade PrimaryKey não é definida.

  • Caso as colunas de chave primária e as colunas exclusivas sejam retornadas, as colunas de chave primária são usadas como as colunas de chave primária para o DataTable.

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

Se um índice agrupado exclusivo estiver definido em colunas em uma tabela do SQL Server e a restrição de chave primária estiver definida em um conjunto de colunas separado, os nomes das colunas no índice agrupado serão retornados. Para retornar o nome ou os 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 obter mais informações sobre como especificar dicas de consulta, consulte Dicas (Transact-SQL) – Consulta.

As informações de chave primária são usadas durante Fill para localizar e substituir todas as linhas cujas colunas de chave correspondem. Se esse não for o comportamento desejado, use Fill sem solicitar informações de esquema.

Se o DbDataAdapter encontrar colunas duplicadas ao preencher um DataTable, ele gerará nomes para as colunas subsequentes, usando o padrão "columnname1", "columnname2", "columnname3" e assim por diante. Se os dados de entrada contiverem colunas sem nome, eles serão colocados no DataSet de acordo com o padrão "Column1", "Column2" e assim por diante. Quando vários conjuntos de resultados são adicionados a DataSet cada conjunto de resultados é colocado em uma tabela separada. Conjuntos de resultados adicionais são nomeados acrescentando valores integrais ao nome da tabela especificado (por exemplo, "Tabela", "Tabela1", "Tabela2" e assim por diante).). Se o aplicativo usar nomes de coluna e tabela, verifique se não há conflitos com esses padrões de nomenclatura.

O FillSchema método dá suporte a cenários em que o DataSet contém vários DataTable objetos cujos nomes diferem apenas por caso. Nessas situações, FillSchema executa uma comparação que diferencia maiúsculas de minúsculas para localizar a tabela correspondente e cria uma nova tabela se não houver correspondência exata. O código C# a seguir ilustra esse 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, isso DataTable será atualizado. Nesse cenário, a comparação não diferencia maiúsculas de minúsculas. O código C# a seguir ilustra esse 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 ser aberto. Se o IDbConnection for fechado antes FillSchema de ser chamado, ele será aberto para recuperar dados e fechado. Se a conexão estiver aberta antes FillSchema de ser chamada, ela será deixada aberta.

Observação

Ao manipular instruções SQL em lote que retornam vários resultados, a implementação de para o provedor de FillSchema dados .NET Framework para OLE DB recupera informações de esquema apenas para o primeiro resultado. Para recuperar informações de esquema para vários resultados, use Fill com o MissingSchemaAction definido AddWithKeycomo .

Ao usar FillSchema, o Provedor de Dados .NET Framework para SQL Server acrescenta uma cláusula FOR BROWSE à instrução executada. O usuário deve estar ciente de efeitos colaterais potenciais, como interferência no uso de instruções SET FMTONLY ON. Para obter mais informações, confira SET FMTONLY (Transact-SQL).

Confira também

Aplica-se a

FillSchema(DataTable, SchemaType)

Origem:
DbDataAdapter.cs
Origem:
DbDataAdapter.cs
Origem:
DbDataAdapter.cs

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

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);
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 a ser preenchido com o esquema da fonte de dados.

schemaType
SchemaType

Um dos valores de SchemaType.

Retornos

Um DataTable que contém informações de esquema retornadas da fonte de dados.

Exemplos

O exemplo a seguir usa a classe derivada, SqlDataAdapter, para preencher um DataSet com o esquema e retorna 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

Comentários

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

Uma FillSchema operação retorna um DataTable. Em seguida, ele adiciona colunas ao DataColumnCollection do DataTablee configura as seguintes DataColumn propriedades se elas existirem na fonte de dados:

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

  • Se um PrimaryKey já tiver sido definido para o DataTableou o DataTable contiver dados, a PrimaryKey propriedade não será definida.

  • Caso uma ou mais colunas de chave primária sejam retornadas pelo SelectCommand, elas são usadas como colunas de chave primária para o DataTable.

  • Se nenhuma coluna de chave primária for retornada, mas forem colunas exclusivas, as colunas exclusivas serão usadas como a chave primária se, e somente se, todas as colunas exclusivas não forem anuláveis. Caso qualquer uma das colunas seja anulável, um UniqueConstraint é adicionado ao ConstraintCollection, mas a propriedade PrimaryKey não é definida.

  • Caso as colunas de chave primária e as colunas exclusivas sejam retornadas, as colunas de chave primária são usadas como as colunas de chave primária para o DataTable.

Observe que as chaves primárias e restrições exclusivas são adicionadas ao ConstraintCollection de acordo com as regras anteriores, mas outros tipos de restrição não são adicionados. Esse processo pode exigir várias viagens de ida e volta para o servidor.

Se um índice agrupado exclusivo estiver definido em colunas em uma tabela do SQL Server e a restrição de chave primária estiver definida em um conjunto de colunas separado, os nomes das colunas no índice agrupado serão retornados. Para retornar o nome ou os 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 obter mais informações sobre como especificar dicas de consulta, consulte Dicas (Transact-SQL) – Consulta.

Se o DbDataAdapter encontrar colunas duplicadas ao preencher um DataTable, ele gerará nomes para as colunas subsequentes, usando o padrão "columnname1", "columnname2", "columnname3" e assim por diante. Se os dados de entrada contiverem colunas sem nome, eles serão colocados no DataSet de acordo com o padrão "Column1", "Column2" e assim por diante. Quando vários conjuntos de resultados são adicionados a DataSet cada conjunto de resultados é colocado em uma tabela separada. Conjuntos de resultados adicionais são nomeados acrescentando valores integrais ao nome da tabela especificado (por exemplo, "Tabela", "Tabela1", "Tabela2" e assim por diante).). Se o aplicativo usar nomes de coluna e tabela, verifique se não há conflitos com esses padrões de nomenclatura.

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

Observação

Ao manipular instruções SQL em lote que retornam vários resultados, a implementação de para o provedor de FillSchema dados .NET Framework para OLE DB recupera informações de esquema apenas para o primeiro resultado. Para recuperar informações de esquema para vários resultados, use Fill com o MissingSchemaAction definido AddWithKeycomo .

Ao usar FillSchema, o Provedor de Dados .NET Framework para SQL Server acrescenta uma cláusula FOR BROWSE à instrução executada. O usuário deve estar ciente de efeitos colaterais potenciais, como interferência no uso de instruções SET FMTONLY ON. Para obter mais informações, confira SET FMTONLY (Transact-SQL).

Confira também

Aplica-se a

FillSchema(DataSet, SchemaType)

Origem:
DbDataAdapter.cs
Origem:
DbDataAdapter.cs
Origem:
DbDataAdapter.cs

Adiciona um DataTable com o nome “Tabela” ao DataSet especificado e configura o esquema para corresponder a eles na fonte de dados com base no SchemaType especificado.

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

Um DataSet para inserir o esquema.

schemaType
SchemaType

Um do valores SchemaType que especificam como inserir o esquema.

Retornos

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

Implementações

Exemplos

O exemplo a seguir usa a classe derivada, SqlDataAdapter, para preencher um DataSet com o esquema e retorna 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

Comentários

Esse método recupera as informações de esquema da fonte de dados usando o SelectCommand.

Uma FillSchema operação adiciona um DataTable ao de destino DataSet. Em seguida, ele adiciona colunas ao DataColumnCollection do DataTablee configura as seguintes DataColumn propriedades se elas existirem na fonte de dados:

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

  • Caso uma ou mais colunas de chave primária sejam retornadas pelo SelectCommand, elas são usadas como colunas de chave primária para o DataTable.

  • Se nenhuma coluna de chave primária for retornada, mas forem colunas exclusivas, as colunas exclusivas serão usadas como a chave primária se, e somente se, todas as colunas exclusivas não forem anuláveis. Caso qualquer uma das colunas seja anulável, um UniqueConstraint é adicionado ao ConstraintCollection, mas a propriedade PrimaryKey não é definida.

  • Caso as colunas de chave primária e as colunas exclusivas sejam retornadas, as colunas de chave primária são usadas como as colunas de chave primária para o DataTable.

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

Se um índice agrupado exclusivo estiver definido em colunas em uma tabela do SQL Server e a restrição de chave primária estiver definida em um conjunto de colunas separado, os nomes das colunas no índice agrupado serão retornados. Para retornar o nome ou os 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 obter mais informações sobre como especificar dicas de consulta, consulte Dicas (Transact-SQL) – Consulta.

As informações de chave primária são usadas durante Fill para localizar e substituir todas as linhas cujas colunas de chave correspondem. Se esse não for o comportamento desejado, use Fill sem solicitar informações de esquema.

Se o IDataAdapter encontrar colunas duplicadas ao preencher um DataTable, ele gerará nomes para as colunas subsequentes, usando o padrão "columnname1", "columnname2", "columnname3" e assim por diante. Se os dados de entrada contiverem colunas sem nome, eles serão colocados no DataSet de acordo com o padrão "Column1", "Column2" e assim por diante. Quando vários conjuntos de resultados são adicionados a DataSet cada conjunto de resultados é colocado em uma tabela separada. Conjuntos de resultados adicionais são nomeados acrescentando valores integrais ao nome da tabela especificado (por exemplo, "Tabela", "Tabela1", "Tabela2" e assim por diante).). Se o aplicativo usar nomes de coluna e tabela, verifique se 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 ser aberto. Se o IDbConnection for fechado antes FillSchema de ser chamado, ele será aberto para recuperar dados e fechado. Se a conexão estiver aberta antes FillSchema de ser chamada, ela será deixada aberta.

Observação

Ao manipular instruções SQL em lote que retornam vários resultados, a implementação de para o provedor de FillSchema dados .NET Framework para OLE DB recupera informações de esquema apenas para o primeiro resultado. Para recuperar informações de esquema para vários resultados, use Fill com o MissingSchemaAction definido AddWithKeycomo .

Ao usar FillSchema, o Provedor de Dados .NET Framework para SQL Server acrescenta uma cláusula FOR BROWSE à instrução executada. O usuário deve estar ciente de efeitos colaterais potenciais, como interferência no uso de instruções SET FMTONLY ON. Para obter mais informações, confira SET FMTONLY (Transact-SQL).

Confira também

Aplica-se a