DbDataAdapter.FillSchema Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
- 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:
AutoIncrement. Você deve definir AutoIncrementStep e AutoIncrementSeed separadamente.
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 AddWithKey
como .
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
- 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:
AutoIncrement. Você deve definir AutoIncrementStep e AutoIncrementSeed separadamente.
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 AddWithKey
como .
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
- 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:
AutoIncrement. Você deve definir AutoIncrementStep e AutoIncrementSeed separadamente.
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 AddWithKey
como .
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
- 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:
AutoIncrement. Você deve definir AutoIncrementStep e AutoIncrementSeed separadamente.
FillSchema também configura as PrimaryKey propriedades e Constraints de acordo com as seguintes regras:
Se um PrimaryKey já tiver sido definido para o
DataTable
ou oDataTable
contiver dados, aPrimaryKey
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 AddWithKey
como .
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
- 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:
AutoIncrement. Você deve definir AutoIncrementStep e AutoIncrementSeed separadamente.
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 AddWithKey
como .
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).