System.Data.Common.DataAdapter.Fill Method

Adds or refreshes rows in the System.Data.DataSet to match those in the data source.

Syntax

public virtual int Fill (System.Data.DataSet dataSet)

Parameters

dataSet
A System.Data.DataSet to fill with records and, if necessary, schema.

Returns

The number of rows successfully added to or refreshed in the System.Data.DataSet. This does not include rows affected by statements that do not return rows.

Remarks

The DataAdapter.Fill(System.Data.DataSet) method retrieves rows from the data source using the SELECT statement specified by an associated System.Data.IDbDataAdapter.SelectCommand property. The connection object associated with the SELECT statement must be valid, but it does not need to be open. If the connection is closed before DataAdapter.Fill(System.Data.DataSet) is called, it is opened to retrieve data, then closed. If the connection is open before DataAdapter.Fill(System.Data.DataSet) is called, it remains open.

The DataAdapter.Fill(System.Data.DataSet) operation then adds the rows to destination System.Data.DataTable objects in the System.Data.DataSet, creating the System.Data.DataTable objects if they do not already exist. When creating System.Data.DataTable objects, the DataAdapter.Fill(System.Data.DataSet) operation normally creates only column name metadata. However, if the System.Data.IDataAdapter.MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a System.Data.DataTable.PrimaryKey value for the resulting System.Data.DataTable. You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. For more information, see Defining a Primary Key for a Table.

If the data adapter encounters duplicate columns while populating a System.Data.DataTable, it generates names for the subsequent columns, using the pattern "columnname1", "columnname2", "columnname3", and so on. If the incoming data contains unnamed columns, they are placed in the System.Data.DataSet according to the pattern "Column1", "Column2", and so on. When multiple result sets are added to the System.Data.DataSet each result set is placed in a separate table. Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

When the SELECT statement used to populate the System.Data.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 System.Data.DataSet.

You can use the DataAdapter.Fill(System.Data.DataSet) method multiple times on the same System.Data.DataTable. If a primary key exists, incoming rows are merged with matching rows that already exist. If no primary key exists, incoming rows are appended to the System.Data.DataTable.

Note:

When handling batch SQL statements that return multiple results, the implementation of DbDataAdapter.FillSchema(System.Data.DataTable, System.Data.SchemaType) for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. To retrieve schema information for multiple results, use DbDataAdapter.Fill(System.Data.DataSet) with the System.Data.MissingSchemaAction set to AddWithKey.

Requirements

Namespace: System.Data.Common
Assembly: System.Data (in System.Data.dll)
Assembly Versions: 1.0.5000.0, 2.0.0.0