DbDataAdapter.Fill Método

Definición

Rellena un objeto DataSet o un objeto DataTable.Fills a DataSet or a DataTable.

Sobrecargas

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

Agrega filas en un intervalo especificado de DataSet o las actualiza para hacerlas coincidir con las filas del origen de datos utilizando los nombres de DataSet y los nombres de tabla de origen, la cadena de comando y el comportamiento de 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)

Agrega filas en un intervalo especificado de DataSet o las actualiza para hacerlas coincidir con las filas del origen de datos utilizando los nombres de DataSet y 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)

Agrega filas en un intervalo especificado de DataSet o las actualiza para hacerlas coincidir con las filas del origen de datos utilizando los nombres de DataSet, DataTable y 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)

Agrega filas en un intervalo especificado de DataSet o las actualiza para hacerlas coincidir con las filas del origen de datos utilizando los nombres de DataSet y 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[])

Agrega filas a DataTable o las actualiza para hacerlas coincidir con las del origen de datos, empezando en el registro especificado y recuperando hasta el número máximo de registros especificado.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)

Agrega filas en un intervalo especificado de DataSet o las actualiza para hacerlas coincidir con las filas del origen de datos utilizando el nombre de 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)

Agrega filas a un objeto DataTable o las actualiza para hacerlas coincidir con las del origen de datos, utilizando los nombres de DataTable y 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)

Agrega filas a DataSet o las actualiza para hacerlas coincidir con las filas del origen de datos utilizando los nombres de DataSet y DataTable.Adds or refreshes rows in the DataSet to match those in the data source using the DataSet and DataTable names.

Fill(DataSet)

Agrega o actualiza filas en DataSet.Adds or refreshes rows in the DataSet.

Fill(DataTable, IDbCommand, CommandBehavior)

Agrega filas a un objeto DataTable o las actualiza para hacerlas coincidir con las del origen de datos, utilizando los objetos DataTable, IDbCommand y 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)

Agrega filas en un intervalo especificado de DataSet o las actualiza para hacerlas coincidir con las filas del origen de datos utilizando los nombres de DataSet y los nombres de tabla de origen, la cadena de comando y el comportamiento de 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

Clase DataSet que se va a rellenar con registros y, si es necesario, con un esquema.A DataSet to fill with records and, if necessary, schema.

startRecord
Int32

Número de registro de base cero inicial.The zero-based record number to start with.

maxRecords
Int32

Número máximo de registros que se van a recuperar.The maximum number of records to retrieve.

srcTable
String

Nombre de la tabla de origen que se utilizará para la asignación de tabla.The name of the source table to use for table mapping.

command
IDbCommand

Instrucción SELECT de SQL utilizada para recuperar las filas del origen de datos.The SQL SELECT statement used to retrieve rows from the data source.

behavior
CommandBehavior

Uno de los valores de CommandBehavior.One of the CommandBehavior values.

Devoluciones

Int32

Número de filas agregadas o actualizadas correctamente en la clase DataSet.The number of rows successfully added to or refreshed in the DataSet. No se incluyen las filas afectadas por instrucciones que no devuelven filas.This does not include rows affected by statements that do not return rows.

Excepciones

La tabla de origen no es válida.The source table is invalid.

El parámetro startRecord es menor que 0.The startRecord parameter is less than 0.

O bien-or- El parámetro maxRecords es menor que 0.The maxRecords parameter is less than 0.

Comentarios

El Fill método recupera filas del origen de datos mediante la instrucción SELECT especificada por una propiedad asociada SelectCommand .The Fill method retrieves rows from the data source using the SELECT statement specified by an associated SelectCommand property. El objeto de conexión asociado a la instrucción SELECT debe ser válido, pero no es necesario que esté abierto.The connection object associated with the SELECT statement must be valid, but it does not need to be open. Si la conexión se cierra antes de que Fill se llame a, se abre para recuperar los datos y, a continuación, se cierra.If the connection is closed before Fill is called, it is opened to retrieve data, then closed. Si la conexión está abierta antes Fill de que se llame a, permanece abierta.If the connection is open before Fill is called, it remains open.

FillA continuación, la operación agrega las filas a los DataTable objetos de destino en DataSet y crea los DataTable objetos si aún no existen.The Fill operation then adds the rows to destination DataTable objects in the DataSet, creating the DataTable objects if they do not already exist. Al crear DataTable objetos, la Fill operación normalmente solo crea metadatos de nombre de columna.When creating DataTable objects, the Fill operation normally creates only column name metadata. Sin embargo, si la MissingSchemaAction propiedad se establece en AddWithKey , también se crean las claves principales y las restricciones correspondientes.However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

Si DbDataAdapter encuentra columnas duplicadas al rellenar una DataTable , genera nombres para las columnas siguientes, con el patrón "columnName 1", "columnName 2", "columnName 3", etc.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. Si los datos entrantes contienen columnas sin nombre, se colocan en DataSet según el patrón "Column1", "columna2", etc.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. Cuando se agregan varios conjuntos de resultados a DataSet cada conjunto de resultados, se coloca en una tabla independiente.When multiple result sets are added to the DataSet each result set is placed in a separate table. Los conjuntos de resultados adicionales se denominan anexando valores enteros al nombre de tabla especificado (por ejemplo, "Table", "Table1", "Tabla2", etc.).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). Las aplicaciones que usan nombres de tabla y columna deben garantizar que no se produzcan conflictos con estos patrones de nomenclatura.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

El Fill método admite escenarios en los que el DataSet contiene varios DataTable objetos cuyos nombres solo se diferencian en el uso de mayúsculas y minúsculas.The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. En tales situaciones, Fill realiza una comparación que distingue entre mayúsculas y minúsculas para encontrar la tabla correspondiente y crea una nueva tabla si no existe ninguna coincidencia exacta.In such situations, Fill performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. En el siguiente código de C# se muestra este comportamiento.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".  

Si Fill se llama a y DataSet contiene solo uno DataTable cuyo nombre difiere solo en caso de que DataTable se actualice.If Fill is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. En este escenario, la comparación no distingue entre mayúsculas y minúsculas.In this scenario, the comparison is case insensitive. En el siguiente código de C# se muestra este comportamiento.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.  

Puede usar el Fill método varias veces en el mismo DataTable .You can use the Fill method multiple times on the same DataTable. Si existe una clave principal, las filas entrantes se combinan con filas coincidentes que ya existen.If a primary key exists, incoming rows are merged with matching rows that already exist. Si no existe ninguna clave principal, las filas entrantes se anexan a DataTable .If no primary key exists, incoming rows are appended to the DataTable.

Si SelectCommand devuelve los resultados de OUTER JOIN, DataAdapter no establece un valor PrimaryKey para el objeto DataTableresultante.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. Debe definir explícitamente la clave principal para asegurarse de que las filas duplicadas se resuelven correctamente.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Para obtener más información, vea definir claves principales.For more information, see Defining Primary Keys.

Nota

Al controlar instrucciones SQL por lotes que devuelven varios resultados, la implementación de Fill y FillSchema para un proveedor de datos de .NET Framework recupera información de esquema solo para el primer 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 a los desarrolladores de herederos

Esta sobrecarga del Fill(DataSet) método está protegida y está diseñada para su uso por parte de un proveedor de datos de .NET Framework.This overload of the Fill(DataSet) method is protected and is designed for use by a .NET Framework data provider.

Se aplica a

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

Agrega filas en un intervalo especificado de DataSet o las actualiza para hacerlas coincidir con las filas del origen de datos utilizando los nombres de DataSet y 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[]

Objetos DataTable que se van a rellenar a partir del origen de datos.The DataTable objects to fill from the data source.

startRecord
Int32

Número de registro de base cero inicial.The zero-based record number to start with.

maxRecords
Int32

Número máximo de registros que se van a recuperar.The maximum number of records to retrieve.

command
IDbCommand

Interfaz IDbCommand ejecutada para rellenar los objetos DataTable.The IDbCommand executed to fill the DataTable objects.

behavior
CommandBehavior

Uno de los valores de CommandBehavior.One of the CommandBehavior values.

Devoluciones

Int32

Número de filas agregadas o actualizadas en las tablas de datos.The number of rows added to or refreshed in the data tables.

Excepciones

DataSet no es válido.The DataSet is invalid.

La tabla de origen no es válida.The source table is invalid.

O bien-or-

La conexión no es válida.The connection is invalid.

No se encontró la conexión.The connection could not be found.

El parámetro startRecord es menor que 0.The startRecord parameter is less than 0.

O bien-or- El parámetro maxRecords es menor que 0.The maxRecords parameter is less than 0.

Comentarios

Un maxRecords valor de 0 obtiene todos los registros encontrados después del registro de inicio.A maxRecords value of 0 gets all records found after the start record. Si maxRecords es mayor que el número de filas restantes, solo se devuelven las filas restantes y no se emite ningún error.If maxRecords is greater than the number of remaining rows, only the remaining rows are returned and no error is issued.

El Fill método recupera los datos del origen de datos mediante una instrucción SELECT.The Fill method retrieves the data from the data source using a SELECT statement. El IDbConnection objeto asociado a la instrucción SELECT debe ser válido, pero no es necesario que esté abierto.The IDbConnection object associated with the SELECT statement must be valid, but it does not need to be open. Si el IDbConnection está cerrado antes de Fill llamar a, se abre para recuperar los datos y, a continuación, se cierra.If the IDbConnection is closed before Fill is called, it is opened to retrieve data, then closed. Si la conexión está abierta antes Fill de que se llame a, permanece abierta.If the connection is open before Fill is called, it remains open.

Si un comando no devuelve ninguna fila, no se agrega ninguna tabla a DataSet , pero no se genera ninguna excepción.If a command does not return any rows, no tables are added to the DataSet, but no exception is raised.

Si el DbDataAdapter objeto encuentra columnas duplicadas al rellenar un DataTable , generará nombres para las columnas subsiguientes, con el patrón "columnName 1", "columnName 2", "columnName 3", etc.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. Si los datos entrantes contienen columnas sin nombre, se colocan en DataSet según el patrón "Column1", "columna2", etc.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on.

Cuando la consulta especificada devuelve varios resultados, cada conjunto de resultados se coloca en una tabla independiente.When the query specified returns multiple results, each result set is placed in a separate table. Los conjuntos de resultados adicionales se denominan anexando valores enteros al nombre de tabla especificado (por ejemplo, "Table", "Table1", "Tabla2", etc.).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). Puesto que no se crea ninguna tabla para una consulta que no devuelve filas, si fuera a procesar una consulta Insert seguida de una consulta Select, la tabla creada para la consulta Select se denominaría "Table", ya que es la primera tabla creada.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. Las aplicaciones que usan nombres de tabla y columna deben garantizar que no se produzcan conflictos con estos patrones de nomenclatura.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

El Fill método admite escenarios en los que el DataSet contiene varios DataTable objetos cuyos nombres solo se diferencian en el uso de mayúsculas y minúsculas.The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. En tales situaciones, Fill realiza una comparación que distingue entre mayúsculas y minúsculas para encontrar la tabla correspondiente y crea una nueva tabla si no existe ninguna coincidencia exacta.In such situations, Fill performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. En el siguiente código de C# se muestra este comportamiento.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".  

Si Fill se llama a y DataSet contiene solo uno DataTable cuyo nombre difiere solo en caso de que DataTable se actualice.If Fill is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. En este escenario, la comparación no distingue entre mayúsculas y minúsculas.In this scenario, the comparison is case insensitive. En el siguiente código de C# se muestra este comportamiento.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.  

Si se produce un error o una excepción al rellenar las tablas de datos, las filas agregadas antes de que se produzca el error permanecen en las tablas de datos.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. El resto de la operación se anula.The remainder of the operation is aborted.

Cuando la instrucción SELECT usada para rellenar los DataTable objetos devuelve varios resultados, como una instrucción SQL por lotes, tenga en cuenta lo siguiente:When the SELECT statement used to populate the DataTable objects returns multiple results, such as a batch SQL statement, be aware of the following:

  • Al procesar varios resultados de una instrucción SQL por lotes, maxRecords solo se aplica al primer resultado.When processing multiple results from a batch SQL statement, maxRecords only applies to the first result. Lo mismo se aplica a las filas que contienen resultados en el capítulo (.NET Framework proveedor de datos solo para OLE DB).The same is true for rows containing chaptered results (.NET Framework Data Provider for OLE DB only). El resultado de nivel superior está limitado por maxRecords , pero se agregan todas las filas secundarias.The top level result is limited by maxRecords, but all child rows are added.

  • Si uno de los resultados contiene un error, se omiten todos los resultados subsiguientes.If one of the results contains an error, all subsequent results are skipped.

Nota

DataSetNo contendrá más del número de registros que indica maxRecords .The DataSet will not contain more than the number of records indicated by maxRecords. Sin embargo, el conjunto de resultados completo generado por la consulta se sigue devolviendo desde el servidor.However, the entire resultset generated by the query is still returned from the server.

Notas a los desarrolladores de herederos

Al reemplazar Fill(DataSet) en una clase derivada, asegúrese de llamar al método de la clase base Fill(DataSet) .When overriding Fill(DataSet) in a derived class, be sure to call the base class's Fill(DataSet) method.

Se aplica a

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

Agrega filas en un intervalo especificado de DataSet o las actualiza para hacerlas coincidir con las filas del origen de datos utilizando los nombres de DataSet, DataTable y 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

Clase DataSet que se va a rellenar con registros y, si es necesario, con un esquema.A DataSet to fill with records and, if necessary, schema.

srcTable
String

Nombre de DataTable que se va a utilizar para la asignación de tabla.The name of the DataTable to use for table mapping.

dataReader
IDataReader

Nombre del objeto IDataReader.The name of the IDataReader.

startRecord
Int32

Número de registro de base cero inicial.The zero-based record number to start with.

maxRecords
Int32

Número máximo de registros que se van a recuperar.The maximum number of records to retrieve.

Devoluciones

Int32

Número de filas agregadas o actualizadas correctamente en la clase DataSet.The number of rows successfully added to or refreshed in the DataSet. No se incluyen las filas afectadas por instrucciones que no devuelven filas.This does not include rows affected by statements that do not return rows.

Se aplica a

Fill(DataSet, Int32, Int32, String)

Agrega filas en un intervalo especificado de DataSet o las actualiza para hacerlas coincidir con las filas del origen de datos utilizando los nombres de DataSet y 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

Clase DataSet que se va a rellenar con registros y, si es necesario, con un esquema.A DataSet to fill with records and, if necessary, schema.

startRecord
Int32

Número de registro de base cero inicial.The zero-based record number to start with.

maxRecords
Int32

Número máximo de registros que se van a recuperar.The maximum number of records to retrieve.

srcTable
String

Nombre de la tabla de origen que se utilizará para la asignación de tabla.The name of the source table to use for table mapping.

Devoluciones

Int32

Número de filas agregadas o actualizadas correctamente en la clase DataSet.The number of rows successfully added to or refreshed in the DataSet. No se incluyen las filas afectadas por instrucciones que no devuelven filas.This does not include rows affected by statements that do not return rows.

Excepciones

DataSet no es válido.The DataSet is invalid.

La tabla de origen no es válida.The source table is invalid.

O bien-or-

La conexión no es válida.The connection is invalid.

No se encontró la conexión.The connection could not be found.

El parámetro startRecord es menor que 0.The startRecord parameter is less than 0.

O bien-or- El parámetro maxRecords es menor que 0.The maxRecords parameter is less than 0.

Ejemplos

En el ejemplo siguiente se usa la clase derivada, OleDbDataAdapter , para rellenar un DataSet con 15 filas, comenzando en la fila 10, de la tabla Categories .The following example uses the derived class, OleDbDataAdapter, to fill a DataSet with 15 rows, beginning at row 10, from the Categories table. En este ejemplo se da por supuesto que ha creado un OleDbDataAdapter y un 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

Comentarios

Un maxRecords valor de 0 obtiene todos los registros encontrados después del registro de inicio.A maxRecords value of 0 gets all records found after the start record. Si maxRecords es mayor que el número de filas restantes, solo se devuelven las filas restantes y no se emite ningún error.If maxRecords is greater than the number of remaining rows, only the remaining rows are returned, and no error is issued.

Si el comando SELECT correspondiente es una instrucción que devuelve varios resultados, Fill solo se aplica maxRecords al primer resultado.If the corresponding select command is a statement returning multiple results, Fill only applies maxRecords to the first result.

El Fill método recupera los datos del origen de datos mediante una instrucción SELECT.The Fill method retrieves the data from the data source using a SELECT statement. El IDbConnection objeto asociado a la instrucción SELECT debe ser válido, pero no es necesario que esté abierto.The IDbConnection object associated with the SELECT statement must be valid, but it does not need to be open. Si el IDbConnection está cerrado antes de Fill llamar a, se abre para recuperar los datos y, a continuación, se cierran.If the IDbConnection is closed before Fill is called, it is opened to retrieve data and then closed. Si la conexión está abierta antes Fill de que se llame a, permanece abierta.If the connection is open before Fill is called, it remains open.

Si un comando no devuelve ninguna fila, no se agrega ninguna tabla a DataSet , pero no se genera ninguna excepción.If a command does not return any rows, no tables are added to the DataSet, but no exception is raised.

Si el DbDataAdapter objeto encuentra columnas duplicadas al rellenar un DataTable , generará nombres para las columnas subsiguientes, con el patrón "columnName 1", "columnName 2", "columnName 3", etc.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. Si los datos entrantes contienen columnas sin nombre, se colocan en DataSet según el patrón "Column1", "columna2", etc.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on.

Cuando la consulta especificada devuelve varios resultados, cada conjunto de resultados se coloca en una tabla independiente.When the query specified returns multiple results, each result set is placed in a separate table. Los conjuntos de resultados adicionales se denominan anexando valores enteros al nombre de tabla especificado (por ejemplo, "Table", "Table1", "Tabla2", etc.).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). Dado que no se crea ninguna tabla para una consulta que no devuelve filas, si procesa una consulta Insert seguida de una consulta Select, la tabla creada para la consulta Select se denomina "Table", ya que es la primera tabla creada.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. Las aplicaciones que usan nombres de tabla y columna deben garantizar que no se produzcan conflictos con estos patrones de nomenclatura.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

El Fill método admite escenarios en los que el DataSet contiene varios DataTable objetos cuyos nombres solo se diferencian en el uso de mayúsculas y minúsculas.The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. En tales situaciones, Fill realiza una comparación que distingue entre mayúsculas y minúsculas para encontrar la tabla correspondiente y crea una nueva tabla si no existe ninguna coincidencia exacta.In such situations, Fill performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. En el siguiente código de C# se muestra este comportamiento.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".  

Si Fill se llama a y DataSet contiene solo uno DataTable cuyo nombre difiere solo en caso de que DataTable se actualice.If Fill is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. En este escenario, la comparación no distingue entre mayúsculas y minúsculas.In this scenario, the comparison is case insensitive. En el siguiente código de C# se muestra este comportamiento.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.  

Si se produce un error o una excepción al rellenar las tablas de datos, las filas agregadas antes de que se produzca el error permanecen en las tablas de datos.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. El resto de la operación se anula.The remainder of the operation is aborted.

Cuando la instrucción SELECT usada para rellenar DataSet devuelve varios resultados, como instrucciones SQL por lotes, tenga en cuenta lo siguiente:When the SELECT statement used to populate the DataSet returns multiple results, such as batch SQL statements, be aware of the following:

  • Al procesar varios resultados de una instrucción SQL por lotes, maxRecords solo se aplica al primer resultado.When processing multiple results from a batch SQL statement, maxRecords only applies to the first result. Lo mismo se aplica a las filas que contienen resultados en el capítulo (.NET Framework proveedor de datos solo para OLE DB).The same is true for rows containing chaptered results (.NET Framework Data Provider for OLE DB only). El resultado de nivel superior está limitado por maxRecords , pero se agregan todas las filas secundarias.The top level result is limited by maxRecords, but all child rows are added.

  • Si uno de los resultados contiene un error, todos los resultados subsiguientes se omiten y no se agregan a DataSet .If one of the results contains an error, all subsequent results are skipped and not added to the DataSet.

Al utilizar las llamadas subsiguientes Fill para actualizar el contenido de DataSet , se deben cumplir dos condiciones:When using subsequent Fill calls to refresh the contents of the DataSet, two conditions must be met:

  1. La instrucción SQL debe coincidir con la que se usó inicialmente para rellenar el DataSet .The SQL statement should match the one initially used to populate the DataSet.

  2. La información de la columna de clave debe estar presente.The Key column information must be present.

Si hay información de clave principal, las filas duplicadas se reconciliarán y solo aparecerán una vez en DataTable que se corresponda con 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. La información de la clave principal se puede establecer mediante FillSchema , especificando la PrimaryKey propiedad de DataTable o estableciendo la MissingSchemaAction propiedad en 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.

Si SelectCommand devuelve los resultados de OUTER JOIN, DataAdapter no establece un valor PrimaryKey para el objeto DataTableresultante.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. Debe definir explícitamente la clave principal para asegurarse de que las filas duplicadas se resuelven correctamente.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Para obtener más información, vea definir claves principales.For more information, see Defining Primary Keys.

Nota

Al controlar instrucciones SQL por lotes que devuelven varios resultados, la implementación de FillSchema para el proveedor de datos de .NET Framework para OLE DB recupera información de esquema solo para el primer 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 información de esquema para varios resultados, use Fill con el MissingSchemaAction establecido en AddWithKey .To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

Nota

DataSetNo contendrá más del número de registros que indica maxRecords .The DataSet will not contain more than the number of records indicated by maxRecords. Sin embargo, el conjunto de resultados completo generado por la consulta se sigue devolviendo desde el servidor.However, the entire result set generated by the query is still returned from the server.

Notas a los desarrolladores de herederos

Al reemplazar Fill(DataSet) en una clase derivada, asegúrese de llamar al método de la clase base Fill(DataSet) .When overriding Fill(DataSet) in a derived class, be sure to call the base class's Fill(DataSet) method.

Se aplica a

Fill(Int32, Int32, DataTable[])

Agrega filas a DataTable o las actualiza para hacerlas coincidir con las del origen de datos, empezando en el registro especificado y recuperando hasta el número máximo de registros especificado.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

Número de registro de base cero inicial.The zero-based record number to start with.

maxRecords
Int32

Número máximo de registros que se van a recuperar.The maximum number of records to retrieve.

dataTables
DataTable[]

Objetos DataTable que se van a rellenar a partir del origen de datos.The DataTable objects to fill from the data source.

Devoluciones

Int32

Número de filas agregadas o actualizadas correctamente en la clase DataTable.The number of rows successfully added to or refreshed in the DataTable. Este valor no incluye las filas afectadas por instrucciones que no devuelven filas.This value does not include rows affected by statements that do not return rows.

Comentarios

El Fill método recupera filas del origen de datos mediante la instrucción SELECT especificada por una propiedad asociada SelectCommand .The Fill method retrieves rows from the data source using the SELECT statement specified by an associated SelectCommand property. El objeto de conexión asociado a la instrucción SELECT debe ser válido, pero no es necesario que esté abierto.The connection object associated with the SELECT statement must be valid, but it does not need to be open. Si la conexión se cierra antes de que Fill se llame a, se abre para recuperar los datos y, a continuación, se cierra.If the connection is closed before Fill is called, it is opened to retrieve data, and then it is closed. Si la conexión está abierta antes Fill de que se llame a, permanece abierta.If the connection is open before Fill is called, it remains open.

FillA continuación, la operación agrega las filas a los DataTable objetos de destino en DataSet y crea los DataTable objetos si aún no existen.The Fill operation then adds the rows to destination DataTable objects in the DataSet, creating the DataTable objects if they do not already exist. Al crear DataTable objetos, la Fill operación normalmente solo crea metadatos de nombre de columna.When creating DataTable objects, the Fill operation normally creates only column name metadata. Sin embargo, si la MissingSchemaAction propiedad se establece en AddWithKey , también se crean las claves principales y las restricciones correspondientes.However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

Si SelectCommand devuelve los resultados de OUTER JOIN, DataAdapter no establece un valor PrimaryKey para el objeto DataTableresultante.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. Debe definir explícitamente la clave principal para asegurarse de que las filas duplicadas se resuelven correctamente.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Para obtener más información, vea definir claves principales.For more information, see Defining Primary Keys.

Si el adaptador de datos encuentra columnas duplicadas al rellenar una DataTable , genera nombres para las columnas siguientes, utilizando el patrón "nombredecolumna1", "nombredecolumna2", "nombredecolumna3", etc.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. Si los datos entrantes contienen columnas sin nombre, se colocan en DataSet según el patrón "Column1", "columna2", etc.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. Cuando se agregan varios conjuntos de resultados a DataSet , cada conjunto de resultados se coloca en una tabla independiente.When multiple result sets are added to the DataSet, each result set is placed in a separate table. Los conjuntos de resultados adicionales se denominan anexando valores enteros al nombre de tabla especificado (por ejemplo, "Table", "Table1", "Tabla2", etc.).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). Las aplicaciones que usan nombres de tabla y columna deben garantizar que no se produzcan conflictos con estos patrones de nomenclatura.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

Cuando la instrucción SELECT usada para rellenar DataSet devuelve varios resultados, como las instrucciones SQL por lotes, si uno de los resultados contiene un error, todos los resultados subsiguientes se omiten y no se agregan a 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.

Puede usar el Fill método varias veces en el mismo DataTable .You can use the Fill method multiple times on the same DataTable. Si existe una clave principal, las filas entrantes se combinan con filas coincidentes que ya existen.If a primary key exists, incoming rows are merged with matching rows that already exist. Si no existe ninguna clave principal, las filas entrantes se anexan a DataTable .If no primary key exists, incoming rows are appended to the DataTable.

Nota

Al controlar instrucciones SQL por lotes que devuelven varios resultados, la implementación de FillSchema para el proveedor de datos de .NET Framework para OLE DB recupera información de esquema solo para el primer 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 información de esquema para varios resultados, use Fill con el MissingSchemaAction establecido en AddWithKey .To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

Se aplica a

Fill(DataTable)

Agrega filas en un intervalo especificado de DataSet o las actualiza para hacerlas coincidir con las filas del origen de datos utilizando el nombre de 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

Nombre de DataTable que se va a utilizar para la asignación de tabla.The name of the DataTable to use for table mapping.

Devoluciones

Int32

Número de filas agregadas o actualizadas correctamente en la clase DataSet.The number of rows successfully added to or refreshed in the DataSet. No se incluyen las filas afectadas por instrucciones que no devuelven filas.This does not include rows affected by statements that do not return rows.

Excepciones

La tabla de origen no es válida.The source table is invalid.

Comentarios

El Fill método recupera filas del origen de datos mediante la instrucción SELECT especificada por una propiedad asociada SelectCommand .The Fill method retrieves rows from the data source using the SELECT statement specified by an associated SelectCommand property. El objeto de conexión asociado a la instrucción SELECT debe ser válido, pero no es necesario que esté abierto.The connection object associated with the SELECT statement must be valid, but it does not need to be open. Si la conexión se cierra antes de que Fill se llame a, se abre para recuperar los datos y, a continuación, se cierra.If the connection is closed before Fill is called, it is opened to retrieve data, then closed. Si la conexión está abierta antes Fill de que se llame a, permanece abierta.If the connection is open before Fill is called, it remains open.

FillA continuación, la operación agrega las filas a los DataTable objetos de destino en DataSet y crea los DataTable objetos si aún no existen.The Fill operation then adds the rows to destination DataTable objects in the DataSet, creating the DataTable objects if they do not already exist. Al crear DataTable objetos, la Fill operación normalmente solo crea metadatos de nombre de columna.When creating DataTable objects, the Fill operation normally creates only column name metadata. Sin embargo, si la MissingSchemaAction propiedad se establece en AddWithKey , también se crean las claves principales y las restricciones correspondientes.However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

Si DbDataAdapter encuentra columnas duplicadas al rellenar una DataTable , genera nombres para las columnas siguientes, con el patrón "columnName 1", "columnName 2", "columnName 3", etc.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. Si los datos entrantes contienen columnas sin nombre, se colocan en DataSet según el patrón "Column1", "columna2", etc.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. Cuando se agregan varios conjuntos de resultados a DataSet cada conjunto de resultados, se coloca en una tabla independiente.When multiple result sets are added to the DataSet each result set is placed in a separate table.

La sobrecarga de Fill que toma DataTable como parámetro solo obtiene el primer resultado.The overload of Fill that takes DataTable as a parameter only obtains the first result. Use una sobrecarga de Fill que tome DataSet como parámetro para obtener varios resultados.Use an overload of Fill that takes DataSet as a parameter to obtain multiple results.

El Fill método admite escenarios en los que el DataSet contiene varios DataTable objetos cuyos nombres solo se diferencian en el uso de mayúsculas y minúsculas.The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. En tales situaciones, Fill realiza una comparación que distingue entre mayúsculas y minúsculas para encontrar la tabla correspondiente y crea una nueva tabla si no existe ninguna coincidencia exacta.In such situations, Fill performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. En el siguiente código de C# se muestra este comportamiento.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".  

Si Fill se llama a y DataSet contiene solo uno DataTable cuyo nombre difiere solo en caso de que DataTable se actualice.If Fill is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. En este escenario, la comparación no distingue entre mayúsculas y minúsculas.In this scenario, the comparison is case insensitive. En el siguiente código de C# se muestra este comportamiento.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.  

Puede usar el Fill método varias veces en el mismo DataTable .You can use the Fill method multiple times on the same DataTable. Si existe una clave principal, las filas entrantes se combinan con filas coincidentes que ya existen.If a primary key exists, incoming rows are merged with matching rows that already exist. Si no existe ninguna clave principal, las filas entrantes se anexan a DataTable .If no primary key exists, incoming rows are appended to the DataTable.

Si SelectCommand devuelve los resultados de OUTER JOIN, DataAdapter no establece un valor PrimaryKey para el objeto DataTableresultante.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. Debe definir explícitamente la clave principal para asegurarse de que las filas duplicadas se resuelven correctamente.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Para obtener más información, vea definir claves principales.For more information, see Defining Primary Keys.

Nota

Al controlar instrucciones SQL por lotes que devuelven varios resultados, la implementación de Fill y FillSchema para un proveedor de datos de .NET Framework recupera información de esquema solo para el primer 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 a los desarrolladores de herederos

Esta sobrecarga del Fill(DataSet) método está protegida y está diseñada para su uso por parte de un proveedor de datos de .NET Framework.This overload of the Fill(DataSet) method is protected and is designed for use by a .NET Framework data provider.

Se aplica a

Fill(DataTable, IDataReader)

Agrega filas a un objeto DataTable o las actualiza para hacerlas coincidir con las del origen de datos, utilizando los nombres de DataTable y 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

Clase DataTable que se va a rellenar con registros y, si es necesario, con un esquema.A DataTable to fill with records and, if necessary, schema.

dataReader
IDataReader

Nombre del objeto IDataReader.The name of the IDataReader.

Devoluciones

Int32

Número de filas agregadas o actualizadas correctamente en la clase DataTable.The number of rows successfully added to or refreshed in the DataTable. No se incluyen las filas afectadas por instrucciones que no devuelven filas.This does not include rows affected by statements that do not return rows.

Se aplica a

Fill(DataSet, String)

Agrega filas a DataSet o las actualiza para hacerlas coincidir con las filas del origen de datos utilizando los nombres de DataSet y 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

Clase DataSet que se va a rellenar con registros y, si es necesario, con un esquema.A DataSet to fill with records and, if necessary, schema.

srcTable
String

Nombre de la tabla de origen que se utilizará para la asignación de tabla.The name of the source table to use for table mapping.

Devoluciones

Int32

Número de filas agregadas o actualizadas correctamente en la clase DataSet.The number of rows successfully added to or refreshed in the DataSet. No se incluyen las filas afectadas por instrucciones que no devuelven filas.This does not include rows affected by statements that do not return rows.

Excepciones

La tabla de origen no es válida.The source table is invalid.

Ejemplos

En el ejemplo siguiente se usa la clase derivada, OleDbDataAdapter , para rellenar un DataSet con las filas de la tabla Categories.The following example uses the derived class, OleDbDataAdapter, to fill a DataSet with rows from the categories table. En este ejemplo se da por supuesto que ha creado un OleDbDataAdapter y un 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

Comentarios

El Fill método recupera los datos del origen de datos mediante una instrucción SELECT.The Fill method retrieves the data from the data source using a SELECT statement. El IDbConnection objeto asociado al comando SELECT debe ser válido, pero no es necesario que esté abierto.The IDbConnection object associated with the select command must be valid, but it does not need to be open. Si el IDbConnection está cerrado antes de Fill llamar a, se abre para recuperar los datos y, a continuación, se cierra.If the IDbConnection is closed before Fill is called, it is opened to retrieve data, then closed. Si la conexión está abierta antes Fill de que se llame a, permanece abierta.If the connection is open before Fill is called, it remains open.

Si un comando no devuelve ninguna fila, no se agrega ninguna tabla a DataSet , y no se genera ninguna excepción.If a command does not return any rows, no tables are added to the DataSet, and no exception is raised.

Si el DbDataAdapter objeto encuentra columnas duplicadas al rellenar un DataTable , generará nombres para las columnas subsiguientes, con el patrón "nombredecolumna1", "nombredecolumna2", "nombredecolumna3", etc.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. Si los datos entrantes contienen columnas sin nombre, se colocan en DataSet según el patrón "Column1", "columna2", etc.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on.

Cuando la consulta especificada devuelve varios resultados, cada conjunto de resultados se coloca en una tabla independiente.When the query specified returns multiple results, each result set is placed in a separate table. Los conjuntos de resultados adicionales se denominan anexando valores enteros al nombre de tabla especificado (por ejemplo, "Table", "Table1", "Tabla2", etc.).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). Puesto que no se crea ninguna tabla para una consulta que no devuelve filas, si fuera a procesar una consulta Insert seguida de una consulta Select, la tabla creada para la consulta Select se denominaría "Table", ya que es la primera tabla creada.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. Las aplicaciones que usan nombres de tabla y columna deben garantizar que no se produzcan conflictos con estos patrones de nomenclatura.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

El Fill método admite escenarios en los que el DataSet contiene varios DataTable objetos cuyos nombres solo se diferencian en el uso de mayúsculas y minúsculas.The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. En tales situaciones, Fill realiza una comparación que distingue entre mayúsculas y minúsculas para encontrar la tabla correspondiente y crea una nueva tabla si no existe ninguna coincidencia exacta.In such situations, Fill performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. En el siguiente código de C# se muestra este comportamiento.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".  

Si Fill se llama a y DataSet contiene solo uno DataTable cuyo nombre difiere solo en caso de que DataTable se actualice.If Fill is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. En este escenario, la comparación no distingue entre mayúsculas y minúsculas.In this scenario, the comparison is case insensitive. En el siguiente código de C# se muestra este comportamiento.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.  

Si se produce un error o una excepción al rellenar las tablas de datos, las filas agregadas antes de que se produzca el error permanecen en las tablas de datos.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. El resto de la operación se anula.The remainder of the operation is aborted.

Cuando la instrucción SELECT usada para rellenar DataSet devuelve varios resultados, como una instrucción SQL por lotes, tenga en cuenta lo siguiente:When the SELECT statement used to populate the DataSet returns multiple results, such as a batch SQL statement, be aware of the following:

  • Si uno de los resultados contiene un error, todos los resultados subsiguientes se omiten y no se agregan a DataSet .If one of the results contains an error, all subsequent results are skipped and not added to the DataSet.

Al utilizar las llamadas subsiguientes Fill para actualizar el contenido de DataSet , se deben cumplir dos condiciones:When using subsequent Fill calls to refresh the contents of the DataSet, two conditions must be met:

  1. La instrucción SQL debe coincidir con la que se usó inicialmente para rellenar el DataSet .The SQL statement should match the one initially used to populate the DataSet.

  2. La información de la columna de clave debe estar presente.The Key column information must be present. Si hay información de clave principal, las filas duplicadas se reconcilian y solo aparecen una vez en el DataTable que corresponde a DataSet .If primary key information is present, any duplicate rows are reconciled and only appear once in the DataTable that corresponds to the DataSet. La información de la clave principal se puede establecer mediante FillSchema , especificando la PrimaryKey propiedad de DataTable o estableciendo la MissingSchemaAction propiedad en 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.

Si SelectCommand devuelve los resultados de OUTER JOIN, DataAdapter no establece un valor PrimaryKey para el objeto DataTableresultante.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. Debe definir explícitamente la clave principal para asegurarse de que las filas duplicadas se resuelven correctamente.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Para obtener más información, vea definir claves principales.For more information, see Defining Primary Keys.

Nota

Al controlar instrucciones SQL por lotes que devuelven varios resultados, la implementación de FillSchema para el proveedor de datos de .NET Framework para OLE DB recupera información de esquema solo para el primer 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 información de esquema para varios resultados, use Fill con el MissingSchemaAction establecido en AddWithKey .To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

Notas a los desarrolladores de herederos

Al reemplazar Fill(DataSet) en una clase derivada, asegúrese de llamar al método de la clase base Fill(DataSet) .When overriding Fill(DataSet) in a derived class, be sure to call the base class's Fill(DataSet) method.

Se aplica a

Fill(DataSet)

Agrega o actualiza filas en 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

Clase DataSet que se va a rellenar con registros y, si es necesario, con un esquema.A DataSet to fill with records and, if necessary, schema.

Devoluciones

Int32

Número de filas agregadas o actualizadas correctamente en la clase DataSet.The number of rows successfully added to or refreshed in the DataSet. No se incluyen las filas afectadas por instrucciones que no devuelven filas.This does not include rows affected by statements that do not return rows.

Implementaciones

Comentarios

El Fill método recupera los datos del origen de datos mediante una instrucción SELECT.The Fill method retrieves the data from the data source using a SELECT statement. El IDbConnection objeto asociado al comando SELECT debe ser válido, pero no es necesario que esté abierto.The IDbConnection object associated with the select command must be valid, but it does not need to be open. Si el IDbConnection está cerrado antes de Fill llamar a, se abre para recuperar los datos y, a continuación, se cierran.If the IDbConnection is closed before Fill is called, it is opened to retrieve data and then closed. Si la conexión está abierta antes Fill de que se llame a, permanece abierta.If the connection is open before Fill is called, it remains open.

Si se produce un error o una excepción al rellenar las tablas de datos, las filas agregadas antes de que se produzca el error permanecen en las tablas de datos.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. El resto de la operación se anula.The remainder of the operation is aborted.

Si un comando no devuelve ninguna fila, no se agrega ninguna tabla a DataSet , y no se genera ninguna excepción.If a command does not return any rows, no tables are added to the DataSet, and no exception is raised.

Si el DbDataAdapter objeto encuentra columnas duplicadas al rellenar un DataTable , genera nombres para las columnas subsiguientes con el patrón "columnName 1", "columnName 2", "columnName 3", etc.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. Si los datos entrantes contienen columnas sin nombre, se colocan en DataSet según el patrón "Column1", "columna2", etc.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on.

Cuando la consulta especificada devuelve varios resultados, el conjunto de resultados para cada consulta que devuelve una fila se coloca en una tabla independiente.When the query specified returns multiple results, the result set for each row returning query is placed in a separate table. Los conjuntos de resultados adicionales se denominan anexando valores enteros al nombre de tabla especificado (por ejemplo, "Table", "Table1", "Tabla2", etc.).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). Dado que no se crea ninguna tabla para una consulta que no devuelve filas, si procesa una consulta Insert seguida de una consulta Select, la tabla creada para la consulta Select se denomina "Table" porque es la primera tabla creada.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. Las aplicaciones que usan nombres de tabla y columna deben garantizar que no se produzcan conflictos con estos patrones de nomenclatura.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

Cuando la instrucción SELECT usada para rellenar DataSet devuelve varios resultados, como instrucciones SQL por lotes, si uno de los resultados contiene un error, todos los resultados subsiguientes se omiten y no se agregan a 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.

Al utilizar las llamadas subsiguientes Fill para actualizar el contenido de DataSet , se deben cumplir dos condiciones:When using subsequent Fill calls to refresh the contents of the DataSet, two conditions must be met:

  1. La instrucción SQL debe coincidir con la que se usó inicialmente para rellenar el DataSet .The SQL statement should match the one initially used to populate the DataSet.

  2. La información de la columna de clave debe estar presente.The Key column information must be present.

Si hay información de clave principal, las filas duplicadas se reconcilian y solo aparecen una vez en el DataTable que corresponde a DataSet .If primary key information is present, any duplicate rows are reconciled and only appear once in the DataTable that corresponds to the DataSet. La información de la clave principal se puede establecer mediante FillSchema , especificando la PrimaryKey propiedad de DataTable o estableciendo la MissingSchemaAction propiedad en 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.

Si SelectCommand devuelve los resultados de OUTER JOIN, DataAdapter no establece un valor PrimaryKey para el objeto DataTableresultante.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. Debe definir explícitamente la clave principal para asegurarse de que las filas duplicadas se resuelven correctamente.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Para obtener más información, vea definir claves principales.For more information, see Defining Primary Keys.

Nota

Al controlar instrucciones SQL por lotes que devuelven varios resultados, la implementación de FillSchema para el proveedor de datos de .NET Framework para OLE DB recupera información de esquema solo para el primer 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 información de esquema para varios resultados, use Fill con el MissingSchemaAction establecido en AddWithKey .To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

Se aplica a

Fill(DataTable, IDbCommand, CommandBehavior)

Agrega filas a un objeto DataTable o las actualiza para hacerlas coincidir con las del origen de datos, utilizando los objetos DataTable, IDbCommand y 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

Clase DataTable que se va a rellenar con registros y, si es necesario, con un esquema.A DataTable to fill with records and, if necessary, schema.

command
IDbCommand

Instrucción SELECT de SQL utilizada para recuperar las filas del origen de datos.The SQL SELECT statement used to retrieve rows from the data source.

behavior
CommandBehavior

Uno de los valores de CommandBehavior.One of the CommandBehavior values.

Devoluciones

Int32

Número de filas agregadas o actualizadas correctamente en la clase DataTable.The number of rows successfully added to or refreshed in the DataTable. No se incluyen las filas afectadas por instrucciones que no devuelven filas.This does not include rows affected by statements that do not return rows.

Comentarios

El Fill método recupera filas del origen de datos mediante la instrucción SELECT especificada por una propiedad asociada SelectCommand .The Fill method retrieves rows from the data source using the SELECT statement specified by an associated SelectCommand property. El objeto de conexión asociado a la instrucción SELECT debe ser válido, pero no es necesario que esté abierto.The connection object associated with the SELECT statement must be valid, but it does not need to be open. Si la conexión se cierra antes de Fill que se llame a, se abre para recuperar los datos y, a continuación, se cierran.If the connection is closed before Fill is called, it is opened to retrieve data and then closed. Si la conexión está abierta antes Fill de que se llame a, permanece abierta.If the connection is open before Fill is called, it remains open.

FillA continuación, la operación agrega las filas al DataTable objeto de destino especificado en DataSet y crea el DataTable objeto si aún no existe.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. Al crear un DataTable objeto, la Fill operación normalmente solo crea metadatos de nombre de columna.When creating a DataTable object, the Fill operation normally creates only column name metadata. Sin embargo, si la MissingSchemaAction propiedad se establece en AddWithKey , también se crean las claves principales y las restricciones correspondientes.However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

Si el DbDataAdapter objeto encuentra columnas duplicadas al rellenar un DataTable , generará nombres para las columnas subsiguientes, con el patrón "columnName 1", "columnName 2", "columnName 3", etc.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. Si los datos entrantes contienen columnas sin nombre, se colocan en DataSet según el patrón "Column1", "columna2", etc.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on.

La sobrecarga de Fill que toma DataTable como parámetro solo obtiene el primer resultado.The overload of Fill that takes DataTable as a parameter only obtains the first result. Use una sobrecarga de Fill que tome DataSet como parámetro para obtener varios resultados.Use an overload of Fill that takes DataSet as a parameter to obtain multiple results.

Puede usar el Fill método varias veces en el mismo DataTable .You can use the Fill method multiple times on the same DataTable. Si existe una clave principal, las filas entrantes se combinan con filas coincidentes que ya existen.If a primary key exists, incoming rows are merged with matching rows that already exist. Si no existe ninguna clave principal, las filas entrantes se anexan a DataTable .If no primary key exists, incoming rows are appended to the DataTable.

Si SelectCommand devuelve los resultados de OUTER JOIN, DataAdapter no establece un valor PrimaryKey para el objeto DataTableresultante.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. Debe definir explícitamente la clave principal para asegurarse de que las filas duplicadas se resuelven correctamente.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Para obtener más información, vea definir claves principales.For more information, see Defining Primary Keys.

Nota

Al controlar instrucciones SQL por lotes que devuelven varios resultados, la implementación de FillSchema para el proveedor de datos de .NET Framework para OLE DB recupera información de esquema solo para el primer 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 información de esquema para varios resultados, use Fill con el MissingSchemaAction establecido en AddWithKey .To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

Notas a los desarrolladores de herederos

Esta sobrecarga del Fill(DataSet) método está protegida y está diseñada para su uso por parte de un proveedor de datos de .NET Framework.This overload of the Fill(DataSet) method is protected and is designed for use by a .NET Framework data provider.

Se aplica a