DbDataAdapter.Fill Método

Definição

Preenche um DataSet ou DataTable.Fills a DataSet or a DataTable.

Sobrecargas

Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior)

Adiciona ou atualiza linhas em um intervalo especificado no DataSet para corresponder àquelas na fonte de dados usando o DataSet e nomes da tabela de origem, a cadeia de comando e o comportamento do comando.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet and source table names, command string, and command behavior.

Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior)

Adiciona ou atualiza linhas em um intervalo especificado no DataSet para corresponder àquelas na fonte de dados usando os nomes DataSet e DataTable.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet and DataTable names.

Fill(DataSet, String, IDataReader, Int32, Int32)

Adiciona ou atualiza linhas em um intervalo especificado no DataSet para que correspondam àquelas na fonte de dados usando os nomes DataSet, DataTable e IDataReader.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet, DataTable, and IDataReader names.

Fill(DataSet, Int32, Int32, String)

Adiciona ou atualiza linhas em um intervalo especificado no DataSet para corresponder àquelas na fonte de dados usando os nomes DataSet e DataTable.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet and DataTable names.

Fill(Int32, Int32, DataTable[])

Adiciona ou atualiza linhas em um DataTable para corresponder àquelas na fonte de dados, começando pelo registro especificado e recuperando até o número máximo de registros.Adds or refreshes rows in a DataTable to match those in the data source starting at the specified record and retrieving up to the specified maximum number of records.

Fill(DataTable)

Adiciona ou atualiza linhas em um intervalo especificado no DataSet para corresponder àquelas na fonte de dados usando o nome DataTable.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataTable name.

Fill(DataTable, IDataReader)

Adiciona ou atualiza linhas em uma DataTable para que correspondam àquelas na fonte de dados usando os nomes DataTable e IDataReader especificados.Adds or refreshes rows in a DataTable to match those in the data source using the specified DataTable and IDataReader names.

Fill(DataSet, String)

Adiciona ou atualiza linhas no DataSet para corresponder às existentes na fonte de dados usando os nomes DataSet e DataTable.Adds or refreshes rows in the DataSet to match those in the data source using the DataSet and DataTable names.

Fill(DataSet)

Adiciona ou atualiza linhas no DataSet.Adds or refreshes rows in the DataSet.

Fill(DataTable, IDbCommand, CommandBehavior)

Adiciona ou atualiza linhas em um DataTable para corresponder às existentes na fonte de dados usando o DataTable, IDbCommand e CommandBehavior especificados.Adds or refreshes rows in a DataTable to match those in the data source using the specified DataTable, IDbCommand and CommandBehavior.

Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior)

Adiciona ou atualiza linhas em um intervalo especificado no DataSet para corresponder àquelas na fonte de dados usando o DataSet e nomes da tabela de origem, a cadeia de comando e o comportamento do comando.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet and source table names, command string, and command behavior.

protected:
 virtual int Fill(System::Data::DataSet ^ dataSet, int startRecord, int maxRecords, System::String ^ srcTable, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual int Fill (System.Data.DataSet dataSet, int startRecord, int maxRecords, string srcTable, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.Fill : System.Data.DataSet * int * int * string * System.Data.IDbCommand * System.Data.CommandBehavior -> int
Protected Overridable Function Fill (dataSet As DataSet, startRecord As Integer, maxRecords As Integer, srcTable As String, command As IDbCommand, behavior As CommandBehavior) As Integer

Parâmetros

dataSet
DataSet

Um DataSet a ser preenchido com registros e, se necessário, esquema.A DataSet to fill with records and, if necessary, schema.

startRecord
Int32

O número de registro baseado em zero pelo qual começar.The zero-based record number to start with.

maxRecords
Int32

O número máximo de registros a serem obtidos.The maximum number of records to retrieve.

srcTable
String

O nome da tabela de origem a ser usado para mapeamento de tabela.The name of the source table to use for table mapping.

command
IDbCommand

A instrução SQL SELECT usada para recuperar linhas da fonte de dados.The SQL SELECT statement used to retrieve rows from the data source.

behavior
CommandBehavior

Um dos valores de CommandBehavior.One of the CommandBehavior values.

Retornos

Int32

O número de linhas adicionadas com êxito a ou atualizadas no DataSet.The number of rows successfully added to or refreshed in the DataSet. Isso não inclui linhas afetadas por instruções que não retornam linhas.This does not include rows affected by statements that do not return rows.

Exceções

A tabela de origem é inválida.The source table is invalid.

O parâmetro startRecord é menor que 0.The startRecord parameter is less than 0.

- ou --or- O parâmetro maxRecords é menor que 0.The maxRecords parameter is less than 0.

Comentários

O Fill método recupera linhas da fonte de dados usando a instrução SELECT especificada por uma SelectCommand propriedade associada.The Fill method retrieves rows from the data source using the SELECT statement specified by an associated SelectCommand property. O objeto de conexão associado à instrução SELECT deve ser válido, mas não precisa estar aberto.The connection object associated with the SELECT statement must be valid, but it does not need to be open. Se a conexão for fechada antes de Fill ser chamada, ela será aberta para recuperar dados e, em seguida, fechada.If the connection is closed before Fill is called, it is opened to retrieve data, then closed. Se a conexão for aberta antes de Fill ser chamada, ela permanecerá aberta.If the connection is open before Fill is called, it remains open.

FillEm seguida, a operação adiciona as linhas aos objetos de destino DataTable no DataSet , criando os DataTable objetos se eles ainda não existirem.The Fill operation then adds the rows to destination DataTable objects in the DataSet, creating the DataTable objects if they do not already exist. Ao criar DataTable objetos, a Fill operação normalmente cria apenas metadados de nome de coluna.When creating DataTable objects, the Fill operation normally creates only column name metadata. No entanto, caso a propriedade MissingSchemaAction seja definida como AddWithKey, as chaves primárias apropriadas e as restrições também são criadas.However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

Se o DbDataAdapter encontrar colunas duplicadas ao preencher um DataTable , ele gerará nomes para as colunas subsequentes, usando o padrão "ColumnName 1", "ColumnName 2", "ColumnName 3" e assim por diante.If the DbDataAdapter encounters duplicate columns while populating a DataTable, it generates names for the subsequent columns, using the pattern "columnname 1", "columnname 2", "columnname 3", and so on. Se os dados de entrada contiverem colunas não nomeadas, eles serão colocados no de DataSet acordo com o padrão "Coluna1", "Coluna2" e assim por diante.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. Quando vários conjuntos de resultados são adicionados a DataSet cada conjunto de resultados são colocados em uma tabela separada.When multiple result sets are added to the DataSet each result set is placed in a separate table. Os conjuntos de resultados adicionais são nomeados adicionando-se valores integrais ao nome da tabela especificado (por exemplo, "Tabela", "Tabela1", "Tabela2" e assim por diante).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). Os aplicativos que usam nomes de coluna e tabela devem garantir que os conflitos com esses padrões de nomenclatura não ocorram.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

O Fill método dá suporte a cenários em que o DataSet contém vários DataTable objetos cujos nomes diferem apenas por maiúsculas e minúsculas.The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. Nessas situações, Fill o executa uma comparação que diferencia maiúsculas de minúsculas para localizar a tabela correspondente e cria uma nova tabela se não existir nenhuma correspondência exata.In such situations, Fill performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. O código C# a seguir ilustra esse comportamento.The following C# code illustrates this behavior.

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

Se Fill é chamado e DataSet contém apenas um DataTable cujo nome difere somente por maiúsculas e minúsculas, que DataTable é atualizado.If Fill is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. Nesse cenário, a comparação não diferencia maiúsculas de minúsculas.In this scenario, the comparison is case insensitive. O código C# a seguir ilustra esse comportamento.The following C# code illustrates this behavior.

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

Você pode usar o Fill método várias vezes no mesmo DataTable .You can use the Fill method multiple times on the same DataTable. Caso haja uma chave primária, as linhas de entrada são mescladas com linhas correspondentes já existentes.If a primary key exists, incoming rows are merged with matching rows that already exist. Caso não haja nenhuma chave primária, as linhas de entrada são acrescentadas ao DataTable.If no primary key exists, incoming rows are appended to the DataTable.

Se o SelectCommand retornar os resultados de um OUTER JOIN, o DataAdapter não definirá um valor de PrimaryKey para oDataTable resultante.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. Você deve definir explicitamente a chave primária para garantir que as linhas duplicadas sejam resolvidas corretamente.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Para obter mais informações, consulte definindo chaves primárias.For more information, see Defining Primary Keys.

Observação

Ao manipular instruções SQL do lote que retornam vários resultados, a implementação de Fill e FillSchema para um provedor de dados .NET Framework recupera informações de esquema apenas para o primeiro resultado.When handling batch SQL statements that return multiple results, the implementation of Fill and FillSchema for a .NET Framework data provider retrieves schema information for only the first result.

Notas aos Herdeiros

Essa sobrecarga do Fill(DataSet) método é protegida e é projetada para uso por um provedor de dados .NET Framework.This overload of the Fill(DataSet) method is protected and is designed for use by a .NET Framework data provider.

Aplica-se a

Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior)

Adiciona ou atualiza linhas em um intervalo especificado no DataSet para corresponder àquelas na fonte de dados usando os nomes DataSet e DataTable.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet and DataTable names.

protected:
 virtual int Fill(cli::array <System::Data::DataTable ^> ^ dataTables, int startRecord, int maxRecords, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual int Fill (System.Data.DataTable[] dataTables, int startRecord, int maxRecords, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.Fill : System.Data.DataTable[] * int * int * System.Data.IDbCommand * System.Data.CommandBehavior -> int
Protected Overridable Function Fill (dataTables As DataTable(), startRecord As Integer, maxRecords As Integer, command As IDbCommand, behavior As CommandBehavior) As Integer

Parâmetros

dataTables
DataTable[]

Os objetos DataTable a preencher da fonte de dados.The DataTable objects to fill from the data source.

startRecord
Int32

O número de registro baseado em zero pelo qual começar.The zero-based record number to start with.

maxRecords
Int32

O número máximo de registros a serem obtidos.The maximum number of records to retrieve.

command
IDbCommand

O IDbCommand executado para preencher os objetos DataTable.The IDbCommand executed to fill the DataTable objects.

behavior
CommandBehavior

Um dos valores de CommandBehavior.One of the CommandBehavior values.

Retornos

Int32

O número de linhas adicionadas ao ou atualizadas nas tabelas de dados.The number of rows added to or refreshed in the data tables.

Exceções

O DataSet é inválido.The DataSet is invalid.

A tabela de origem é inválida.The source table is invalid.

- ou --or-

A conexão é inválida.The connection is invalid.

Não foi possível encontrar a conexão.The connection could not be found.

O parâmetro startRecord é menor que 0.The startRecord parameter is less than 0.

- ou --or- O parâmetro maxRecords é menor que 0.The maxRecords parameter is less than 0.

Comentários

Um maxRecords valor de 0 obtém todos os registros encontrados após o registro inicial.A maxRecords value of 0 gets all records found after the start record. Se maxRecords for maior que o número de linhas restantes, somente as linhas restantes serão retornadas e nenhum erro será emitido.If maxRecords is greater than the number of remaining rows, only the remaining rows are returned and no error is issued.

O Fill método recupera os dados da fonte de dados usando uma instrução SELECT.The Fill method retrieves the data from the data source using a SELECT statement. O IDbConnection objeto associado à instrução SELECT deve ser válido, mas não precisa estar aberto.The IDbConnection object associated with the SELECT statement must be valid, but it does not need to be open. Se o IDbConnection for fechado antes de Fill ser chamado, ele será aberto para recuperar dados e, em seguida, fechado.If the IDbConnection is closed before Fill is called, it is opened to retrieve data, then closed. Se a conexão for aberta antes de Fill ser chamada, ela permanecerá aberta.If the connection is open before Fill is called, it remains open.

Se um comando não retornar nenhuma linha, nenhuma tabela será adicionada ao DataSet , mas nenhuma exceção será gerada.If a command does not return any rows, no tables are added to the DataSet, but no exception is raised.

Se o DbDataAdapter objeto encontrar colunas duplicadas ao preencher um DataTable , ele irá gerar nomes para as colunas subsequentes, usando o padrão "ColumnName 1", "ColumnName 2", "ColumnName 3" e assim por diante.If the DbDataAdapter object encounters duplicate columns while populating a DataTable, it will generate names for the subsequent columns, using the pattern "columnname 1", "columnname 2", "columnname 3", and so on. Se os dados de entrada contiverem colunas não nomeadas, eles serão colocados no de DataSet acordo com o padrão "Coluna1", "Coluna2" e assim por diante.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on.

Quando a consulta especificada retorna vários resultados, cada conjunto de resultados é colocado em uma tabela separada.When the query specified returns multiple results, each result set is placed in a separate table. Os conjuntos de resultados adicionais são nomeados adicionando-se valores integrais ao nome da tabela especificado (por exemplo, "Tabela", "Tabela1", "Tabela2" e assim por diante).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). Como nenhuma tabela é criada para uma consulta que não retorna linhas, se você fosse processar uma consulta Insert seguida por uma consulta SELECT, a tabela criada para a consulta SELECT seria denominada "Table", porque é a primeira tabela criada.Since no table is created for a query that does not return rows, if you were to process an insert query followed by a select query, the table created for the select query would be named "Table", because it is the first table created. Os aplicativos que usam nomes de coluna e tabela devem garantir que os conflitos com esses padrões de nomenclatura não ocorram.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

O Fill método dá suporte a cenários em que o DataSet contém vários DataTable objetos cujos nomes diferem apenas por maiúsculas e minúsculas.The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. Nessas situações, Fill o executa uma comparação que diferencia maiúsculas de minúsculas para localizar a tabela correspondente e cria uma nova tabela se não existir nenhuma correspondência exata.In such situations, Fill performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. O código C# a seguir ilustra esse comportamento.The following C# code illustrates this behavior.

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

Se Fill é chamado e DataSet contém apenas um DataTable cujo nome difere somente por maiúsculas e minúsculas, que DataTable é atualizado.If Fill is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. Nesse cenário, a comparação não diferencia maiúsculas de minúsculas.In this scenario, the comparison is case insensitive. O código C# a seguir ilustra esse comportamento.The following C# code illustrates this behavior.

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

Se for encontrado um erro ou uma exceção ao popular as tabelas de dados, as linhas adicionadas antes da ocorrência do erro permanecerão nas tabelas de dados.If an error or an exception is encountered while populating the data tables, rows added prior to the occurrence of the error remain in the data tables. O restante da operação foi anulado.The remainder of the operation is aborted.

Quando a instrução SELECT usada para preencher os DataTable objetos retorna vários resultados, como uma instrução SQL de lote, esteja ciente do seguinte:When the SELECT statement used to populate the DataTable objects returns multiple results, such as a batch SQL statement, be aware of the following:

  • Ao processar vários resultados de uma instrução SQL do lote, maxRecords aplica-se somente ao primeiro resultado.When processing multiple results from a batch SQL statement, maxRecords only applies to the first result. O mesmo é verdadeiro para linhas contendo resultados de capítulo (.NET Framework Provedor de Dados somente para OLE DB).The same is true for rows containing chaptered results (.NET Framework Data Provider for OLE DB only). O resultado de nível superior é limitado por maxRecords , mas todas as linhas filho são adicionadas.The top level result is limited by maxRecords, but all child rows are added.

  • Se um dos resultados contiver um erro, todos os resultados subsequentes serão ignorados.If one of the results contains an error, all subsequent results are skipped.

Observação

O DataSet não conterá mais do que o número de registros indicado por maxRecords .The DataSet will not contain more than the number of records indicated by maxRecords. No entanto, todo o ResultSet gerado pela consulta ainda é retornado do servidor.However, the entire resultset generated by the query is still returned from the server.

Notas aos Herdeiros

Ao substituir Fill(DataSet) em uma classe derivada, certifique-se de chamar o método da classe base Fill(DataSet) .When overriding Fill(DataSet) in a derived class, be sure to call the base class's Fill(DataSet) method.

Aplica-se a

Fill(DataSet, String, IDataReader, Int32, Int32)

Adiciona ou atualiza linhas em um intervalo especificado no DataSet para que correspondam àquelas na fonte de dados usando os nomes DataSet, DataTable e IDataReader.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet, DataTable, and IDataReader names.

protected:
 virtual int Fill(System::Data::DataSet ^ dataSet, System::String ^ srcTable, System::Data::IDataReader ^ dataReader, int startRecord, int maxRecords);
protected virtual int Fill (System.Data.DataSet dataSet, string srcTable, System.Data.IDataReader dataReader, int startRecord, int maxRecords);
override this.Fill : System.Data.DataSet * string * System.Data.IDataReader * int * int -> int
Protected Overridable Function Fill (dataSet As DataSet, srcTable As String, dataReader As IDataReader, startRecord As Integer, maxRecords As Integer) As Integer

Parâmetros

dataSet
DataSet

Um DataSet a ser preenchido com registros e, se necessário, esquema.A DataSet to fill with records and, if necessary, schema.

srcTable
String

O nome do DataTable a ser usado para mapeamento de tabela.The name of the DataTable to use for table mapping.

dataReader
IDataReader

O nome do IDataReader.The name of the IDataReader.

startRecord
Int32

O número de registro baseado em zero pelo qual começar.The zero-based record number to start with.

maxRecords
Int32

O número máximo de registros a serem obtidos.The maximum number of records to retrieve.

Retornos

Int32

O número de linhas adicionadas com êxito a ou atualizadas no DataSet.The number of rows successfully added to or refreshed in the DataSet. Isso não inclui linhas afetadas por instruções que não retornam linhas.This does not include rows affected by statements that do not return rows.

Aplica-se a

Fill(DataSet, Int32, Int32, String)

Adiciona ou atualiza linhas em um intervalo especificado no DataSet para corresponder àquelas na fonte de dados usando os nomes DataSet e DataTable.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet and DataTable names.

public:
 int Fill(System::Data::DataSet ^ dataSet, int startRecord, int maxRecords, System::String ^ srcTable);
public int Fill (System.Data.DataSet dataSet, int startRecord, int maxRecords, string srcTable);
override this.Fill : System.Data.DataSet * int * int * string -> int
Public Function Fill (dataSet As DataSet, startRecord As Integer, maxRecords As Integer, srcTable As String) As Integer

Parâmetros

dataSet
DataSet

Um DataSet a ser preenchido com registros e, se necessário, esquema.A DataSet to fill with records and, if necessary, schema.

startRecord
Int32

O número de registro baseado em zero pelo qual começar.The zero-based record number to start with.

maxRecords
Int32

O número máximo de registros a serem obtidos.The maximum number of records to retrieve.

srcTable
String

O nome da tabela de origem a ser usado para mapeamento de tabela.The name of the source table to use for table mapping.

Retornos

Int32

O número de linhas adicionadas com êxito a ou atualizadas no DataSet.The number of rows successfully added to or refreshed in the DataSet. Isso não inclui linhas afetadas por instruções que não retornam linhas.This does not include rows affected by statements that do not return rows.

Exceções

O DataSet é inválido.The DataSet is invalid.

A tabela de origem é inválida.The source table is invalid.

- ou --or-

A conexão é inválida.The connection is invalid.

Não foi possível encontrar a conexão.The connection could not be found.

O parâmetro startRecord é menor que 0.The startRecord parameter is less than 0.

- ou --or- O parâmetro maxRecords é menor que 0.The maxRecords parameter is less than 0.

Exemplos

O exemplo a seguir usa a classe derivada, OleDbDataAdapter , para preencher um DataSet com 15 linhas, começando na linha 10, da tabela Categories .The following example uses the derived class, OleDbDataAdapter, to fill a DataSet with 15 rows, beginning at row 10, from the Categories table. Este exemplo pressupõe que você criou um OleDbDataAdapter e um DataSet .This example assumes that you have created an OleDbDataAdapter and a DataSet.

public void GetRecords()
{
    // ...
    // create dataSet and adapter
    // ...
    adapter.Fill(dataSet,9,15,"Categories");
}
Public Sub GetRecords()
    ' ...
    ' create dataSet and adapter
    ' ...
    adapter.Fill(dataSet, 9, 15, "Categories")
End Sub

Comentários

Um maxRecords valor de 0 obtém todos os registros encontrados após o registro inicial.A maxRecords value of 0 gets all records found after the start record. Se maxRecords for maior que o número de linhas restantes, somente as linhas restantes serão retornadas e nenhum erro será emitido.If maxRecords is greater than the number of remaining rows, only the remaining rows are returned, and no error is issued.

Se o comando SELECT correspondente for uma instrução que retorna vários resultados, Fill o só se aplicará maxRecords ao primeiro resultado.If the corresponding select command is a statement returning multiple results, Fill only applies maxRecords to the first result.

O Fill método recupera os dados da fonte de dados usando uma instrução SELECT.The Fill method retrieves the data from the data source using a SELECT statement. O IDbConnection objeto associado à instrução SELECT deve ser válido, mas não precisa estar aberto.The IDbConnection object associated with the SELECT statement must be valid, but it does not need to be open. Se o IDbConnection for fechado antes de Fill ser chamado, ele será aberto para recuperar os dados e, em seguida, fechados.If the IDbConnection is closed before Fill is called, it is opened to retrieve data and then closed. Se a conexão for aberta antes de Fill ser chamada, ela permanecerá aberta.If the connection is open before Fill is called, it remains open.

Se um comando não retornar nenhuma linha, nenhuma tabela será adicionada ao DataSet , mas nenhuma exceção será gerada.If a command does not return any rows, no tables are added to the DataSet, but no exception is raised.

Se o DbDataAdapter objeto encontrar colunas duplicadas ao preencher um DataTable , ele irá gerar nomes para as colunas subsequentes, usando o padrão "ColumnName 1", "ColumnName 2", "ColumnName 3" e assim por diante.If the DbDataAdapter object encounters duplicate columns while populating a DataTable, it will generate names for the subsequent columns, using the pattern "columnname 1", "columnname 2", "columnname 3", and so on. Se os dados de entrada contiverem colunas não nomeadas, eles serão colocados no de DataSet acordo com o padrão "Coluna1", "Coluna2" e assim por diante.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on.

Quando a consulta especificada retorna vários resultados, cada conjunto de resultados é colocado em uma tabela separada.When the query specified returns multiple results, each result set is placed in a separate table. Os conjuntos de resultados adicionais são nomeados adicionando-se valores integrais ao nome da tabela especificado (por exemplo, "Tabela", "Tabela1", "Tabela2" e assim por diante).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). Como nenhuma tabela é criada para uma consulta que não retorna linhas, se você processar uma consulta de inserção seguida por uma consulta SELECT, a tabela criada para a consulta SELECT será denominada "Table", porque é a primeira tabela criada.Because no table is created for a query that does not return rows, if you process an insert query followed by a select query, the table created for the select query is named "Table", because it is the first table created. Os aplicativos que usam nomes de coluna e tabela devem garantir que os conflitos com esses padrões de nomenclatura não ocorram.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

O Fill método dá suporte a cenários em que o DataSet contém vários DataTable objetos cujos nomes diferem apenas por maiúsculas e minúsculas.The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. Nessas situações, Fill o executa uma comparação que diferencia maiúsculas de minúsculas para localizar a tabela correspondente e cria uma nova tabela se não existir nenhuma correspondência exata.In such situations, Fill performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. O código C# a seguir ilustra esse comportamento.The following C# code illustrates this behavior.

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

Se Fill é chamado e DataSet contém apenas um DataTable cujo nome difere somente por maiúsculas e minúsculas, que DataTable é atualizado.If Fill is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. Nesse cenário, a comparação não diferencia maiúsculas de minúsculas.In this scenario, the comparison is case insensitive. O código C# a seguir ilustra esse comportamento.The following C# code illustrates this behavior.

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

Se for encontrado um erro ou uma exceção ao popular as tabelas de dados, as linhas adicionadas antes da ocorrência do erro permanecerão nas tabelas de dados.If an error or an exception is encountered while populating the data tables, rows added prior to the occurrence of the error remain in the data tables. O restante da operação foi anulado.The remainder of the operation is aborted.

Quando a instrução SELECT usada para preencher o DataSet retorna vários resultados, como instruções SQL do lote, esteja ciente do seguinte:When the SELECT statement used to populate the DataSet returns multiple results, such as batch SQL statements, be aware of the following:

  • Ao processar vários resultados de uma instrução SQL do lote, maxRecords aplica-se somente ao primeiro resultado.When processing multiple results from a batch SQL statement, maxRecords only applies to the first result. O mesmo é verdadeiro para linhas contendo resultados de capítulo (.NET Framework Provedor de Dados somente para OLE DB).The same is true for rows containing chaptered results (.NET Framework Data Provider for OLE DB only). O resultado de nível superior é limitado por maxRecords , mas todas as linhas filho são adicionadas.The top level result is limited by maxRecords, but all child rows are added.

  • Se um dos resultados contiver um erro, todos os resultados subsequentes serão ignorados e não adicionados ao DataSet .If one of the results contains an error, all subsequent results are skipped and not added to the DataSet.

Ao usar chamadas subsequentes Fill para atualizar o conteúdo do DataSet , duas condições devem ser atendidas:When using subsequent Fill calls to refresh the contents of the DataSet, two conditions must be met:

  1. A instrução SQL deve corresponder à usada inicialmente para popular o DataSet .The SQL statement should match the one initially used to populate the DataSet.

  2. As informações da coluna de chave devem estar presentes.The Key column information must be present.

Se as informações de chave primária estiverem presentes, todas as linhas duplicadas serão reconciliadas e aparecerão apenas uma vez no DataTable que corresponde ao DataSet .If primary key information is present, any duplicate rows will be reconciled and only appear once in the DataTable that corresponds to the DataSet. As informações de chave primária podem ser definidas por meio de FillSchema , especificando a PrimaryKey Propriedade do DataTable ou definindo a MissingSchemaAction propriedade como AddWithKey .Primary key information may be set either through FillSchema, by specifying the PrimaryKey property of the DataTable, or by setting the MissingSchemaAction property to AddWithKey.

Se o SelectCommand retornar os resultados de um OUTER JOIN, o DataAdapter não definirá um valor de PrimaryKey para oDataTable resultante.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. Você deve definir explicitamente a chave primária para garantir que as linhas duplicadas sejam resolvidas corretamente.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Para obter mais informações, consulte definindo chaves primárias.For more information, see Defining Primary Keys.

Observação

Ao manipular instruções SQL do lote que retornam vários resultados, a implementação do FillSchema para o .NET Framework provedor de dados para OLE DB recupera informações de esquema somente para o primeiro resultado.When handling batch SQL statements that return multiple results, the implementation of FillSchema for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. Para recuperar informações de esquema para vários resultados, use Fill com o MissingSchemaAction conjunto para AddWithKey .To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

Observação

O DataSet não conterá mais do que o número de registros indicado por maxRecords .The DataSet will not contain more than the number of records indicated by maxRecords. No entanto, todo o conjunto de resultados gerado pela consulta ainda é retornado do servidor.However, the entire result set generated by the query is still returned from the server.

Notas aos Herdeiros

Ao substituir Fill(DataSet) em uma classe derivada, certifique-se de chamar o método da classe base Fill(DataSet) .When overriding Fill(DataSet) in a derived class, be sure to call the base class's Fill(DataSet) method.

Aplica-se a

Fill(Int32, Int32, DataTable[])

Adiciona ou atualiza linhas em um DataTable para corresponder àquelas na fonte de dados, começando pelo registro especificado e recuperando até o número máximo de registros.Adds or refreshes rows in a DataTable to match those in the data source starting at the specified record and retrieving up to the specified maximum number of records.

public:
 int Fill(int startRecord, int maxRecords, ... cli::array <System::Data::DataTable ^> ^ dataTables);
public int Fill (int startRecord, int maxRecords, params System.Data.DataTable[] dataTables);
override this.Fill : int * int * System.Data.DataTable[] -> int
Public Function Fill (startRecord As Integer, maxRecords As Integer, ParamArray dataTables As DataTable()) As Integer

Parâmetros

startRecord
Int32

O número de registro baseado em zero pelo qual começar.The zero-based record number to start with.

maxRecords
Int32

O número máximo de registros a serem obtidos.The maximum number of records to retrieve.

dataTables
DataTable[]

Os objetos DataTable a preencher da fonte de dados.The DataTable objects to fill from the data source.

Retornos

Int32

O número de linhas adicionadas com êxito a ou atualizadas no DataTable.The number of rows successfully added to or refreshed in the DataTable. Esse valor não inclui linhas afetadas por instruções que não retornam linhas.This value does not include rows affected by statements that do not return rows.

Comentários

O Fill método recupera linhas da fonte de dados usando a instrução SELECT especificada por uma SelectCommand propriedade associada.The Fill method retrieves rows from the data source using the SELECT statement specified by an associated SelectCommand property. O objeto de conexão associado à instrução SELECT deve ser válido, mas não precisa estar aberto.The connection object associated with the SELECT statement must be valid, but it does not need to be open. Se a conexão for fechada antes de Fill ser chamada, ela será aberta para recuperar dados e, em seguida, será fechada.If the connection is closed before Fill is called, it is opened to retrieve data, and then it is closed. Se a conexão for aberta antes de Fill ser chamada, ela permanecerá aberta.If the connection is open before Fill is called, it remains open.

FillEm seguida, a operação adiciona as linhas aos objetos de destino DataTable no DataSet , criando os DataTable objetos se eles ainda não existirem.The Fill operation then adds the rows to destination DataTable objects in the DataSet, creating the DataTable objects if they do not already exist. Ao criar DataTable objetos, a Fill operação normalmente cria apenas metadados de nome de coluna.When creating DataTable objects, the Fill operation normally creates only column name metadata. No entanto, caso a propriedade MissingSchemaAction seja definida como AddWithKey, as chaves primárias apropriadas e as restrições também são criadas.However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

Se o SelectCommand retornar os resultados de um OUTER JOIN, o DataAdapter não definirá um valor de PrimaryKey para oDataTable resultante.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. Você deve definir explicitamente a chave primária para garantir que as linhas duplicadas sejam resolvidas corretamente.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Para obter mais informações, consulte definindo chaves primárias.For more information, see Defining Primary Keys.

Se o adaptador de dados encontrar colunas duplicadas ao popular um DataTable , ele gerará nomes para as colunas subsequentes, usando o padrão "ColumnName1", "ColumnName2", "columnname3" e assim por diante.If the data adapter encounters duplicate columns while populating a DataTable, it generates names for the subsequent columns, using the pattern "columnname1", "columnname2", "columnname3", and so on. Se os dados de entrada contiverem colunas não nomeadas, eles serão colocados no de DataSet acordo com o padrão "Coluna1", "Coluna2" e assim por diante.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. Quando vários conjuntos de resultados são adicionados ao DataSet , cada conjunto de resultados é colocado em uma tabela separada.When multiple result sets are added to the DataSet, each result set is placed in a separate table. Os conjuntos de resultados adicionais são nomeados adicionando-se valores integrais ao nome da tabela especificado (por exemplo, "Tabela", "Tabela1", "Tabela2" e assim por diante).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). Os aplicativos que usam nomes de coluna e tabela devem garantir que os conflitos com esses padrões de nomenclatura não ocorram.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

Quando a instrução SELECT usada para popular o DataSet retorna vários resultados, como instruções SQL do lote, se um dos resultados contiver um erro, todos os resultados subsequentes serão ignorados e não adicionados ao DataSet .When the SELECT statement used to populate the DataSet returns multiple results, such as a batch SQL statements, if one of the results contains an error, all subsequent results are skipped and not added to the DataSet.

Você pode usar o Fill método várias vezes no mesmo DataTable .You can use the Fill method multiple times on the same DataTable. Caso haja uma chave primária, as linhas de entrada são mescladas com linhas correspondentes já existentes.If a primary key exists, incoming rows are merged with matching rows that already exist. Caso não haja nenhuma chave primária, as linhas de entrada são acrescentadas ao DataTable.If no primary key exists, incoming rows are appended to the DataTable.

Observação

Ao manipular instruções SQL do lote que retornam vários resultados, a implementação do FillSchema para o .NET Framework provedor de dados para OLE DB recupera informações de esquema somente para o primeiro resultado.When handling batch SQL statements that return multiple results, the implementation of FillSchema for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. Para recuperar informações de esquema para vários resultados, use Fill com o MissingSchemaAction conjunto para AddWithKey .To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

Aplica-se a

Fill(DataTable)

Adiciona ou atualiza linhas em um intervalo especificado no DataSet para corresponder àquelas na fonte de dados usando o nome DataTable.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataTable name.

public:
 int Fill(System::Data::DataTable ^ dataTable);
public int Fill (System.Data.DataTable dataTable);
override this.Fill : System.Data.DataTable -> int
Public Function Fill (dataTable As DataTable) As Integer

Parâmetros

dataTable
DataTable

O nome do DataTable a ser usado para mapeamento de tabela.The name of the DataTable to use for table mapping.

Retornos

Int32

O número de linhas adicionadas com êxito a ou atualizadas no DataSet.The number of rows successfully added to or refreshed in the DataSet. Isso não inclui linhas afetadas por instruções que não retornam linhas.This does not include rows affected by statements that do not return rows.

Exceções

A tabela de origem é inválida.The source table is invalid.

Comentários

O Fill método recupera linhas da fonte de dados usando a instrução SELECT especificada por uma SelectCommand propriedade associada.The Fill method retrieves rows from the data source using the SELECT statement specified by an associated SelectCommand property. O objeto de conexão associado à instrução SELECT deve ser válido, mas não precisa estar aberto.The connection object associated with the SELECT statement must be valid, but it does not need to be open. Se a conexão for fechada antes de Fill ser chamada, ela será aberta para recuperar dados e, em seguida, fechada.If the connection is closed before Fill is called, it is opened to retrieve data, then closed. Se a conexão for aberta antes de Fill ser chamada, ela permanecerá aberta.If the connection is open before Fill is called, it remains open.

FillEm seguida, a operação adiciona as linhas aos objetos de destino DataTable no DataSet , criando os DataTable objetos se eles ainda não existirem.The Fill operation then adds the rows to destination DataTable objects in the DataSet, creating the DataTable objects if they do not already exist. Ao criar DataTable objetos, a Fill operação normalmente cria apenas metadados de nome de coluna.When creating DataTable objects, the Fill operation normally creates only column name metadata. No entanto, caso a propriedade MissingSchemaAction seja definida como AddWithKey, as chaves primárias apropriadas e as restrições também são criadas.However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

Se o DbDataAdapter encontrar colunas duplicadas ao preencher um DataTable , ele gerará nomes para as colunas subsequentes, usando o padrão "ColumnName 1", "ColumnName 2", "ColumnName 3" e assim por diante.If the DbDataAdapter encounters duplicate columns while populating a DataTable, it generates names for the subsequent columns, using the pattern "columnname 1", "columnname 2", "columnname 3", and so on. Se os dados de entrada contiverem colunas não nomeadas, eles serão colocados no de DataSet acordo com o padrão "Coluna1", "Coluna2" e assim por diante.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. Quando vários conjuntos de resultados são adicionados a DataSet cada conjunto de resultados são colocados em uma tabela separada.When multiple result sets are added to the DataSet each result set is placed in a separate table.

A sobrecarga de Fill que o usa DataTable como parâmetro obtém apenas o primeiro resultado.The overload of Fill that takes DataTable as a parameter only obtains the first result. Use uma sobrecarga de Fill que usa DataSet como um parâmetro para obter vários resultados.Use an overload of Fill that takes DataSet as a parameter to obtain multiple results.

O Fill método dá suporte a cenários em que o DataSet contém vários DataTable objetos cujos nomes diferem apenas por maiúsculas e minúsculas.The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. Nessas situações, Fill o executa uma comparação que diferencia maiúsculas de minúsculas para localizar a tabela correspondente e cria uma nova tabela se não existir nenhuma correspondência exata.In such situations, Fill performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. O código C# a seguir ilustra esse comportamento.The following C# code illustrates this behavior.

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

Se Fill é chamado e DataSet contém apenas um DataTable cujo nome difere somente por maiúsculas e minúsculas, que DataTable é atualizado.If Fill is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. Nesse cenário, a comparação não diferencia maiúsculas de minúsculas.In this scenario, the comparison is case insensitive. O código C# a seguir ilustra esse comportamento.The following C# code illustrates this behavior.

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

Você pode usar o Fill método várias vezes no mesmo DataTable .You can use the Fill method multiple times on the same DataTable. Caso haja uma chave primária, as linhas de entrada são mescladas com linhas correspondentes já existentes.If a primary key exists, incoming rows are merged with matching rows that already exist. Caso não haja nenhuma chave primária, as linhas de entrada são acrescentadas ao DataTable.If no primary key exists, incoming rows are appended to the DataTable.

Se o SelectCommand retornar os resultados de um OUTER JOIN, o DataAdapter não definirá um valor de PrimaryKey para oDataTable resultante.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. Você deve definir explicitamente a chave primária para garantir que as linhas duplicadas sejam resolvidas corretamente.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Para obter mais informações, consulte definindo chaves primárias.For more information, see Defining Primary Keys.

Observação

Ao manipular instruções SQL do lote que retornam vários resultados, a implementação de Fill e FillSchema para um provedor de dados .NET Framework recupera informações de esquema apenas para o primeiro resultado.When handling batch SQL statements that return multiple results, the implementation of Fill and FillSchema for a .NET Framework data provider retrieves schema information for only the first result.

Notas aos Herdeiros

Essa sobrecarga do Fill(DataSet) método é protegida e é projetada para uso por um provedor de dados .NET Framework.This overload of the Fill(DataSet) method is protected and is designed for use by a .NET Framework data provider.

Aplica-se a

Fill(DataTable, IDataReader)

Adiciona ou atualiza linhas em uma DataTable para que correspondam àquelas na fonte de dados usando os nomes DataTable e IDataReader especificados.Adds or refreshes rows in a DataTable to match those in the data source using the specified DataTable and IDataReader names.

protected:
 virtual int Fill(System::Data::DataTable ^ dataTable, System::Data::IDataReader ^ dataReader);
protected virtual int Fill (System.Data.DataTable dataTable, System.Data.IDataReader dataReader);
override this.Fill : System.Data.DataTable * System.Data.IDataReader -> int
Protected Overridable Function Fill (dataTable As DataTable, dataReader As IDataReader) As Integer

Parâmetros

dataTable
DataTable

Um DataTable a ser preenchido com registros e, se necessário, esquema.A DataTable to fill with records and, if necessary, schema.

dataReader
IDataReader

O nome do IDataReader.The name of the IDataReader.

Retornos

Int32

O número de linhas adicionadas com êxito a ou atualizadas no DataTable.The number of rows successfully added to or refreshed in the DataTable. Isso não inclui linhas afetadas por instruções que não retornam linhas.This does not include rows affected by statements that do not return rows.

Aplica-se a

Fill(DataSet, String)

Adiciona ou atualiza linhas no DataSet para corresponder às existentes na fonte de dados usando os nomes DataSet e DataTable.Adds or refreshes rows in the DataSet to match those in the data source using the DataSet and DataTable names.

public:
 int Fill(System::Data::DataSet ^ dataSet, System::String ^ srcTable);
public int Fill (System.Data.DataSet dataSet, string srcTable);
override this.Fill : System.Data.DataSet * string -> int
Public Function Fill (dataSet As DataSet, srcTable As String) As Integer

Parâmetros

dataSet
DataSet

Um DataSet a ser preenchido com registros e, se necessário, esquema.A DataSet to fill with records and, if necessary, schema.

srcTable
String

O nome da tabela de origem a ser usado para mapeamento de tabela.The name of the source table to use for table mapping.

Retornos

Int32

O número de linhas adicionadas com êxito a ou atualizadas no DataSet.The number of rows successfully added to or refreshed in the DataSet. Isso não inclui linhas afetadas por instruções que não retornam linhas.This does not include rows affected by statements that do not return rows.

Exceções

A tabela de origem é inválida.The source table is invalid.

Exemplos

O exemplo a seguir usa a classe derivada, OleDbDataAdapter , para preencher um DataSet com linhas da tabela Categories.The following example uses the derived class, OleDbDataAdapter, to fill a DataSet with rows from the categories table. Este exemplo pressupõe que você criou um OleDbDataAdapter e um DataSet .This example assumes that you have created an OleDbDataAdapter and a DataSet.

public void GetRecords()
{
    // ...
    // create dataSet and adapter
    // ...
    adapter.Fill(dataSet, "Categories");
}
Public Sub GetRecords()
    ' ...
    ' create dataSet and adapter
    ' ...
    adapter.Fill(dataSet, "Categories")
End Sub

Comentários

O Fill método recupera os dados da fonte de dados usando uma instrução SELECT.The Fill method retrieves the data from the data source using a SELECT statement. O IDbConnection objeto associado ao comando SELECT deve ser válido, mas não precisa estar aberto.The IDbConnection object associated with the select command must be valid, but it does not need to be open. Se o IDbConnection for fechado antes de Fill ser chamado, ele será aberto para recuperar dados e, em seguida, fechado.If the IDbConnection is closed before Fill is called, it is opened to retrieve data, then closed. Se a conexão for aberta antes de Fill ser chamada, ela permanecerá aberta.If the connection is open before Fill is called, it remains open.

Se um comando não retornar nenhuma linha, nenhuma tabela será adicionada ao DataSet e nenhuma exceção será gerada.If a command does not return any rows, no tables are added to the DataSet, and no exception is raised.

Se o DbDataAdapter objeto encontrar colunas duplicadas ao preencher um DataTable , ele irá gerar nomes para as colunas subsequentes, usando o padrão "ColumnName1", "ColumnName2", "columnname3" e assim por diante.If the DbDataAdapter object encounters duplicate columns while populating a DataTable, it will generate names for the subsequent columns, using the pattern "columnname1", "columnname2", "columnname3", and so on. Se os dados de entrada contiverem colunas não nomeadas, eles serão colocados no de DataSet acordo com o padrão "Coluna1", "Coluna2" e assim por diante.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on.

Quando a consulta especificada retorna vários resultados, cada conjunto de resultados é colocado em uma tabela separada.When the query specified returns multiple results, each result set is placed in a separate table. Os conjuntos de resultados adicionais são nomeados adicionando-se valores integrais ao nome da tabela especificado (por exemplo, "Tabela", "Tabela1", "Tabela2" e assim por diante).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). Como nenhuma tabela é criada para uma consulta que não retorna linhas, se você fosse processar uma consulta Insert seguida por uma consulta SELECT, a tabela criada para a consulta SELECT seria denominada "Table", porque é a primeira tabela criada.Since no table is created for a query that does not return rows, if you were to process an insert query followed by a select query, the table created for the select query would be named "Table", because it is the first table created. Os aplicativos que usam nomes de coluna e tabela devem garantir que os conflitos com esses padrões de nomenclatura não ocorram.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

O Fill método dá suporte a cenários em que o DataSet contém vários DataTable objetos cujos nomes diferem apenas por maiúsculas e minúsculas.The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. Nessas situações, Fill o executa uma comparação que diferencia maiúsculas de minúsculas para localizar a tabela correspondente e cria uma nova tabela se não existir nenhuma correspondência exata.In such situations, Fill performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. O código C# a seguir ilustra esse comportamento.The following C# code illustrates this behavior.

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

Se Fill é chamado e DataSet contém apenas um DataTable cujo nome difere somente por maiúsculas e minúsculas, que DataTable é atualizado.If Fill is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. Nesse cenário, a comparação não diferencia maiúsculas de minúsculas.In this scenario, the comparison is case insensitive. O código C# a seguir ilustra esse comportamento.The following C# code illustrates this behavior.

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

Se for encontrado um erro ou uma exceção ao popular as tabelas de dados, as linhas adicionadas antes da ocorrência do erro permanecerão nas tabelas de dados.If an error or an exception is encountered while populating the data tables, rows added prior to the occurrence of the error remain in the data tables. O restante da operação foi anulado.The remainder of the operation is aborted.

Quando a instrução SELECT usada para preencher o DataSet retorna vários resultados, como uma instrução SQL do lote, esteja ciente do seguinte:When the SELECT statement used to populate the DataSet returns multiple results, such as a batch SQL statement, be aware of the following:

  • Se um dos resultados contiver um erro, todos os resultados subsequentes serão ignorados e não adicionados ao DataSet .If one of the results contains an error, all subsequent results are skipped and not added to the DataSet.

Ao usar chamadas subsequentes Fill para atualizar o conteúdo do DataSet , duas condições devem ser atendidas:When using subsequent Fill calls to refresh the contents of the DataSet, two conditions must be met:

  1. A instrução SQL deve corresponder à usada inicialmente para popular o DataSet .The SQL statement should match the one initially used to populate the DataSet.

  2. As informações da coluna de chave devem estar presentes.The Key column information must be present. Se as informações de chave primária estiverem presentes, todas as linhas duplicadas serão reconciliadas e aparecerão apenas uma vez no DataTable que corresponde ao DataSet .If primary key information is present, any duplicate rows are reconciled and only appear once in the DataTable that corresponds to the DataSet. As informações de chave primária podem ser definidas por meio de FillSchema , especificando a PrimaryKey Propriedade do DataTable ou definindo a MissingSchemaAction propriedade como AddWithKey .Primary key information may be set either through FillSchema, by specifying the PrimaryKey property of the DataTable, or by setting the MissingSchemaAction property to AddWithKey.

Se o SelectCommand retornar os resultados de um OUTER JOIN, o DataAdapter não definirá um valor de PrimaryKey para oDataTable resultante.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. Você deve definir explicitamente a chave primária para garantir que as linhas duplicadas sejam resolvidas corretamente.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Para obter mais informações, consulte definindo chaves primárias.For more information, see Defining Primary Keys.

Observação

Ao manipular instruções SQL do lote que retornam vários resultados, a implementação do FillSchema para o .NET Framework provedor de dados para OLE DB recupera informações de esquema somente para o primeiro resultado.When handling batch SQL statements that return multiple results, the implementation of FillSchema for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. Para recuperar informações de esquema para vários resultados, use Fill com o MissingSchemaAction conjunto para AddWithKey .To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

Notas aos Herdeiros

Ao substituir Fill(DataSet) em uma classe derivada, certifique-se de chamar o método da classe base Fill(DataSet) .When overriding Fill(DataSet) in a derived class, be sure to call the base class's Fill(DataSet) method.

Aplica-se a

Fill(DataSet)

Adiciona ou atualiza linhas no DataSet.Adds or refreshes rows in the DataSet.

public:
 override int Fill(System::Data::DataSet ^ dataSet);
public override int Fill (System.Data.DataSet dataSet);
override this.Fill : System.Data.DataSet -> int
Public Overrides Function Fill (dataSet As DataSet) As Integer

Parâmetros

dataSet
DataSet

Um DataSet a ser preenchido com registros e, se necessário, esquema.A DataSet to fill with records and, if necessary, schema.

Retornos

Int32

O número de linhas adicionadas com êxito a ou atualizadas no DataSet.The number of rows successfully added to or refreshed in the DataSet. Isso não inclui linhas afetadas por instruções que não retornam linhas.This does not include rows affected by statements that do not return rows.

Implementações

Comentários

O Fill método recupera os dados da fonte de dados usando uma instrução SELECT.The Fill method retrieves the data from the data source using a SELECT statement. O IDbConnection objeto associado ao comando SELECT deve ser válido, mas não precisa estar aberto.The IDbConnection object associated with the select command must be valid, but it does not need to be open. Se o IDbConnection for fechado antes de Fill ser chamado, ele será aberto para recuperar os dados e, em seguida, fechados.If the IDbConnection is closed before Fill is called, it is opened to retrieve data and then closed. Se a conexão for aberta antes de Fill ser chamada, ela permanecerá aberta.If the connection is open before Fill is called, it remains open.

Se for encontrado um erro ou uma exceção ao popular as tabelas de dados, as linhas adicionadas antes da ocorrência do erro permanecerão nas tabelas de dados.If an error or an exception is encountered while populating the data tables, rows added prior to the occurrence of the error remain in the data tables. O restante da operação foi anulado.The remainder of the operation is aborted.

Se um comando não retornar nenhuma linha, nenhuma tabela será adicionada ao DataSet e nenhuma exceção será gerada.If a command does not return any rows, no tables are added to the DataSet, and no exception is raised.

Se o DbDataAdapter objeto encontrar colunas duplicadas ao preencher um DataTable , ele gerará nomes para as colunas subsequentes usando o padrão "ColumnName 1", "ColumnName 2", "ColumnName 3" e assim por diante.If the DbDataAdapter object encounters duplicate columns while populating a DataTable, it generates names for the subsequent columns using the pattern "columnname 1", "columnname 2", "columnname 3", and so on. Se os dados de entrada contiverem colunas não nomeadas, eles serão colocados no de DataSet acordo com o padrão "Coluna1", "Coluna2" e assim por diante.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on.

Quando a consulta especificada retorna vários resultados, o conjunto de resultados para cada linha retornando a consulta é colocado em uma tabela separada.When the query specified returns multiple results, the result set for each row returning query is placed in a separate table. Os conjuntos de resultados adicionais são nomeados adicionando-se valores integrais ao nome da tabela especificado (por exemplo, "Tabela", "Tabela1", "Tabela2" e assim por diante).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). Como nenhuma tabela é criada para uma consulta que não retorna linhas, se você processar uma consulta de inserção seguida por uma consulta SELECT, a tabela criada para a consulta SELECT será denominada "Table" porque é a primeira tabela criada.Because no table is created for a query that does not return rows, if you process an insert query followed by a select query, the table created for the select query is named "Table" because it is the first table created. Os aplicativos que usam nomes de coluna e tabela devem garantir que os conflitos com esses padrões de nomenclatura não ocorram.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

Quando a instrução SELECT usada para popular o DataSet retorna vários resultados, como instruções SQL do lote, se um dos resultados contiver um erro, todos os resultados subsequentes serão ignorados e não serão adicionados ao DataSet .When the SELECT statement used to populate the DataSet returns multiple results, such as batch SQL statements, if one of the results contains an error, all subsequent results are skipped and are not added to the DataSet.

Ao usar chamadas subsequentes Fill para atualizar o conteúdo do DataSet , duas condições devem ser atendidas:When using subsequent Fill calls to refresh the contents of the DataSet, two conditions must be met:

  1. A instrução SQL deve corresponder à usada inicialmente para popular o DataSet .The SQL statement should match the one initially used to populate the DataSet.

  2. As informações da coluna de chave devem estar presentes.The Key column information must be present.

Se as informações de chave primária estiverem presentes, todas as linhas duplicadas serão reconciliadas e aparecerão apenas uma vez no DataTable que corresponde ao DataSet .If primary key information is present, any duplicate rows are reconciled and only appear once in the DataTable that corresponds to the DataSet. As informações de chave primária podem ser definidas por meio de FillSchema , especificando a PrimaryKey Propriedade do DataTable ou definindo a MissingSchemaAction propriedade como AddWithKey .Primary key information may be set either through FillSchema, by specifying the PrimaryKey property of the DataTable, or by setting the MissingSchemaAction property to AddWithKey.

Se o SelectCommand retornar os resultados de um OUTER JOIN, o DataAdapter não definirá um valor de PrimaryKey para oDataTable resultante.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. Você deve definir explicitamente a chave primária para garantir que as linhas duplicadas sejam resolvidas corretamente.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Para obter mais informações, consulte definindo chaves primárias.For more information, see Defining Primary Keys.

Observação

Ao manipular instruções SQL do lote que retornam vários resultados, a implementação do FillSchema para o .NET Framework provedor de dados para OLE DB recupera informações de esquema somente para o primeiro resultado.When handling batch SQL statements that return multiple results, the implementation of FillSchema for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. Para recuperar informações de esquema para vários resultados, use Fill com o MissingSchemaAction conjunto para AddWithKey .To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

Aplica-se a

Fill(DataTable, IDbCommand, CommandBehavior)

Adiciona ou atualiza linhas em um DataTable para corresponder às existentes na fonte de dados usando o DataTable, IDbCommand e CommandBehavior especificados.Adds or refreshes rows in a DataTable to match those in the data source using the specified DataTable, IDbCommand and CommandBehavior.

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

Parâmetros

dataTable
DataTable

Um DataTable a ser preenchido com registros e, se necessário, esquema.A DataTable to fill with records and, if necessary, schema.

command
IDbCommand

A instrução SQL SELECT usada para recuperar linhas da fonte de dados.The SQL SELECT statement used to retrieve rows from the data source.

behavior
CommandBehavior

Um dos valores de CommandBehavior.One of the CommandBehavior values.

Retornos

Int32

O número de linhas adicionadas com êxito a ou atualizadas no DataTable.The number of rows successfully added to or refreshed in the DataTable. Isso não inclui linhas afetadas por instruções que não retornam linhas.This does not include rows affected by statements that do not return rows.

Comentários

O Fill método recupera linhas da fonte de dados usando a instrução SELECT especificada por uma SelectCommand propriedade associada.The Fill method retrieves rows from the data source using the SELECT statement specified by an associated SelectCommand property. O objeto de conexão associado à instrução SELECT deve ser válido, mas não precisa estar aberto.The connection object associated with the SELECT statement must be valid, but it does not need to be open. Se a conexão for fechada antes de Fill ser chamada, ela será aberta para recuperar os dados e, em seguida, fechados.If the connection is closed before Fill is called, it is opened to retrieve data and then closed. Se a conexão for aberta antes de Fill ser chamada, ela permanecerá aberta.If the connection is open before Fill is called, it remains open.

FillEm seguida, a operação adiciona as linhas ao objeto de destino especificado DataTable no DataSet , criando o DataTable objeto, caso ele ainda não exista.The Fill operation then adds the rows to the specified destination DataTable object in the DataSet, creating the DataTable object if it does not already exist. Ao criar um DataTable objeto, a Fill operação normalmente cria apenas metadados de nome de coluna.When creating a DataTable object, the Fill operation normally creates only column name metadata. No entanto, caso a propriedade MissingSchemaAction seja definida como AddWithKey, as chaves primárias apropriadas e as restrições também são criadas.However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

Se o DbDataAdapter objeto encontrar colunas duplicadas ao preencher um DataTable , ele irá gerar nomes para as colunas subsequentes, usando o padrão "ColumnName 1", "ColumnName 2", "ColumnName 3" e assim por diante.If the DbDataAdapter object encounters duplicate columns while populating a DataTable, it will generate names for the subsequent columns, using the pattern "columnname 1", "columnname 2", "columnname 3", and so on. Se os dados de entrada contiverem colunas não nomeadas, eles serão colocados no de DataSet acordo com o padrão "Coluna1", "Coluna2" e assim por diante.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on.

A sobrecarga de Fill que o usa DataTable como parâmetro obtém apenas o primeiro resultado.The overload of Fill that takes DataTable as a parameter only obtains the first result. Use uma sobrecarga de Fill que usa DataSet como um parâmetro para obter vários resultados.Use an overload of Fill that takes DataSet as a parameter to obtain multiple results.

Você pode usar o Fill método várias vezes no mesmo DataTable .You can use the Fill method multiple times on the same DataTable. Caso haja uma chave primária, as linhas de entrada são mescladas com linhas correspondentes já existentes.If a primary key exists, incoming rows are merged with matching rows that already exist. Caso não haja nenhuma chave primária, as linhas de entrada são acrescentadas ao DataTable.If no primary key exists, incoming rows are appended to the DataTable.

Se o SelectCommand retornar os resultados de um OUTER JOIN, o DataAdapter não definirá um valor de PrimaryKey para oDataTable resultante.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. Você deve definir explicitamente a chave primária para garantir que as linhas duplicadas sejam resolvidas corretamente.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Para obter mais informações, consulte definindo chaves primárias.For more information, see Defining Primary Keys.

Observação

Ao manipular instruções SQL do lote que retornam vários resultados, a implementação do FillSchema para o .NET Framework provedor de dados para OLE DB recupera informações de esquema somente para o primeiro resultado.When handling batch SQL statements that return multiple results, the implementation of FillSchema for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. Para recuperar informações de esquema para vários resultados, use Fill com o MissingSchemaAction conjunto para AddWithKey .To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

Notas aos Herdeiros

Essa sobrecarga do Fill(DataSet) método é protegida e é projetada para uso por um provedor de dados .NET Framework.This overload of the Fill(DataSet) method is protected and is designed for use by a .NET Framework data provider.

Aplica-se a