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
| Nome | Description |
|---|---|
| FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior) |
Adiciona um 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 nos valores especificados SchemaType, cadeia de caracteres de comando e CommandBehavior valores. |
| FillSchema(DataSet, SchemaType, String) |
Adiciona um 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 na especificada SchemaType. |
FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior)
- Origem:
- DbDataAdapter.cs
- Origem:
- DbDataAdapter.cs
- Origem:
- DbDataAdapter.cs
- Origem:
- DbDataAdapter.cs
- Origem:
- DbDataAdapter.cs
Adiciona um 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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from command) schema table types cannot be statically analyzed.")]
protected virtual System.Data.DataTable[] FillSchema(System.Data.DataSet dataSet, System.Data.SchemaType schemaType, System.Data.IDbCommand command, 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);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from command) schema table types cannot be statically analyzed.")>]
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * System.Data.IDbCommand * string * System.Data.CommandBehavior -> System.Data.DataTable[]
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 SchemaType valores.
- 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 usada para mapeamento de tabela.
- behavior
- CommandBehavior
Um dos CommandBehavior valores.
Retornos
Uma matriz de DataTable objetos que contêm informações de esquema retornadas da fonte de dados.
- Atributos
Comentários
O FillSchema método recupera o esquema da fonte de dados usando o SelectCommand. O objeto de conexão associado SelectCommand ao deve ser válido, mas não precisa ser 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 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.
FillSchematambém configura as propriedades e Constraints de PrimaryKey acordo com as seguintes regras:
Se uma ou mais colunas de chave primária forem retornadas pelo SelectCommand, elas serão usadas como colunas de chave primária para .DataTable
Se nenhuma coluna de chave primária for retornada, mas colunas exclusivas forem, as colunas exclusivas serão usadas como a chave primária se, e somente se, todas as colunas exclusivas não forem anuláveis. Se qualquer uma das colunas for anulável, uma UniqueConstraint será adicionada ao ConstraintCollection, mas a PrimaryKey propriedade não será definida.
Se as colunas de chave primária e as colunas exclusivas forem retornadas, as colunas de chave primária serão usadas como colunas de chave primária para .DataTable
Observe que as chaves primárias e restrições exclusivas são adicionadas às ConstraintCollection regras anteriores, mas outros tipos de restrição não são adicionados.
Se um índice clusterizado exclusivo for definido em uma coluna ou colunas em uma tabela do SQL Server e a restrição de chave primária for definida em um conjunto separado de colunas, os nomes das colunas no índice clusterizado 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 encontrar IDataAdapter colunas duplicadas ao preencher uma DataTable, ela 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 de acordo com o DataSet 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 ele DataSet contiver apenas um DataTable cujo nome difere somente 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 do provedor de FillSchema dados do .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 conjunto como AddWithKey.
Ao usar FillSchema, o Provedor de Dados do .NET Framework para SQL Server acrescenta uma cláusula FOR BROWSE à instrução que está sendo executada. O usuário deve estar ciente de possíveis efeitos colaterais, como interferência no uso de instruções SET FMTONLY ON. Para obter mais informações, consulte 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 do .NET Framework.
Confira também
Aplica-se a
FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)
- Origem:
- DbDataAdapter.cs
- Origem:
- DbDataAdapter.cs
- Origem:
- DbDataAdapter.cs
- Origem:
- DbDataAdapter.cs
- Origem:
- DbDataAdapter.cs
Configura o esquema do especificado DataTable com base nos valores especificados SchemaType, cadeia de caracteres de comando 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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from command) schema table types cannot be statically analyzed.")]
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);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from command) schema table types cannot be statically analyzed.")>]
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType * System.Data.IDbCommand * System.Data.CommandBehavior -> System.Data.DataTable
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 SchemaType valores.
- command
- IDbCommand
A instrução SQL SELECT usada para recuperar linhas da fonte de dados.
- behavior
- CommandBehavior
Um dos CommandBehavior valores.
Retornos
Um objeto DataTable que contém informações de esquema retornadas da fonte de dados.
- Atributos
Comentários
O FillSchema método recupera o esquema da fonte de dados usando o SelectCommand. O objeto de conexão associado SelectCommand ao deve ser válido, mas não precisa ser 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 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.
FillSchematambém configura as propriedades e Constraints de PrimaryKey acordo com as seguintes regras:
Se uma ou mais colunas de chave primária forem retornadas pelo SelectCommand, elas serão usadas como colunas de chave primária para .DataTable
Se nenhuma coluna de chave primária for retornada, mas colunas exclusivas forem, as colunas exclusivas serão usadas como a chave primária se, e somente se, todas as colunas exclusivas não forem anuláveis. Se qualquer uma das colunas for anulável, uma UniqueConstraint será adicionada ao ConstraintCollection, mas a PrimaryKey propriedade não será definida.
Se as colunas de chave primária e as colunas exclusivas forem retornadas, as colunas de chave primária serão usadas como colunas de chave primária para .DataTable
Observe que as chaves primárias e restrições exclusivas são adicionadas às ConstraintCollection regras anteriores, mas outros tipos de restrição não são adicionados.
Se um índice clusterizado exclusivo for definido em uma coluna ou colunas em uma tabela do SQL Server e a restrição de chave primária for definida em um conjunto separado de colunas, os nomes das colunas no índice clusterizado 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 encontrar IDataAdapter colunas duplicadas ao preencher uma DataTable, ela 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 de acordo com o DataSet 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 do provedor de FillSchema dados do .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 conjunto como AddWithKey.
Ao usar FillSchema, o Provedor de Dados do .NET Framework para SQL Server acrescenta uma cláusula FOR BROWSE à instrução que está sendo executada. O usuário deve estar ciente de possíveis efeitos colaterais, como interferência no uso de instruções SET FMTONLY ON. Para obter mais informações, consulte 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 do .NET Framework.
Confira também
Aplica-se a
FillSchema(DataSet, SchemaType, String)
- Origem:
- DbDataAdapter.cs
- Origem:
- DbDataAdapter.cs
- Origem:
- DbDataAdapter.cs
- Origem:
- DbDataAdapter.cs
- Origem:
- DbDataAdapter.cs
Adiciona um 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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
public System.Data.DataTable[] FillSchema(System.Data.DataSet dataSet, System.Data.SchemaType schemaType, string srcTable);
public System.Data.DataTable[] FillSchema(System.Data.DataSet dataSet, System.Data.SchemaType schemaType, string srcTable);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * string -> System.Data.DataTable[]
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 dos SchemaType valores que especificam como inserir o esquema.
- srcTable
- String
O nome da tabela de origem a ser usada para mapeamento de tabela.
Retornos
Uma referência a uma coleção de DataTable objetos que foram adicionados ao DataSet.
- Atributos
Exceções
Uma tabela de origem da qual não foi possível localizar o esquema.
Exemplos
O exemplo a seguir usa a classe derivada, SqlDataAdapterpara 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 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.
FillSchematambém configura as propriedades e Constraints de PrimaryKey acordo com as seguintes regras:
Se uma ou mais colunas de chave primária forem retornadas pelo SelectCommand, elas serão usadas como colunas de chave primária para .DataTable
Se nenhuma coluna de chave primária for retornada, mas colunas exclusivas forem, as colunas exclusivas serão usadas como a chave primária se, e somente se, todas as colunas exclusivas não forem anuláveis. Se qualquer uma das colunas for anulável, uma UniqueConstraint será adicionada ao ConstraintCollection, mas a PrimaryKey propriedade não será definida.
Se as colunas de chave primária e as colunas exclusivas forem retornadas, as colunas de chave primária serão usadas como colunas de chave primária para .DataTable
Observe que as chaves primárias e restrições exclusivas são adicionadas às ConstraintCollection regras anteriores, mas outros tipos de restrição não são adicionados.
Se um índice clusterizado exclusivo for definido em uma coluna ou colunas em uma tabela do SQL Server e a restrição de chave primária for definida em um conjunto separado de colunas, os nomes das colunas no índice clusterizado 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 a localização e substituição de 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 encontrar DbDataAdapter colunas duplicadas ao preencher uma DataTable, ela 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 de acordo com o DataSet 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 ele DataSet contiver apenas um DataTable cujo nome difere somente 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, em seguida, 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 do provedor de FillSchema dados do .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 conjunto como AddWithKey.
Ao usar FillSchema, o Provedor de Dados do .NET Framework para SQL Server acrescenta uma cláusula FOR BROWSE à instrução que está sendo executada. O usuário deve estar ciente de possíveis efeitos colaterais, como interferência no uso de instruções SET FMTONLY ON. Para obter mais informações, consulte SET FMTONLY (Transact-SQL).
Confira também
Aplica-se a
FillSchema(DataTable, SchemaType)
- Origem:
- DbDataAdapter.cs
- Origem:
- DbDataAdapter.cs
- Origem:
- DbDataAdapter.cs
- Origem:
- DbDataAdapter.cs
- Origem:
- DbDataAdapter.cs
Configura o esquema do especificado DataTable com base no especificado SchemaType.
public:
System::Data::DataTable ^ FillSchema(System::Data::DataTable ^ dataTable, System::Data::SchemaType schemaType);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
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);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType -> System.Data.DataTable
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 SchemaType valores.
Retornos
Um DataTable que contém informações de esquema retornadas da fonte de dados.
- Atributos
Exemplos
O exemplo a seguir usa a classe derivada, SqlDataAdapterpara 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 SelectCommand ao deve ser válido, mas não precisa ser 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.
FillSchematambém configura as propriedades e Constraints de PrimaryKey acordo com as seguintes regras:
Se um PrimaryKey já tiver sido definido para o
DataTable, ou oDataTablecontém dados, aPrimaryKeypropriedade não será definida.Se uma ou mais colunas de chave primária forem retornadas pelo SelectCommand, elas serão usadas como colunas de chave primária para .
DataTableSe nenhuma coluna de chave primária for retornada, mas colunas exclusivas forem, as colunas exclusivas serão usadas como a chave primária se, e somente se, todas as colunas exclusivas não forem anuláveis. Se qualquer uma das colunas for anulável, uma UniqueConstraint será adicionada ao ConstraintCollection, mas a
PrimaryKeypropriedade não será definida.Se as colunas de chave primária e as colunas exclusivas forem retornadas, as colunas de chave primária serão usadas como colunas de chave primária para .
DataTable
Observe que as chaves primárias e restrições exclusivas são adicionadas às ConstraintCollection 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 clusterizado exclusivo for definido em uma coluna ou colunas em uma tabela do SQL Server e a restrição de chave primária for definida em um conjunto separado de colunas, os nomes das colunas no índice clusterizado 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 encontrar DbDataAdapter colunas duplicadas ao preencher uma DataTable, ela 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 de acordo com o DataSet 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 do provedor de FillSchema dados do .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 conjunto como AddWithKey.
Ao usar FillSchema, o Provedor de Dados do .NET Framework para SQL Server acrescenta uma cláusula FOR BROWSE à instrução que está sendo executada. O usuário deve estar ciente de possíveis efeitos colaterais, como interferência no uso de instruções SET FMTONLY ON. Para obter mais informações, consulte SET FMTONLY (Transact-SQL).
Confira também
Aplica-se a
FillSchema(DataSet, SchemaType)
- Origem:
- DbDataAdapter.cs
- Origem:
- DbDataAdapter.cs
- Origem:
- DbDataAdapter.cs
- Origem:
- DbDataAdapter.cs
- Origem:
- DbDataAdapter.cs
Adiciona uma DataTable "Tabela" nomeada ao especificado DataSet e configura o esquema para corresponder ao da fonte de dados com base na especificada SchemaType.
public:
override cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
public override 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);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType -> System.Data.DataTable[]
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 dos SchemaType valores que especificam como inserir o esquema.
Retornos
Uma referência a uma coleção de DataTable objetos que foram adicionados ao DataSet.
Implementações
- Atributos
Exemplos
O exemplo a seguir usa a classe derivada, SqlDataAdapterpara 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 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.
FillSchematambém configura as propriedades e Constraints de PrimaryKey acordo com as seguintes regras:
Se uma ou mais colunas de chave primária forem retornadas pelo SelectCommand, elas serão usadas como colunas de chave primária para .DataTable
Se nenhuma coluna de chave primária for retornada, mas colunas exclusivas forem, as colunas exclusivas serão usadas como a chave primária se, e somente se, todas as colunas exclusivas não forem anuláveis. Se qualquer uma das colunas for anulável, uma UniqueConstraint será adicionada ao ConstraintCollection, mas a PrimaryKey propriedade não será definida.
Se as colunas de chave primária e as colunas exclusivas forem retornadas, as colunas de chave primária serão usadas como colunas de chave primária para .DataTable
Observe que as chaves primárias e restrições exclusivas são adicionadas às ConstraintCollection regras anteriores, mas outros tipos de restrição não são adicionados.
Se um índice clusterizado exclusivo for definido em uma coluna ou colunas em uma tabela do SQL Server e a restrição de chave primária for definida em um conjunto separado de colunas, os nomes das colunas no índice clusterizado 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 a localização e substituição de 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 encontrar IDataAdapter colunas duplicadas ao preencher uma DataTable, ela 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 de acordo com o DataSet 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, em seguida, 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 do provedor de FillSchema dados do .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 conjunto como AddWithKey.
Ao usar FillSchema, o Provedor de Dados do .NET Framework para SQL Server acrescenta uma cláusula FOR BROWSE à instrução que está sendo executada. O usuário deve estar ciente de possíveis efeitos colaterais, como interferência no uso de instruções SET FMTONLY ON. Para obter mais informações, consulte SET FMTONLY (Transact-SQL).