DbDataAdapter.Fill Метод

Определение

Заполняет объект DataSet или объект DataTable.Fills a DataSet or a DataTable.

Перегрузки

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

Добавляет или обновляет строки в указанном диапазоне в объект DataSet для получения соответствия строкам в источнике данных с помощью имен DataSet и исходной таблицы, командной строки и поведения команды.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)

Добавляет или обновляет строки в указанном диапазоне в объект DataSet для получения соответствия строкам в источнике данных с использованием имен DataSet и 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)

Добавляет или обновляет строки в указанном диапазоне в объект DataSet для получения соответствия строкам в источнике данных с использованием имен DataSet, DataTable и 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)

Добавляет или обновляет строки в указанном диапазоне в объект DataSet для получения соответствия строкам в источнике данных с использованием имен DataSet и 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[])

Добавляет или обновляет строки в объекте DataTable для получения соответствия строкам в источнике данных, начиная с указанной записи и вплоть до заданного максимального количества получаемых записей.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)

Добавляет или обновляет строки в указанном диапазоне в объект DataSet для получения соответствия строкам в источнике данных с использованием имени 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)

Добавляет или обновляет строки в объекте DataTable для получения соответствия строкам в источнике данных с помощью указанных имен DataTable и IDataReader.Adds or refreshes rows in a DataTable to match those in the data source using the specified DataTable and IDataReader names.

Fill(DataSet, String)

Добавляет или обновляет строки в объекте DataSet для получения соответствия строкам в источнике данных с помощью имен DataSet и DataTable.Adds or refreshes rows in the DataSet to match those in the data source using the DataSet and DataTable names.

Fill(DataSet)

Добавляет или обновляет строки в объекте DataSet.Adds or refreshes rows in the DataSet.

Fill(DataTable, IDbCommand, CommandBehavior)

Добавляет или обновляет строки в объекте DataTable для получения соответствия строкам в источнике данных с помощью указанного объекта DataTable, интерфейса IDbCommand и значения типа CommandBehavior.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)

Добавляет или обновляет строки в указанном диапазоне в объект DataSet для получения соответствия строкам в источнике данных с помощью имен DataSet и исходной таблицы, командной строки и поведения команды.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

Параметры

dataSet
DataSet

Объект DataSet для заполнения записями и, если необходимо, — схемой.A DataSet to fill with records and, if necessary, schema.

startRecord
Int32

Номер записи (с нуля), с которой необходимо начать.The zero-based record number to start with.

maxRecords
Int32

Максимальное число извлекаемых записей.The maximum number of records to retrieve.

srcTable
String

Имя исходной таблицы, используемое для сопоставления таблиц.The name of the source table to use for table mapping.

command
IDbCommand

Оператор SQL SELECT используется для извлечения строки из источника данных.The SQL SELECT statement used to retrieve rows from the data source.

behavior
CommandBehavior

Одно из значений перечисления CommandBehavior.One of the CommandBehavior values.

Возвращаемое значение

Int32

Количество строк, успешно добавленных или обновленных в объекте DataSet.The number of rows successfully added to or refreshed in the DataSet. Не включает строки, на которые воздействуют операторы, не возвращающие строк.This does not include rows affected by statements that do not return rows.

Исключения

Исходная таблица является недопустимой.The source table is invalid.

Значение параметра startRecord меньше 0.The startRecord parameter is less than 0.

-или--or- Значение параметра maxRecords меньше 0.The maxRecords parameter is less than 0.

Комментарии

FillМетод получает строки из источника данных с помощью инструкции SELECT, заданной связанным SelectCommand свойством.The Fill method retrieves rows from the data source using the SELECT statement specified by an associated SelectCommand property. Объект соединения, связанный с инструкцией SELECT, должен быть допустимым, но не должен быть открытым.The connection object associated with the SELECT statement must be valid, but it does not need to be open. Если соединение закрывается до Fill вызова метода, оно открывается для получения данных, а затем закрывается.If the connection is closed before Fill is called, it is opened to retrieve data, then closed. Если соединение открыто до Fill вызова метода, оно остается открытым.If the connection is open before Fill is called, it remains open.

FillЗатем операция добавляет строки в целевые DataTable объекты в DataSet , создавая DataTable объекты, если они еще не существуют.The Fill operation then adds the rows to destination DataTable objects in the DataSet, creating the DataTable objects if they do not already exist. При создании DataTable объектов Fill операция обычно создает только метаданные имени столбца.When creating DataTable objects, the Fill operation normally creates only column name metadata. Однако если MissingSchemaAction свойство имеет значение AddWithKey , то также создаются соответствующие первичные ключи и ограничения.However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

Если DbDataAdapter обнаруживает дублированные столбцы при заполнении DataTable , он создает имена для последующих столбцов с использованием шаблона "ColumnName 1", "ColumnName 2", "ColumnName 3" и т. д.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. Если входящие данные содержат безымянные столбцы, они помещаются в в соответствии с DataSet шаблоном «Столбец1», «Столбец2» и т. д.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. При добавлении нескольких результирующих наборов в DataSet каждый результирующий набор помещается в отдельную таблицу.When multiple result sets are added to the DataSet each result set is placed in a separate table. Дополнительные результирующие наборы именуются путем добавления целочисленных значений к заданному имени таблицы (например, "Table", "table1", "Table2" и т. д.).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.

FillМетод поддерживает сценарии, в которых объект DataSet содержит несколько DataTable объектов, имена которых отличаются только регистром.The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. В таких ситуациях Fill выполняет сравнение с учетом регистра для поиска соответствующей таблицы и создает новую таблицу, если точное совпадение не существует.In such situations, Fill performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. Это поведение проиллюстрировано в следующем коде C#.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".  

Если Fill вызывается и DataSet содержит только те, DataTable имя которых отличается от имени только регистром, то DataTable обновляется.If Fill is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. В этом сценарии сравнение выполняется без учета регистра.In this scenario, the comparison is case insensitive. Это поведение проиллюстрировано в следующем коде C#.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.  

Метод можно использовать Fill несколько раз для одного и того же DataTable .You can use the Fill method multiple times on the same DataTable. Если первичный ключ существует, входящие строки объединяются с совпадающими строками, которые уже существуют.If a primary key exists, incoming rows are merged with matching rows that already exist. Если первичный ключ не существует, входящие строки добавляются к DataTable .If no primary key exists, incoming rows are appended to the DataTable.

Если SelectCommand возвращает результаты OUTER JOIN, то DataAdapter не задает значение PrimaryKey для результирующего объекта DataTable.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. Необходимо явно определить первичный ключ, чтобы гарантировать правильное разрешение повторяющихся строк.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Дополнительные сведения см. в разделе Определение первичных ключей.For more information, see Defining Primary Keys.

Примечание

При обработке инструкций SQL пакетной службы, возвращающих несколько результатов, реализация Fill и FillSchema для платформа .NET Framework поставщик данных получает сведения о схеме только для первого результата.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.

Примечания для тех, кто наследует этот метод

Эта перегрузка Fill(DataSet) метода защищена и разработана для использования платформа .NET Framework поставщиком данных.This overload of the Fill(DataSet) method is protected and is designed for use by a .NET Framework data provider.

См. также раздел

Применяется к

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

Добавляет или обновляет строки в указанном диапазоне в объект DataSet для получения соответствия строкам в источнике данных с использованием имен DataSet и 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

Параметры

dataTables
DataTable[]

Объект DataTable для заполнения из источника данных.The DataTable objects to fill from the data source.

startRecord
Int32

Номер записи (с нуля), с которой необходимо начать.The zero-based record number to start with.

maxRecords
Int32

Максимальное число извлекаемых записей.The maximum number of records to retrieve.

command
IDbCommand

Интерфейс IDbCommand, исполняемый для заполнения объектов DataTable.The IDbCommand executed to fill the DataTable objects.

behavior
CommandBehavior

Одно из значений перечисления CommandBehavior.One of the CommandBehavior values.

Возвращаемое значение

Int32

Количество строк, успешно добавленных или обновленных в таблицах данных.The number of rows added to or refreshed in the data tables.

Исключения

DataSet не является допустимым.The DataSet is invalid.

Исходная таблица является недопустимой.The source table is invalid.

-или--or-

Подключение является недопустимым.The connection is invalid.

Не удалось найти подключение.The connection could not be found.

Значение параметра startRecord меньше 0.The startRecord parameter is less than 0.

-или--or- Значение параметра maxRecords меньше 0.The maxRecords parameter is less than 0.

Комментарии

maxRecordsЗначение 0 получает все записи, найденные после начальной записи.A maxRecords value of 0 gets all records found after the start record. Если maxRecords значение больше числа оставшихся строк, возвращаются только оставшиеся строки и не выдается сообщение об ошибке.If maxRecords is greater than the number of remaining rows, only the remaining rows are returned and no error is issued.

FillМетод получает данные из источника данных с помощью инструкции SELECT.The Fill method retrieves the data from the data source using a SELECT statement. IDbConnectionОбъект, связанный с инструкцией SELECT, должен быть допустимым, но не должен быть открытым.The IDbConnection object associated with the SELECT statement must be valid, but it does not need to be open. Если объект IDbConnection закрыт до Fill вызова метода, он открывается для получения данных, а затем закрывается.If the IDbConnection is closed before Fill is called, it is opened to retrieve data, then closed. Если соединение открыто до Fill вызова метода, оно остается открытым.If the connection is open before Fill is called, it remains open.

Если команда не возвращает ни одной строки, в объект не добавляются никакие таблицы DataSet , но исключение не создается.If a command does not return any rows, no tables are added to the DataSet, but no exception is raised.

Если DbDataAdapter объект встречает дублирующиеся столбцы при заполнении DataTable , он создает имена для последующих столбцов, используя шаблон "ColumnName 1", "ColumnName 2", "ColumnName 3" и т. д.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. Если входящие данные содержат безымянные столбцы, они помещаются в в соответствии с DataSet шаблоном «Столбец1», «Столбец2» и т. д.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on.

Если указанный запрос возвращает несколько результатов, каждый результирующий набор помещается в отдельную таблицу.When the query specified returns multiple results, each result set is placed in a separate table. Дополнительные результирующие наборы именуются путем добавления целочисленных значений к заданному имени таблицы (например, "Table", "table1", "Table2" и т. д.).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). Поскольку таблица не создается для запроса, который не возвращает строки, то если бы был обработан запрос INSERT, а затем запрос SELECT, то таблица, созданная для запроса SELECT, будет называться «Table», поскольку это первая созданная таблица.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. Приложения, использующие имена столбцов и таблиц, должны гарантировать, что конфликты с этими шаблонами именования не происходят.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

FillМетод поддерживает сценарии, в которых объект DataSet содержит несколько DataTable объектов, имена которых отличаются только регистром.The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. В таких ситуациях Fill выполняет сравнение с учетом регистра для поиска соответствующей таблицы и создает новую таблицу, если точное совпадение не существует.In such situations, Fill performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. Это поведение проиллюстрировано в следующем коде C#.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".  

Если Fill вызывается и DataSet содержит только те, DataTable имя которых отличается от имени только регистром, то DataTable обновляется.If Fill is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. В этом сценарии сравнение выполняется без учета регистра.In this scenario, the comparison is case insensitive. Это поведение проиллюстрировано в следующем коде C#.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.  

Если при заполнении таблиц данных возникла ошибка или исключение, то строки, добавленные до возникновения ошибки, остаются в таблицах данных.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. Оставшаяся часть операции прервана.The remainder of the operation is aborted.

Если инструкция SELECT, используемая для заполнения DataTable объектов, возвращает несколько результатов, например инструкцию SQL Batch, следует учитывать следующее:When the SELECT statement used to populate the DataTable objects returns multiple results, such as a batch SQL statement, be aware of the following:

  • При обработке нескольких результатов в пакетной инструкции SQL maxRecords применяется только к первому результату.When processing multiple results from a batch SQL statement, maxRecords only applies to the first result. Это справедливо и для строк, содержащих разбитые на разделы результаты (платформа .NET Framework поставщик данных только для OLE DB).The same is true for rows containing chaptered results (.NET Framework Data Provider for OLE DB only). Результат верхнего уровня ограничен maxRecords , но добавляются все дочерние строки.The top level result is limited by maxRecords, but all child rows are added.

  • Если один из результатов содержит ошибку, все последующие результаты пропускаются.If one of the results contains an error, all subsequent results are skipped.

Примечание

DataSetНе будет содержать число записей, указанное в параметре maxRecords .The DataSet will not contain more than the number of records indicated by maxRecords. Однако весь набор результатов, сформированный запросом, по-прежнему возвращается с сервера.However, the entire resultset generated by the query is still returned from the server.

Примечания для тех, кто наследует этот метод

При переопределении Fill(DataSet) в производном классе обязательно вызовите метод базового класса Fill(DataSet) .When overriding Fill(DataSet) in a derived class, be sure to call the base class's Fill(DataSet) method.

См. также раздел

Применяется к

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

Добавляет или обновляет строки в указанном диапазоне в объект DataSet для получения соответствия строкам в источнике данных с использованием имен DataSet, DataTable и 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

Параметры

dataSet
DataSet

Объект DataSet для заполнения записями и, если необходимо, — схемой.A DataSet to fill with records and, if necessary, schema.

srcTable
String

Имя объекта DataTable, используемое для сопоставления таблицы.The name of the DataTable to use for table mapping.

dataReader
IDataReader

Имя IDataReader.The name of the IDataReader.

startRecord
Int32

Номер записи (с нуля), с которой необходимо начать.The zero-based record number to start with.

maxRecords
Int32

Максимальное число извлекаемых записей.The maximum number of records to retrieve.

Возвращаемое значение

Int32

Количество строк, успешно добавленных или обновленных в объекте DataSet.The number of rows successfully added to or refreshed in the DataSet. Не включает строки, на которые воздействуют операторы, не возвращающие строк.This does not include rows affected by statements that do not return rows.

Применяется к

Fill(DataSet, Int32, Int32, String)

Добавляет или обновляет строки в указанном диапазоне в объект DataSet для получения соответствия строкам в источнике данных с использованием имен DataSet и 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

Параметры

dataSet
DataSet

Объект DataSet для заполнения записями и, если необходимо, — схемой.A DataSet to fill with records and, if necessary, schema.

startRecord
Int32

Номер записи (с нуля), с которой необходимо начать.The zero-based record number to start with.

maxRecords
Int32

Максимальное число извлекаемых записей.The maximum number of records to retrieve.

srcTable
String

Имя исходной таблицы, используемое для сопоставления таблиц.The name of the source table to use for table mapping.

Возвращаемое значение

Int32

Количество строк, успешно добавленных или обновленных в объекте DataSet.The number of rows successfully added to or refreshed in the DataSet. Не включает строки, на которые воздействуют операторы, не возвращающие строк.This does not include rows affected by statements that do not return rows.

Исключения

DataSet не является допустимым.The DataSet is invalid.

Исходная таблица является недопустимой.The source table is invalid.

-или--or-

Подключение является недопустимым.The connection is invalid.

Не удалось найти подключение.The connection could not be found.

Значение параметра startRecord меньше 0.The startRecord parameter is less than 0.

-или--or- Значение параметра maxRecords меньше 0.The maxRecords parameter is less than 0.

Примеры

В следующем примере производный класс используется OleDbDataAdapter для заполнения DataSet с 15 строками, начиная со строки 10, из таблицы Categories .The following example uses the derived class, OleDbDataAdapter, to fill a DataSet with 15 rows, beginning at row 10, from the Categories table. В этом примере предполагается, что вы создали OleDbDataAdapter и 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

Комментарии

maxRecordsЗначение 0 получает все записи, найденные после начальной записи.A maxRecords value of 0 gets all records found after the start record. Если maxRecords значение больше числа оставшихся строк, возвращаются только оставшиеся строки и не выдается сообщение об ошибке.If maxRecords is greater than the number of remaining rows, only the remaining rows are returned, and no error is issued.

Если соответствующая команда SELECT является инструкцией, возвращающей несколько результатов, Fill применяется только maxRecords к первому результату.If the corresponding select command is a statement returning multiple results, Fill only applies maxRecords to the first result.

FillМетод получает данные из источника данных с помощью инструкции SELECT.The Fill method retrieves the data from the data source using a SELECT statement. IDbConnectionОбъект, связанный с инструкцией SELECT, должен быть допустимым, но не должен быть открытым.The IDbConnection object associated with the SELECT statement must be valid, but it does not need to be open. Если объект IDbConnection закрыт до Fill вызова метода, он открывается для получения данных и затем закрывается.If the IDbConnection is closed before Fill is called, it is opened to retrieve data and then closed. Если соединение открыто до Fill вызова метода, оно остается открытым.If the connection is open before Fill is called, it remains open.

Если команда не возвращает ни одной строки, в объект не добавляются никакие таблицы DataSet , но исключение не создается.If a command does not return any rows, no tables are added to the DataSet, but no exception is raised.

Если DbDataAdapter объект встречает дублирующиеся столбцы при заполнении DataTable , он создает имена для последующих столбцов, используя шаблон "ColumnName 1", "ColumnName 2", "ColumnName 3" и т. д.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. Если входящие данные содержат безымянные столбцы, они помещаются в в соответствии с DataSet шаблоном «Столбец1», «Столбец2» и т. д.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on.

Если указанный запрос возвращает несколько результатов, каждый результирующий набор помещается в отдельную таблицу.When the query specified returns multiple results, each result set is placed in a separate table. Дополнительные результирующие наборы именуются путем добавления целочисленных значений к заданному имени таблицы (например, "Table", "table1", "Table2" и т. д.).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). Поскольку таблица не создается для запроса, не возвращающего строк, при обработке запроса INSERT, за которым следует запрос SELECT, таблица, созданная для запроса SELECT, называется «таблица», поскольку это первая созданная таблица.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. Приложения, использующие имена столбцов и таблиц, должны гарантировать, что конфликты с этими шаблонами именования не происходят.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

FillМетод поддерживает сценарии, в которых объект DataSet содержит несколько DataTable объектов, имена которых отличаются только регистром.The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. В таких ситуациях Fill выполняет сравнение с учетом регистра для поиска соответствующей таблицы и создает новую таблицу, если точное совпадение не существует.In such situations, Fill performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. Это поведение проиллюстрировано в следующем коде C#.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".  

Если Fill вызывается и DataSet содержит только те, DataTable имя которых отличается от имени только регистром, то DataTable обновляется.If Fill is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. В этом сценарии сравнение выполняется без учета регистра.In this scenario, the comparison is case insensitive. Это поведение проиллюстрировано в следующем коде C#.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.  

Если при заполнении таблиц данных возникла ошибка или исключение, то строки, добавленные до возникновения ошибки, остаются в таблицах данных.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. Оставшаяся часть операции прервана.The remainder of the operation is aborted.

Если инструкция SELECT, используемая для заполнения, DataSet возвращает несколько результатов, например инструкции пакетной службы SQL, следует учитывать следующее:When the SELECT statement used to populate the DataSet returns multiple results, such as batch SQL statements, be aware of the following:

  • При обработке нескольких результатов в пакетной инструкции SQL maxRecords применяется только к первому результату.When processing multiple results from a batch SQL statement, maxRecords only applies to the first result. Это справедливо и для строк, содержащих разбитые на разделы результаты (платформа .NET Framework поставщик данных только для OLE DB).The same is true for rows containing chaptered results (.NET Framework Data Provider for OLE DB only). Результат верхнего уровня ограничен maxRecords , но добавляются все дочерние строки.The top level result is limited by maxRecords, but all child rows are added.

  • Если один из результатов содержит ошибку, все последующие результаты пропускаются и не добавляются в DataSet .If one of the results contains an error, all subsequent results are skipped and not added to the DataSet.

При использовании последующих Fill вызовов для обновления содержимого компонента DataSet должны быть выполнены два условия.When using subsequent Fill calls to refresh the contents of the DataSet, two conditions must be met:

  1. Инструкция SQL должна соответствовать той, которая изначально использовалась для заполнения DataSet .The SQL statement should match the one initially used to populate the DataSet.

  2. Необходимо указать сведения о ключевом столбце.The Key column information must be present.

Если сведения о первичном ключе присутствуют, то все дублирующиеся строки будут выверены и появятся только один раз в DataTable , соответствующем 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. Сведения о первичном ключе можно задать либо с помощью FillSchema , указав PrimaryKey свойство объекта DataTable , либо задав MissingSchemaAction для свойства значение 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.

Если SelectCommand возвращает результаты OUTER JOIN, то DataAdapter не задает значение PrimaryKey для результирующего объекта DataTable.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. Необходимо явно определить первичный ключ, чтобы гарантировать правильное разрешение повторяющихся строк.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Дополнительные сведения см. в разделе Определение первичных ключей.For more information, see Defining Primary Keys.

Примечание

При обработке инструкций SQL пакетной службы, возвращающих несколько результатов, реализация FillSchema для платформа .NET Framework поставщика данных для OLE DB получает сведения о схеме только для первого результата.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. Чтобы получить сведения о схеме для нескольких результатов, используйте с параметром, равным Fill MissingSchemaAction AddWithKey .To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

Примечание

DataSetНе будет содержать число записей, указанное в параметре maxRecords .The DataSet will not contain more than the number of records indicated by maxRecords. Однако весь результирующий набор, сформированный запросом, по-прежнему возвращается с сервера.However, the entire result set generated by the query is still returned from the server.

Примечания для тех, кто наследует этот метод

При переопределении Fill(DataSet) в производном классе обязательно вызовите метод базового класса Fill(DataSet) .When overriding Fill(DataSet) in a derived class, be sure to call the base class's Fill(DataSet) method.

См. также раздел

Применяется к

Fill(Int32, Int32, DataTable[])

Добавляет или обновляет строки в объекте DataTable для получения соответствия строкам в источнике данных, начиная с указанной записи и вплоть до заданного максимального количества получаемых записей.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

Параметры

startRecord
Int32

Номер записи (с нуля), с которой необходимо начать.The zero-based record number to start with.

maxRecords
Int32

Максимальное число извлекаемых записей.The maximum number of records to retrieve.

dataTables
DataTable[]

Объект DataTable для заполнения из источника данных.The DataTable objects to fill from the data source.

Возвращаемое значение

Int32

Количество строк, успешно добавленных или обновленных в объекте DataTable.The number of rows successfully added to or refreshed in the DataTable. Это значение не включает строки, на которые воздействуют операторы, не возвращающие строк.This value does not include rows affected by statements that do not return rows.

Комментарии

FillМетод получает строки из источника данных с помощью инструкции SELECT, заданной связанным SelectCommand свойством.The Fill method retrieves rows from the data source using the SELECT statement specified by an associated SelectCommand property. Объект соединения, связанный с инструкцией SELECT, должен быть допустимым, но не должен быть открытым.The connection object associated with the SELECT statement must be valid, but it does not need to be open. Если соединение закрывается до Fill вызова метода, оно открывается для получения данных, после чего оно закрывается.If the connection is closed before Fill is called, it is opened to retrieve data, and then it is closed. Если соединение открыто до Fill вызова метода, оно остается открытым.If the connection is open before Fill is called, it remains open.

FillЗатем операция добавляет строки в целевые DataTable объекты в DataSet , создавая DataTable объекты, если они еще не существуют.The Fill operation then adds the rows to destination DataTable objects in the DataSet, creating the DataTable objects if they do not already exist. При создании DataTable объектов Fill операция обычно создает только метаданные имени столбца.When creating DataTable objects, the Fill operation normally creates only column name metadata. Однако если MissingSchemaAction свойство имеет значение AddWithKey , то также создаются соответствующие первичные ключи и ограничения.However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

Если SelectCommand возвращает результаты OUTER JOIN, то DataAdapter не задает значение PrimaryKey для результирующего объекта DataTable.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. Необходимо явно определить первичный ключ, чтобы гарантировать правильное разрешение повторяющихся строк.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Дополнительные сведения см. в разделе Определение первичных ключей.For more information, see Defining Primary Keys.

Если адаптер данных встречает дублирующиеся столбцы при заполнении DataTable , он создает имена для последующих столбцов, используя шаблон "columnName1", "columnName2", "columnname3" и т. д.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. Если входящие данные содержат безымянные столбцы, они помещаются в в соответствии с DataSet шаблоном «Столбец1», «Столбец2» и т. д.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. При добавлении нескольких результирующих наборов в DataSet каждый результирующий набор помещается в отдельную таблицу.When multiple result sets are added to the DataSet, each result set is placed in a separate table. Дополнительные результирующие наборы именуются путем добавления целочисленных значений к заданному имени таблицы (например, "Table", "table1", "Table2" и т. д.).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.

Если инструкция SELECT, используемая для заполнения, DataSet возвращает несколько результатов, например инструкции SQL Batch, если один из результатов содержит ошибку, все последующие результаты пропускаются и не добавляются в 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.

Метод можно использовать Fill несколько раз для одного и того же DataTable .You can use the Fill method multiple times on the same DataTable. Если первичный ключ существует, входящие строки объединяются с совпадающими строками, которые уже существуют.If a primary key exists, incoming rows are merged with matching rows that already exist. Если первичный ключ не существует, входящие строки добавляются к DataTable .If no primary key exists, incoming rows are appended to the DataTable.

Примечание

При обработке инструкций SQL пакетной службы, возвращающих несколько результатов, реализация FillSchema для платформа .NET Framework поставщика данных для OLE DB получает сведения о схеме только для первого результата.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. Чтобы получить сведения о схеме для нескольких результатов, используйте с параметром, равным Fill MissingSchemaAction AddWithKey .To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

См. также раздел

Применяется к

Fill(DataTable)

Добавляет или обновляет строки в указанном диапазоне в объект DataSet для получения соответствия строкам в источнике данных с использованием имени 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

Параметры

dataTable
DataTable

Имя объекта DataTable, используемое для сопоставления таблицы.The name of the DataTable to use for table mapping.

Возвращаемое значение

Int32

Количество строк, успешно добавленных или обновленных в объекте DataSet.The number of rows successfully added to or refreshed in the DataSet. Не включает строки, на которые воздействуют операторы, не возвращающие строк.This does not include rows affected by statements that do not return rows.

Исключения

Исходная таблица является недопустимой.The source table is invalid.

Комментарии

FillМетод получает строки из источника данных с помощью инструкции SELECT, заданной связанным SelectCommand свойством.The Fill method retrieves rows from the data source using the SELECT statement specified by an associated SelectCommand property. Объект соединения, связанный с инструкцией SELECT, должен быть допустимым, но не должен быть открытым.The connection object associated with the SELECT statement must be valid, but it does not need to be open. Если соединение закрывается до Fill вызова метода, оно открывается для получения данных, а затем закрывается.If the connection is closed before Fill is called, it is opened to retrieve data, then closed. Если соединение открыто до Fill вызова метода, оно остается открытым.If the connection is open before Fill is called, it remains open.

FillЗатем операция добавляет строки в целевые DataTable объекты в DataSet , создавая DataTable объекты, если они еще не существуют.The Fill operation then adds the rows to destination DataTable objects in the DataSet, creating the DataTable objects if they do not already exist. При создании DataTable объектов Fill операция обычно создает только метаданные имени столбца.When creating DataTable objects, the Fill operation normally creates only column name metadata. Однако если MissingSchemaAction свойство имеет значение AddWithKey , то также создаются соответствующие первичные ключи и ограничения.However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

Если DbDataAdapter обнаруживает дублированные столбцы при заполнении DataTable , он создает имена для последующих столбцов с использованием шаблона "ColumnName 1", "ColumnName 2", "ColumnName 3" и т. д.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. Если входящие данные содержат безымянные столбцы, они помещаются в в соответствии с DataSet шаблоном «Столбец1», «Столбец2» и т. д.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. При добавлении нескольких результирующих наборов в DataSet каждый результирующий набор помещается в отдельную таблицу.When multiple result sets are added to the DataSet each result set is placed in a separate table.

Перегрузка Fill , которая принимает DataTable в качестве параметра, получает только первый результат.The overload of Fill that takes DataTable as a parameter only obtains the first result. Используйте перегрузку Fill , которая принимает в DataSet качестве параметра получение нескольких результатов.Use an overload of Fill that takes DataSet as a parameter to obtain multiple results.

FillМетод поддерживает сценарии, в которых объект DataSet содержит несколько DataTable объектов, имена которых отличаются только регистром.The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. В таких ситуациях Fill выполняет сравнение с учетом регистра для поиска соответствующей таблицы и создает новую таблицу, если точное совпадение не существует.In such situations, Fill performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. Это поведение проиллюстрировано в следующем коде C#.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".  

Если Fill вызывается и DataSet содержит только те, DataTable имя которых отличается от имени только регистром, то DataTable обновляется.If Fill is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. В этом сценарии сравнение выполняется без учета регистра.In this scenario, the comparison is case insensitive. Это поведение проиллюстрировано в следующем коде C#.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.  

Метод можно использовать Fill несколько раз для одного и того же DataTable .You can use the Fill method multiple times on the same DataTable. Если первичный ключ существует, входящие строки объединяются с совпадающими строками, которые уже существуют.If a primary key exists, incoming rows are merged with matching rows that already exist. Если первичный ключ не существует, входящие строки добавляются к DataTable .If no primary key exists, incoming rows are appended to the DataTable.

Если SelectCommand возвращает результаты OUTER JOIN, то DataAdapter не задает значение PrimaryKey для результирующего объекта DataTable.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. Необходимо явно определить первичный ключ, чтобы гарантировать правильное разрешение повторяющихся строк.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Дополнительные сведения см. в разделе Определение первичных ключей.For more information, see Defining Primary Keys.

Примечание

При обработке инструкций SQL пакетной службы, возвращающих несколько результатов, реализация Fill и FillSchema для платформа .NET Framework поставщик данных получает сведения о схеме только для первого результата.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.

Примечания для тех, кто наследует этот метод

Эта перегрузка Fill(DataSet) метода защищена и разработана для использования платформа .NET Framework поставщиком данных.This overload of the Fill(DataSet) method is protected and is designed for use by a .NET Framework data provider.

См. также раздел

Применяется к

Fill(DataTable, IDataReader)

Добавляет или обновляет строки в объекте DataTable для получения соответствия строкам в источнике данных с помощью указанных имен DataTable и IDataReader.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

Параметры

dataTable
DataTable

Объект DataTable для заполнения записями и, если необходимо, — схемой.A DataTable to fill with records and, if necessary, schema.

dataReader
IDataReader

Имя IDataReader.The name of the IDataReader.

Возвращаемое значение

Int32

Количество строк, успешно добавленных или обновленных в объекте DataTable.The number of rows successfully added to or refreshed in the DataTable. Не включает строки, на которые воздействуют операторы, не возвращающие строк.This does not include rows affected by statements that do not return rows.

Применяется к

Fill(DataSet, String)

Добавляет или обновляет строки в объекте DataSet для получения соответствия строкам в источнике данных с помощью имен DataSet и 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

Параметры

dataSet
DataSet

Объект DataSet для заполнения записями и, если необходимо, — схемой.A DataSet to fill with records and, if necessary, schema.

srcTable
String

Имя исходной таблицы, используемое для сопоставления таблиц.The name of the source table to use for table mapping.

Возвращаемое значение

Int32

Количество строк, успешно добавленных или обновленных в объекте DataSet.The number of rows successfully added to or refreshed in the DataSet. Не включает строки, на которые воздействуют операторы, не возвращающие строк.This does not include rows affected by statements that do not return rows.

Исключения

Исходная таблица является недопустимой.The source table is invalid.

Примеры

В следующем примере производный класс используется OleDbDataAdapter для заполнения DataSet со строками из таблицы Categories.The following example uses the derived class, OleDbDataAdapter, to fill a DataSet with rows from the categories table. В этом примере предполагается, что вы создали OleDbDataAdapter и 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

Комментарии

FillМетод получает данные из источника данных с помощью инструкции SELECT.The Fill method retrieves the data from the data source using a SELECT statement. IDbConnectionОбъект, связанный с командой SELECT, должен быть допустимым, но не должен быть открытым.The IDbConnection object associated with the select command must be valid, but it does not need to be open. Если объект IDbConnection закрыт до Fill вызова метода, он открывается для получения данных, а затем закрывается.If the IDbConnection is closed before Fill is called, it is opened to retrieve data, then closed. Если соединение открыто до Fill вызова метода, оно остается открытым.If the connection is open before Fill is called, it remains open.

Если команда не возвращает ни одной строки, никакие таблицы не добавляются в DataSet , а исключение не возникает.If a command does not return any rows, no tables are added to the DataSet, and no exception is raised.

Если DbDataAdapter объект встречает дублирующиеся столбцы при заполнении DataTable , он создает имена для последующих столбцов, используя шаблон "columnName1", "columnName2", "columnname3" и т. д.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. Если входящие данные содержат безымянные столбцы, они помещаются в в соответствии с DataSet шаблоном «Столбец1», «Столбец2» и т. д.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on.

Если указанный запрос возвращает несколько результатов, каждый результирующий набор помещается в отдельную таблицу.When the query specified returns multiple results, each result set is placed in a separate table. Дополнительные результирующие наборы именуются путем добавления целочисленных значений к заданному имени таблицы (например, "Table", "table1", "Table2" и т. д.).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). Поскольку таблица не создается для запроса, который не возвращает строки, то если бы был обработан запрос INSERT, а затем запрос SELECT, то таблица, созданная для запроса SELECT, будет называться «Table», поскольку это первая созданная таблица.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. Приложения, использующие имена столбцов и таблиц, должны гарантировать, что конфликты с этими шаблонами именования не происходят.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

FillМетод поддерживает сценарии, в которых объект DataSet содержит несколько DataTable объектов, имена которых отличаются только регистром.The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. В таких ситуациях Fill выполняет сравнение с учетом регистра для поиска соответствующей таблицы и создает новую таблицу, если точное совпадение не существует.In such situations, Fill performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. Это поведение проиллюстрировано в следующем коде C#.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".  

Если Fill вызывается и DataSet содержит только те, DataTable имя которых отличается от имени только регистром, то DataTable обновляется.If Fill is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. В этом сценарии сравнение выполняется без учета регистра.In this scenario, the comparison is case insensitive. Это поведение проиллюстрировано в следующем коде C#.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.  

Если при заполнении таблиц данных возникла ошибка или исключение, то строки, добавленные до возникновения ошибки, остаются в таблицах данных.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. Оставшаяся часть операции прервана.The remainder of the operation is aborted.

Если инструкция SELECT, используемая для заполнения, DataSet возвращает несколько результатов, например инструкцию SQL Batch, следует учитывать следующее:When the SELECT statement used to populate the DataSet returns multiple results, such as a batch SQL statement, be aware of the following:

  • Если один из результатов содержит ошибку, все последующие результаты пропускаются и не добавляются в DataSet .If one of the results contains an error, all subsequent results are skipped and not added to the DataSet.

При использовании последующих Fill вызовов для обновления содержимого компонента DataSet должны быть выполнены два условия.When using subsequent Fill calls to refresh the contents of the DataSet, two conditions must be met:

  1. Инструкция SQL должна соответствовать той, которая изначально использовалась для заполнения DataSet .The SQL statement should match the one initially used to populate the DataSet.

  2. Необходимо указать сведения о ключевом столбце.The Key column information must be present. Если сведения о первичном ключе присутствуют, то все дублирующиеся строки согласовываются и появляются только один раз в DataTable , соответствующем DataSet .If primary key information is present, any duplicate rows are reconciled and only appear once in the DataTable that corresponds to the DataSet. Сведения о первичном ключе можно задать либо с помощью FillSchema , указав PrimaryKey свойство объекта DataTable , либо задав MissingSchemaAction для свойства значение 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.

Если SelectCommand возвращает результаты OUTER JOIN, то DataAdapter не задает значение PrimaryKey для результирующего объекта DataTable.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. Необходимо явно определить первичный ключ, чтобы гарантировать правильное разрешение повторяющихся строк.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Дополнительные сведения см. в разделе Определение первичных ключей.For more information, see Defining Primary Keys.

Примечание

При обработке инструкций SQL пакетной службы, возвращающих несколько результатов, реализация FillSchema для платформа .NET Framework поставщика данных для OLE DB получает сведения о схеме только для первого результата.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. Чтобы получить сведения о схеме для нескольких результатов, используйте с параметром, равным Fill MissingSchemaAction AddWithKey .To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

Примечания для тех, кто наследует этот метод

При переопределении Fill(DataSet) в производном классе обязательно вызовите метод базового класса Fill(DataSet) .When overriding Fill(DataSet) in a derived class, be sure to call the base class's Fill(DataSet) method.

См. также раздел

Применяется к

Fill(DataSet)

Добавляет или обновляет строки в объекте 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

Параметры

dataSet
DataSet

Объект DataSet для заполнения записями и, если необходимо, — схемой.A DataSet to fill with records and, if necessary, schema.

Возвращаемое значение

Int32

Количество строк, успешно добавленных или обновленных в объекте DataSet.The number of rows successfully added to or refreshed in the DataSet. Не включает строки, на которые воздействуют операторы, не возвращающие строк.This does not include rows affected by statements that do not return rows.

Реализации

Комментарии

FillМетод получает данные из источника данных с помощью инструкции SELECT.The Fill method retrieves the data from the data source using a SELECT statement. IDbConnectionОбъект, связанный с командой SELECT, должен быть допустимым, но не должен быть открытым.The IDbConnection object associated with the select command must be valid, but it does not need to be open. Если объект IDbConnection закрыт до Fill вызова метода, он открывается для получения данных и затем закрывается.If the IDbConnection is closed before Fill is called, it is opened to retrieve data and then closed. Если соединение открыто до Fill вызова метода, оно остается открытым.If the connection is open before Fill is called, it remains open.

Если при заполнении таблиц данных возникла ошибка или исключение, то строки, добавленные до возникновения ошибки, остаются в таблицах данных.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. Оставшаяся часть операции прервана.The remainder of the operation is aborted.

Если команда не возвращает ни одной строки, никакие таблицы не добавляются в DataSet , а исключение не возникает.If a command does not return any rows, no tables are added to the DataSet, and no exception is raised.

Если DbDataAdapter объект встречает дублирующиеся столбцы при заполнении DataTable , он создает имена для последующих столбцов с помощью шаблона "ColumnName 1", "ColumnName 2", "ColumnName 3" и т. д.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. Если входящие данные содержат безымянные столбцы, они помещаются в в соответствии с DataSet шаблоном «Столбец1», «Столбец2» и т. д.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on.

Если указанный запрос возвращает несколько результатов, результирующий набор для каждого запроса, возвращающего строку, помещается в отдельную таблицу.When the query specified returns multiple results, the result set for each row returning query is placed in a separate table. Дополнительные результирующие наборы именуются путем добавления целочисленных значений к заданному имени таблицы (например, "Table", "table1", "Table2" и т. д.).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). Поскольку таблица не создается для запроса, который не возвращает строки, при обработке запроса INSERT, за которым следует запрос SELECT, таблица, созданная для запроса SELECT, будет называться "Таблица", так как это первая созданная таблица.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. Приложения, использующие имена столбцов и таблиц, должны гарантировать, что конфликты с этими шаблонами именования не происходят.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

Если инструкция SELECT, используемая для заполнения, DataSet возвращает несколько результатов, например инструкции SQL Batch, если один из результатов содержит ошибку, все последующие результаты пропускаются и не добавляются в 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.

При использовании последующих Fill вызовов для обновления содержимого компонента DataSet должны быть выполнены два условия.When using subsequent Fill calls to refresh the contents of the DataSet, two conditions must be met:

  1. Инструкция SQL должна соответствовать той, которая изначально использовалась для заполнения DataSet .The SQL statement should match the one initially used to populate the DataSet.

  2. Необходимо указать сведения о ключевом столбце.The Key column information must be present.

Если сведения о первичном ключе присутствуют, то все дублирующиеся строки согласовываются и появляются только один раз в DataTable , соответствующем DataSet .If primary key information is present, any duplicate rows are reconciled and only appear once in the DataTable that corresponds to the DataSet. Сведения о первичном ключе можно задать либо с помощью FillSchema , указав PrimaryKey свойство объекта DataTable , либо задав MissingSchemaAction для свойства значение 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.

Если SelectCommand возвращает результаты OUTER JOIN, то DataAdapter не задает значение PrimaryKey для результирующего объекта DataTable.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. Необходимо явно определить первичный ключ, чтобы гарантировать правильное разрешение повторяющихся строк.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Дополнительные сведения см. в разделе Определение первичных ключей.For more information, see Defining Primary Keys.

Примечание

При обработке инструкций SQL пакетной службы, возвращающих несколько результатов, реализация FillSchema для платформа .NET Framework поставщика данных для OLE DB получает сведения о схеме только для первого результата.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. Чтобы получить сведения о схеме для нескольких результатов, используйте с параметром, равным Fill MissingSchemaAction AddWithKey .To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

См. также раздел

Применяется к

Fill(DataTable, IDbCommand, CommandBehavior)

Добавляет или обновляет строки в объекте DataTable для получения соответствия строкам в источнике данных с помощью указанного объекта DataTable, интерфейса IDbCommand и значения типа CommandBehavior.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

Параметры

dataTable
DataTable

Объект DataTable для заполнения записями и, если необходимо, — схемой.A DataTable to fill with records and, if necessary, schema.

command
IDbCommand

Оператор SQL SELECT используется для извлечения строки из источника данных.The SQL SELECT statement used to retrieve rows from the data source.

behavior
CommandBehavior

Одно из значений перечисления CommandBehavior.One of the CommandBehavior values.

Возвращаемое значение

Int32

Количество строк, успешно добавленных или обновленных в объекте DataTable.The number of rows successfully added to or refreshed in the DataTable. Не включает строки, на которые воздействуют операторы, не возвращающие строк.This does not include rows affected by statements that do not return rows.

Комментарии

FillМетод получает строки из источника данных с помощью инструкции SELECT, заданной связанным SelectCommand свойством.The Fill method retrieves rows from the data source using the SELECT statement specified by an associated SelectCommand property. Объект соединения, связанный с инструкцией SELECT, должен быть допустимым, но не должен быть открытым.The connection object associated with the SELECT statement must be valid, but it does not need to be open. Если соединение закрывается до Fill вызова метода, оно открывается для получения данных и затем закрывается.If the connection is closed before Fill is called, it is opened to retrieve data and then closed. Если соединение открыто до Fill вызова метода, оно остается открытым.If the connection is open before Fill is called, it remains open.

FillЗатем операция добавляет строки в указанный целевой DataTable объект в DataSet , создавая DataTable объект, если он еще не существует.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. При создании DataTable объекта Fill операция обычно создает только метаданные имени столбца.When creating a DataTable object, the Fill operation normally creates only column name metadata. Однако если MissingSchemaAction свойство имеет значение AddWithKey , то также создаются соответствующие первичные ключи и ограничения.However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

Если DbDataAdapter объект встречает дублирующиеся столбцы при заполнении DataTable , он создает имена для последующих столбцов, используя шаблон "ColumnName 1", "ColumnName 2", "ColumnName 3" и т. д.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. Если входящие данные содержат безымянные столбцы, они помещаются в в соответствии с DataSet шаблоном «Столбец1», «Столбец2» и т. д.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on.

Перегрузка Fill , которая принимает DataTable в качестве параметра, получает только первый результат.The overload of Fill that takes DataTable as a parameter only obtains the first result. Используйте перегрузку Fill , которая принимает в DataSet качестве параметра получение нескольких результатов.Use an overload of Fill that takes DataSet as a parameter to obtain multiple results.

Метод можно использовать Fill несколько раз для одного и того же DataTable .You can use the Fill method multiple times on the same DataTable. Если первичный ключ существует, входящие строки объединяются с совпадающими строками, которые уже существуют.If a primary key exists, incoming rows are merged with matching rows that already exist. Если первичный ключ не существует, входящие строки добавляются к DataTable .If no primary key exists, incoming rows are appended to the DataTable.

Если SelectCommand возвращает результаты OUTER JOIN, то DataAdapter не задает значение PrimaryKey для результирующего объекта DataTable.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. Необходимо явно определить первичный ключ, чтобы гарантировать правильное разрешение повторяющихся строк.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Дополнительные сведения см. в разделе Определение первичных ключей.For more information, see Defining Primary Keys.

Примечание

При обработке инструкций SQL пакетной службы, возвращающих несколько результатов, реализация FillSchema для платформа .NET Framework поставщика данных для OLE DB получает сведения о схеме только для первого результата.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. Чтобы получить сведения о схеме для нескольких результатов, используйте с параметром, равным Fill MissingSchemaAction AddWithKey .To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

Примечания для тех, кто наследует этот метод

Эта перегрузка Fill(DataSet) метода защищена и разработана для использования платформа .NET Framework поставщиком данных.This overload of the Fill(DataSet) method is protected and is designed for use by a .NET Framework data provider.

См. также раздел

Применяется к