Поделиться через


DbDataAdapter.Fill Метод

Определение

Заполняет или DataSet а DataTable.

Перегрузки

Имя Описание
Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior)

Добавляет или обновляет строки в указанном диапазоне в DataSet соответствии DataSet с именами и именами исходной таблицы, командной строкой и поведением команд.

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

Добавляет или обновляет строки в указанном диапазоне в DataSet соответствии с этими строками в источнике данных с помощью DataSet имен и DataTable имен.

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

Добавляет или обновляет строки в указанном диапазоне в DataSet соответствии с этими строками в источнике данных с помощью DataSetимен DataTableи IDataReader имен.

Fill(DataSet, Int32, Int32, String)

Добавляет или обновляет строки в указанном диапазоне в DataSet соответствии с этими строками в источнике данных с помощью DataSet имен и DataTable имен.

Fill(Int32, Int32, DataTable[])

Добавляет или обновляет строки в одном или нескольких DataTable объектах, чтобы они соответствовали данным в источнике данных, начиная с указанной записи и извлекая до указанного максимального количества записей.

Fill(DataTable)

Добавляет или обновляет строки в указанном диапазоне в DataSet соответствии с этими строками в источнике данных с помощью DataTable имени.

Fill(DataTable, IDataReader)

Добавляет или обновляет строки в DataTable соответствии с указанными и IDataReader именами в источнике DataTable данных.

Fill(DataSet, String)

Добавляет или обновляет строки в DataSet соответствии с этими строками в источнике данных с помощью DataSet имен и DataTable имен.

Fill(DataSet)

Добавляет или обновляет строки в элементе DataSet.

Fill(DataTable, IDbCommand, CommandBehavior)

Добавляет или обновляет строки в DataTable соответствии с строками в источнике данных с помощью указанного DataTableIDbCommand и CommandBehavior.

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

Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs

Добавляет или обновляет строки в указанном диапазоне в DataSet соответствии DataSet с именами и именами исходной таблицы, командной строкой и поведением команд.

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 заполнения записей и, при необходимости, схемы.

startRecord
Int32

Отсчитываемый от нуля номер записи для начала.

maxRecords
Int32

Максимальное количество записей для получения. Укажите 0, чтобы получить все записи после начальной записи.

srcTable
String

Имя исходной таблицы, используемой для сопоставления таблиц.

command
IDbCommand

Инструкция SQL SELECT, используемая для извлечения строк из источника данных.

behavior
CommandBehavior

Одно из значений CommandBehavior .

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

Число строк, успешно добавленных в или обновленных в DataSet Это не включает строки, затронутые операторами, которые не возвращают строки.

Исключения

Исходная таблица недопустима.

Параметр startRecord меньше 0.

–или–

Параметр maxRecords меньше 0.

Комментарии

Значение maxRecords 0 возвращает все записи, найденные после начальной записи. Если maxRecords число оставшихся строк больше, возвращаются только оставшиеся строки, и ошибка не будет выдана.

Метод Fill извлекает строки из источника данных с помощью инструкции SELECT, указанной соответствующим SelectCommand свойством. Объект подключения, связанный с инструкцией SELECT, должен быть допустимым, но его не нужно открывать. Если соединение закрыто перед Fill вызовом, оно открывается для получения данных, а затем закрывается. Если соединение открыто перед Fill вызовом, оно остается открытым.

Затем операция Fill добавляет строки в целевые DataTable объекты, DataSetсоздавая DataTable объекты, если они еще не существуют. При создании DataTable объектов Fill операция обычно создает только метаданные имени столбца. Однако если MissingSchemaAction для свойства задано AddWithKeyзначение, также создаются соответствующие первичные ключи и ограничения.

Если при DbDataAdapter заполнении DataTableстолбцов возникают повторяющиеся столбцы, он создает имена для последующих столбцов, используя шаблон "columnname1", "columnname2", "columnname3" и т. д. Если входящие данные содержат неименованные столбцы, они помещаются в DataSet шаблон "Column1", "Column2" и т. д. При добавлении нескольких результирующих наборов в DataSet каждый результирующий набор помещается в отдельную таблицу. Дополнительные результирующие наборы именуются путем добавления целочисленных значений к указанному имени таблицы (например, Table1, Table1, Table2 и т. д.). Если в приложении используются имена столбцов и таблиц, убедитесь, что нет конфликтов с этими шаблонами именования.

Метод Fill поддерживает сценарии, в которых DataSet содержится несколько DataTable объектов, имена которых отличаются только по регистру. В таких ситуациях выполняется сравнение с учетом регистра, Fill чтобы найти соответствующую таблицу и создать новую таблицу, если точное совпадение не существует. Следующий код C# иллюстрирует это поведение.

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 обновляется. В этом сценарии сравнение не учитывает регистр. Следующий код C# иллюстрирует это поведение.

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

Если SelectCommand возвращает результаты ВНЕШНЕГО СОЕДИНЕНИЯ, DataAdapter не устанавливает значение PrimaryKey для результирующего DataTable. Необходимо явно определить первичный ключ, чтобы убедиться, что повторяющиеся строки разрешаются правильно. Дополнительные сведения см. в разделе "Определение первичных ключей".

Замечание

При обработке инструкций пакетного SQL, возвращающих несколько результатов, реализация FillFillSchema и поставщик данных .NET Framework извлекает сведения о схеме только для первого результата.

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

Эта перегрузка Fill(DataSet) метода защищена и предназначена для использования поставщиком данных .NET Framework.

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

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

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

Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs

Добавляет или обновляет строки в указанном диапазоне в DataSet соответствии с этими строками в источнике данных с помощью DataSet имен и DataTable имен.

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 для заполнения из источника данных.

startRecord
Int32

Отсчитываемый от нуля номер записи для начала.

maxRecords
Int32

Максимальное количество записей для получения. Укажите 0, чтобы получить все записи после начальной записи.

command
IDbCommand

Исполняемый IDbCommandDataTable объект для заполнения объектов.

behavior
CommandBehavior

Одно из значений CommandBehavior .

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

Количество строк, добавленных или обновленных в таблицах данных.

Исключения

Недопустимый DataSet .

Исходная таблица недопустима.

–или–

Подключение недопустимо.

Не удалось найти подключение.

Параметр startRecord меньше 0.

–или–

Параметр maxRecords меньше 0.

Комментарии

Значение maxRecords 0 возвращает все записи, найденные после начальной записи. Если maxRecords число оставшихся строк больше, возвращаются только оставшиеся строки, и ошибка не будет выдана.

Метод Fill извлекает данные из источника данных с помощью инструкции SELECT. Объект IDbConnection , связанный с инструкцией SELECT, должен быть допустимым, но его не нужно открывать. Если он IDbConnection закрыт перед Fill вызовом, он открывается для получения данных, а затем закрывается. Если соединение открыто перед Fill вызовом, оно остается открытым.

Если команда не возвращает строки, в нее не добавляются DataSetтаблицы, но исключение не возникает.

DbDataAdapter Если объект встречает повторяющиеся столбцы при заполненииDataTable, он создаст имена для последующих столбцов, используя шаблон "columnname1", "columnname2", "columnname3" и т. д. Если входящие данные содержат неименованные столбцы, они помещаются в DataSet шаблон "Column1", "Column2" и т. д.

Когда указанный запрос возвращает несколько результатов, каждый результирующий набор помещается в отдельную таблицу. Дополнительные результирующие наборы именуются путем добавления целочисленных значений к указанному имени таблицы (например, Table1, Table1, Table2 и т. д.). Так как таблица не создается для запроса, который не возвращает строки, если необходимо обработать запрос вставки, за которым следует запрос на выборку, таблица, созданная для запроса выбора, будет называться "Таблица", так как она является первой созданной таблицей. Если в приложении используются имена столбцов и таблиц, убедитесь, что нет конфликтов с этими шаблонами именования.

Метод Fill поддерживает сценарии, в которых DataSet содержится несколько DataTable объектов, имена которых отличаются только по регистру. В таких ситуациях выполняется сравнение с учетом регистра, Fill чтобы найти соответствующую таблицу и создать новую таблицу, если точное совпадение не существует. Следующий код C# иллюстрирует это поведение.

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 обновляется. В этом сценарии сравнение не учитывает регистр. Следующий код C# иллюстрирует это поведение.

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.

Если при заполнении таблиц данных возникает ошибка или исключение, строки, добавленные до возникновения ошибки, остаются в таблицах данных. Оставшаяся часть операции прервана.

Если инструкция SELECT, используемая для заполнения DataTable объектов, возвращает несколько результатов, например инструкцию пакетного SQL, следует учитывать следующее:

  • При обработке нескольких результатов из инструкции пакетного SQL maxRecords применяется только к первому результату. То же самое верно для строк, содержащих результаты главы (только поставщик данных .NET Framework для OLE DB). Результат верхнего уровня ограничен, maxRecordsно добавляются все дочерние строки.

  • Если один из результатов содержит ошибку, все последующие результаты пропускаются.

Замечание

Число DataSet записей, указанных в maxRecordsнем, не будет содержать больше. Однако весь набор результатов, созданный запросом, по-прежнему возвращается с сервера.

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

При переопределении Fill(DataSet) в производном классе обязательно вызовите метод базового класса Fill(DataSet) .

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

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

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

Добавляет или обновляет строки в указанном диапазоне в DataSet соответствии с этими строками в источнике данных с помощью DataSetимен DataTableи IDataReader имен.

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 заполнения записей и, при необходимости, схемы.

srcTable
String

Имя используемого DataTable для сопоставления таблиц.

dataReader
IDataReader

Имя IDataReader.

startRecord
Int32

Отсчитываемый от нуля номер записи для начала.

maxRecords
Int32

Максимальное количество записей для получения. Укажите 0, чтобы получить все записи после начальной записи.

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

Число строк, успешно добавленных в или обновленных в DataSet Это не включает строки, затронутые операторами, которые не возвращают строки.

Исключения

startRecord меньше 0.

–или–

maxRecords меньше 0.

Комментарии

Значение maxRecords 0 возвращает все записи, найденные после начальной записи. Если maxRecords число оставшихся строк больше, возвращаются только оставшиеся строки, и ошибка не будет выдана.

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

Fill(DataSet, Int32, Int32, String)

Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs

Добавляет или обновляет строки в указанном диапазоне в DataSet соответствии с этими строками в источнике данных с помощью DataSet имен и DataTable имен.

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 заполнения записей и, при необходимости, схемы.

startRecord
Int32

Отсчитываемый от нуля номер записи для начала.

maxRecords
Int32

Максимальное количество записей для получения. Укажите 0, чтобы получить все записи после начальной записи.

srcTable
String

Имя исходной таблицы, используемой для сопоставления таблиц.

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

Число строк, успешно добавленных в или обновленных в DataSet Это не включает строки, затронутые операторами, которые не возвращают строки.

Исключения

Недопустимый DataSet .

Исходная таблица недопустима.

–или–

Подключение недопустимо.

Не удалось найти подключение.

Параметр startRecord меньше 0.

–или–

Параметр maxRecords меньше 0.

Примеры

В следующем примере используется производный класс , OleDbDataAdapterчтобы заполнить DataSet 15 строк, начиная с строки 10, из таблицы категорий . В этом примере предполагается, что вы создали OleDbDataAdapter и а 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 возвращает все записи, найденные после начальной записи. Если maxRecords число оставшихся строк больше, возвращаются только оставшиеся строки, и ошибка не будет выдана.

Если соответствующая команда select является оператором, возвращающим несколько результатов, Fill применяется maxRecords только к первому результату.

Метод Fill извлекает данные из источника данных с помощью инструкции SELECT. Объект IDbConnection , связанный с инструкцией SELECT, должен быть допустимым, но его не нужно открывать. Если он IDbConnection закрыт перед Fill вызовом, он открывается для получения данных, а затем закрывается. Если соединение открыто перед Fill вызовом, оно остается открытым.

Если команда не возвращает строки, в нее не добавляются DataSetтаблицы, но исключение не возникает.

DbDataAdapter Если объект встречает повторяющиеся столбцы при заполненииDataTable, он создаст имена для последующих столбцов, используя шаблон "columnname1", "columnname2", "columnname3" и т. д. Если входящие данные содержат неименованные столбцы, они помещаются в DataSet шаблон "Column1", "Column2" и т. д.

Когда указанный запрос возвращает несколько результатов, каждый результирующий набор помещается в отдельную таблицу. Дополнительные результирующие наборы именуются путем добавления целочисленных значений к указанному имени таблицы (например, Table1, Table1, Table2 и т. д.). Так как таблица не создается для запроса, который не возвращает строки, при обработке запроса вставки, за которым следует запрос на выборку, таблица, созданная для запроса выбора, называется "Таблица", так как она является первой созданной таблицей. Если в приложении используются имена столбцов и таблиц, убедитесь, что нет конфликтов с этими шаблонами именования.

Метод Fill поддерживает сценарии, в которых DataSet содержится несколько DataTable объектов, имена которых отличаются только по регистру. В таких ситуациях выполняется сравнение с учетом регистра, Fill чтобы найти соответствующую таблицу и создать новую таблицу, если точное совпадение не существует. Следующий код C# иллюстрирует это поведение.

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 обновляется. В этом сценарии сравнение не учитывает регистр. Следующий код C# иллюстрирует это поведение.

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.

Если при заполнении таблиц данных возникает ошибка или исключение, строки, добавленные до возникновения ошибки, остаются в таблицах данных. Оставшаяся часть операции прервана.

Если инструкция SELECT используется для заполнения DataSet нескольких результатов, таких как инструкции пакетного SQL, помните следующее:

  • При обработке нескольких результатов из инструкции пакетного SQL maxRecords применяется только к первому результату. То же самое верно для строк, содержащих результаты главы (только поставщик данных .NET Framework для OLE DB). Результат верхнего уровня ограничен, maxRecordsно добавляются все дочерние строки.

  • Если один из результатов содержит ошибку, все последующие результаты пропускаются и не добавляются в нее DataSet.

При использовании последующих Fill вызовов для обновления содержимого DataSetнеобходимо выполнить два условия:

  1. Инструкция SQL должна соответствовать первоначально используемой для заполнения инструкции DataSetSQL.

  2. Сведения о ключевом столбце должны присутствовать.

Если данные первичного ключа присутствуют, все повторяющиеся строки будут согласованы и отображаются только один раз в DataTable соответствующем DataSet. Сведения о первичном ключе могут быть заданы либо путем FillSchemaуказания PrimaryKey свойства объекта DataTable, либо путем задания MissingSchemaAction свойства в значение AddWithKey.

Если SelectCommand возвращает результаты ВНЕШНЕГО СОЕДИНЕНИЯ, DataAdapter не устанавливает значение PrimaryKey для результирующего DataTable. Необходимо явно определить первичный ключ, чтобы убедиться, что повторяющиеся строки разрешаются правильно. Дополнительные сведения см. в разделе "Определение первичных ключей".

Замечание

При обработке инструкций пакетного SQL, возвращающих несколько результатов, реализация FillSchema поставщика данных .NET Framework для OLE DB извлекает сведения о схеме только для первого результата. Чтобы получить сведения о схеме MissingSchemaAction для нескольких результатов, используйте Fill для параметра set AddWithKeyзначение .

Замечание

Число DataSet записей, указанных в maxRecordsнем, не будет содержать больше. Однако весь результирующий набор, созданный запросом, по-прежнему возвращается с сервера.

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

При переопределении Fill(DataSet) в производном классе обязательно вызовите метод базового класса Fill(DataSet) .

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

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

Fill(Int32, Int32, DataTable[])

Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs

Добавляет или обновляет строки в одном или нескольких DataTable объектах, чтобы они соответствовали данным в источнике данных, начиная с указанной записи и извлекая до указанного максимального количества записей.

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

Отсчитываемый от нуля номер записи для начала.

maxRecords
Int32

Максимальное количество записей для получения. Укажите 0, чтобы получить все записи после начальной записи.

dataTables
DataTable[]

Объекты DataTable для заполнения из источника данных.

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

Количество строк, успешно добавленных или обновленных в объектах DataTable . Это значение не включает строки, затронутые операторами, которые не возвращают строки.

Исключения

dataTables имеет null или пустой массив.

startRecord меньше 0.

–или–

maxRecords меньше 0.

Комментарии

Значение maxRecords 0 возвращает все записи, найденные после начальной записи. Если maxRecords число оставшихся строк больше, возвращаются только оставшиеся строки, и ошибка не будет выдана.

Метод Fill извлекает строки из источника данных с помощью инструкции SELECT, указанной соответствующим SelectCommand свойством. Объект подключения, связанный с инструкцией SELECT, должен быть допустимым, но его не нужно открывать. Если соединение закрыто перед Fill вызовом, оно открывается для получения данных, а затем закрывается. Если соединение открыто перед Fill вызовом, оно остается открытым.

Затем операция Fill добавляет строки в целевые DataTable объекты, DataSetсоздавая DataTable объекты, если они еще не существуют. При создании DataTable объектов Fill операция обычно создает только метаданные имени столбца. Однако если MissingSchemaAction для свойства задано AddWithKeyзначение, также создаются соответствующие первичные ключи и ограничения.

Если SelectCommand возвращает результаты ВНЕШНЕГО СОЕДИНЕНИЯ, DataAdapter не устанавливает значение PrimaryKey для результирующего DataTable. Необходимо явно определить первичный ключ, чтобы убедиться, что повторяющиеся строки разрешаются правильно. Дополнительные сведения см. в разделе "Определение первичных ключей".

Если адаптер данных встречает повторяющиеся столбцы при заполнении DataTable, он создает имена для последующих столбцов, используя шаблон "columnname1", "columnname2", "columnname3" и т. д. Если входящие данные содержат неименованные столбцы, они помещаются в DataSet шаблон "Column1", "Column2" и т. д. При добавлении DataSetнескольких результирующих наборов в группу результатов каждый результирующий набор помещается в отдельную таблицу. Дополнительные результирующие наборы именуются путем добавления целочисленных значений к указанному имени таблицы (например, Table1, Table1, Table2 и т. д.). Если в приложении используются имена столбцов и таблиц, убедитесь, что нет конфликтов с этими шаблонами именования.

Когда инструкция SELECT, используемая для заполнения DataSet нескольких результатов, например инструкции пакетного SQL, если один из результатов содержит ошибку, все последующие результаты пропускаются и не добавляются в нее DataSet.

Метод можно использовать Fill несколько раз в одном и том же DataTable. Если первичный ключ существует, входящие строки объединяются с соответствующими строками, которые уже существуют. Если первичный ключ не существует, входящие строки добавляются в .DataTable

Замечание

При обработке инструкций пакетного SQL, возвращающих несколько результатов, реализация FillSchema поставщика данных .NET Framework для OLE DB извлекает сведения о схеме только для первого результата. Чтобы получить сведения о схеме MissingSchemaAction для нескольких результатов, используйте Fill для параметра set AddWithKeyзначение .

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

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

Fill(DataTable)

Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs

Добавляет или обновляет строки в указанном диапазоне в DataSet соответствии с этими строками в источнике данных с помощью DataTable имени.

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 для сопоставления таблиц.

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

Число строк, успешно добавленных в или обновленных в DataSet Это не включает строки, затронутые операторами, которые не возвращают строки.

Исключения

Исходная таблица недопустима.

Комментарии

Метод Fill извлекает строки из источника данных с помощью инструкции SELECT, указанной соответствующим SelectCommand свойством. Объект подключения, связанный с инструкцией SELECT, должен быть допустимым, но его не нужно открывать. Если соединение закрыто перед Fill вызовом, оно открывается для получения данных, а затем закрывается. Если соединение открыто перед Fill вызовом, оно остается открытым.

Затем операция Fill добавляет строки в целевые DataTable объекты, DataSetсоздавая DataTable объекты, если они еще не существуют. При создании DataTable объектов Fill операция обычно создает только метаданные имени столбца. Однако если MissingSchemaAction для свойства задано AddWithKeyзначение, также создаются соответствующие первичные ключи и ограничения.

Если при DbDataAdapter заполнении DataTableстолбцов возникают повторяющиеся столбцы, он создает имена для последующих столбцов, используя шаблон "columnname1", "columnname2", "columnname3" и т. д. Если входящие данные содержат неименованные столбцы, они помещаются в DataSet шаблон "Column1", "Column2" и т. д. При добавлении нескольких результирующих наборов в DataSet каждый результирующий набор помещается в отдельную таблицу.

Перегрузка Fill , которая принимает DataTable в качестве параметра, получает только первый результат. Используйте перегрузку Fill , которая принимает DataSet в качестве параметра, чтобы получить несколько результатов.

Метод Fill поддерживает сценарии, в которых DataSet содержится несколько DataTable объектов, имена которых отличаются только по регистру. В таких ситуациях выполняется сравнение с учетом регистра, Fill чтобы найти соответствующую таблицу и создать новую таблицу, если точное совпадение не существует. Следующий код C# иллюстрирует это поведение.

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 обновляется. В этом сценарии сравнение не учитывает регистр. Следующий код C# иллюстрирует это поведение.

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

Если SelectCommand возвращает результаты ВНЕШНЕГО СОЕДИНЕНИЯ, DataAdapter не устанавливает значение PrimaryKey для результирующего DataTable. Необходимо явно определить первичный ключ, чтобы убедиться, что повторяющиеся строки разрешаются правильно. Дополнительные сведения см. в разделе "Определение первичных ключей".

Замечание

При обработке инструкций пакетного SQL, возвращающих несколько результатов, реализация FillFillSchema и поставщик данных .NET Framework извлекает сведения о схеме только для первого результата.

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

Эта перегрузка Fill(DataSet) метода защищена и предназначена для использования поставщиком данных .NET Framework.

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

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

Fill(DataTable, IDataReader)

Добавляет или обновляет строки в DataTable соответствии с указанными и IDataReader именами в источнике DataTable данных.

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 заполнения записей и, при необходимости, схемы.

dataReader
IDataReader

Имя IDataReader.

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

Число строк, успешно добавленных в или обновленных в DataTable Это не включает строки, затронутые операторами, которые не возвращают строки.

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

Fill(DataSet, String)

Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs

Добавляет или обновляет строки в DataSet соответствии с этими строками в источнике данных с помощью DataSet имен и DataTable имен.

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 заполнения записей и, при необходимости, схемы.

srcTable
String

Имя исходной таблицы, используемой для сопоставления таблиц.

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

Число строк, успешно добавленных в или обновленных в DataSet Это не включает строки, затронутые операторами, которые не возвращают строки.

Исключения

Исходная таблица недопустима.

Примеры

В следующем примере используется производный класс, OleDbDataAdapterчтобы заполнить DataSet строки из таблицы категорий. В этом примере предполагается, что вы создали OleDbDataAdapter и а 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. IDbConnection Объект, связанный с командой select, должен быть допустимым, но его не нужно открывать. Если он IDbConnection закрыт перед Fill вызовом, он открывается для получения данных, а затем закрывается. Если соединение открыто перед Fill вызовом, оно остается открытым.

Если команда не возвращает строки, в нее не добавляются DataSetтаблицы, и исключение не возникает.

DbDataAdapter Если объект встречает повторяющиеся столбцы при заполненииDataTable, он создаст имена для последующих столбцов, используя шаблон columnname1, columnname2, columnname3 и т. д. Если входящие данные содержат неименованные столбцы, они помещаются в DataSet шаблон "Column1", "Column2" и т. д.

Когда указанный запрос возвращает несколько результатов, каждый результирующий набор помещается в отдельную таблицу. Дополнительные результирующие наборы именуются путем добавления целочисленных значений к указанному имени таблицы (например, Table1, Table1, Table2 и т. д.). Так как таблица не создается для запроса, который не возвращает строки, если необходимо обработать запрос вставки, за которым следует запрос на выборку, таблица, созданная для запроса выбора, будет называться "Таблица", так как она является первой созданной таблицей. Если в приложении используются имена столбцов и таблиц, убедитесь, что нет конфликтов с этими шаблонами именования.

Метод Fill поддерживает сценарии, в которых DataSet содержится несколько DataTable объектов, имена которых отличаются только по регистру. В таких ситуациях выполняется сравнение с учетом регистра, Fill чтобы найти соответствующую таблицу и создать новую таблицу, если точное совпадение не существует. Следующий код C# иллюстрирует это поведение.

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 обновляется. В этом сценарии сравнение не учитывает регистр. Следующий код C# иллюстрирует это поведение.

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.

Если при заполнении таблиц данных возникает ошибка или исключение, строки, добавленные до возникновения ошибки, остаются в таблицах данных. Оставшаяся часть операции прервана.

Если инструкция SELECT, используемая для заполнения DataSet нескольких результатов, например пакетной инструкции SQL, следует учитывать следующее:

  • Если один из результатов содержит ошибку, все последующие результаты пропускаются и не добавляются в нее DataSet.

При использовании последующих Fill вызовов для обновления содержимого DataSetнеобходимо выполнить два условия:

  1. Инструкция SQL должна соответствовать первоначально используемой для заполнения инструкции DataSetSQL.

  2. Сведения о ключевом столбце должны присутствовать. Если данные первичного ключа присутствуют, все повторяющиеся строки сверяются и отображаются только один раз в DataTable соответствующем.DataSet Сведения о первичном ключе могут быть заданы либо путем FillSchemaуказания PrimaryKey свойства объекта DataTable, либо путем задания MissingSchemaAction свойства в значение AddWithKey.

Если SelectCommand возвращает результаты ВНЕШНЕГО СОЕДИНЕНИЯ, DataAdapter не устанавливает значение PrimaryKey для результирующего DataTable. Необходимо явно определить первичный ключ, чтобы убедиться, что повторяющиеся строки разрешаются правильно. Дополнительные сведения см. в разделе "Определение первичных ключей".

Замечание

При обработке инструкций пакетного SQL, возвращающих несколько результатов, реализация FillSchema поставщика данных .NET Framework для OLE DB извлекает сведения о схеме только для первого результата. Чтобы получить сведения о схеме MissingSchemaAction для нескольких результатов, используйте Fill для параметра set AddWithKeyзначение .

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

При переопределении Fill(DataSet) в производном классе обязательно вызовите метод базового класса Fill(DataSet) .

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

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

Fill(DataSet)

Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs

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

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

Число строк, успешно добавленных в или обновленных в DataSet Это не включает строки, затронутые операторами, которые не возвращают строки.

Реализации

Комментарии

Метод Fill извлекает данные из источника данных с помощью инструкции SELECT. IDbConnection Объект, связанный с командой select, должен быть допустимым, но его не нужно открывать. Если он IDbConnection закрыт перед Fill вызовом, он открывается для получения данных, а затем закрывается. Если соединение открыто перед Fill вызовом, оно остается открытым.

Если при заполнении таблиц данных возникает ошибка или исключение, строки, добавленные до возникновения ошибки, остаются в таблицах данных. Оставшаяся часть операции прервана.

Если команда не возвращает строки, в нее не добавляются DataSetтаблицы, и исключение не возникает.

DbDataAdapter Если объект встречает повторяющиеся столбцы при заполненииDataTable, он создает имена для последующих столбцов с помощью шаблона "columnname1", "columnname2", "columnname3" и т. д. Если входящие данные содержат неименованные столбцы, они помещаются в DataSet шаблон "Column1", "Column2" и т. д.

Когда указанный запрос возвращает несколько результатов, результирующий набор для каждого возвращаемого строки помещается в отдельную таблицу. Дополнительные результирующие наборы именуются путем добавления целочисленных значений к указанному имени таблицы (например, Table1, Table1, Table2 и т. д.). Так как таблица не создается для запроса, который не возвращает строки, при обработке запроса вставки, за которым следует запрос на выборку, таблица, созданная для запроса выбора, называется "Таблица", так как она является первой созданной таблицей. Если в приложении используются имена столбцов и таблиц, убедитесь, что нет конфликтов с этими шаблонами именования.

Если инструкция SELECT, используемая для заполнения DataSet нескольких результатов, таких как инструкции пакетного SQL, если один из результатов содержит ошибку, все последующие результаты пропускаются и не добавляются в нее DataSet.

При использовании последующих Fill вызовов для обновления содержимого DataSetнеобходимо выполнить два условия:

  1. Инструкция SQL должна соответствовать первоначально используемой для заполнения инструкции DataSetSQL.

  2. Сведения о ключевом столбце должны присутствовать.

Если данные первичного ключа присутствуют, все повторяющиеся строки сверяются и отображаются только один раз в DataTable соответствующем.DataSet Сведения о первичном ключе могут быть заданы либо путем FillSchemaуказания PrimaryKey свойства объекта DataTable, либо путем задания MissingSchemaAction свойства в значение AddWithKey.

Если SelectCommand возвращает результаты ВНЕШНЕГО СОЕДИНЕНИЯ, DataAdapter не устанавливает значение PrimaryKey для результирующего DataTable. Необходимо явно определить первичный ключ, чтобы убедиться, что повторяющиеся строки разрешаются правильно. Дополнительные сведения см. в разделе "Определение первичных ключей".

Замечание

При обработке инструкций пакетного SQL, возвращающих несколько результатов, реализация FillSchema поставщика данных .NET Framework для OLE DB извлекает сведения о схеме только для первого результата. Чтобы получить сведения о схеме MissingSchemaAction для нескольких результатов, используйте Fill для параметра set AddWithKeyзначение .

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

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

Fill(DataTable, IDbCommand, CommandBehavior)

Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs

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

command
IDbCommand

Инструкция SQL SELECT, используемая для извлечения строк из источника данных.

behavior
CommandBehavior

Одно из значений CommandBehavior .

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

Число строк, успешно добавленных в или обновленных в DataTable Это не включает строки, затронутые операторами, которые не возвращают строки.

Комментарии

Метод Fill извлекает строки из источника данных с помощью инструкции SELECT, указанной соответствующим SelectCommand свойством. Объект подключения, связанный с инструкцией SELECT, должен быть допустимым, но его не нужно открывать. Если соединение закрыто перед Fill вызовом, оно открывается для получения данных и закрытия. Если соединение открыто перед Fill вызовом, оно остается открытым.

Затем операция Fill добавляет строки в указанный целевой DataTable объект в объекте DataSet, создав DataTable объект, если он еще не существует. При создании DataTable объекта Fill операция обычно создает только метаданные имени столбца. Однако если MissingSchemaAction для свойства задано AddWithKeyзначение, также создаются соответствующие первичные ключи и ограничения.

DbDataAdapter Если объект встречает повторяющиеся столбцы при заполненииDataTable, он создаст имена для последующих столбцов, используя шаблон "columnname1", "columnname2", "columnname3" и т. д. Если входящие данные содержат неименованные столбцы, они помещаются в DataSet шаблон "Column1", "Column2" и т. д.

Перегрузка Fill , которая принимает DataTable в качестве параметра, получает только первый результат. Используйте перегрузку Fill , которая принимает DataSet в качестве параметра, чтобы получить несколько результатов.

Метод можно использовать Fill несколько раз в одном и том же DataTable. Если первичный ключ существует, входящие строки объединяются с соответствующими строками, которые уже существуют. Если первичный ключ не существует, входящие строки добавляются в .DataTable

Если SelectCommand возвращает результаты ВНЕШНЕГО СОЕДИНЕНИЯ, DataAdapter не устанавливает значение PrimaryKey для результирующего DataTable. Необходимо явно определить первичный ключ, чтобы убедиться, что повторяющиеся строки разрешаются правильно. Дополнительные сведения см. в разделе "Определение первичных ключей".

Замечание

При обработке инструкций пакетного SQL, возвращающих несколько результатов, реализация FillSchema поставщика данных .NET Framework для OLE DB извлекает сведения о схеме только для первого результата. Чтобы получить сведения о схеме MissingSchemaAction для нескольких результатов, используйте Fill для параметра set AddWithKeyзначение .

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

Эта перегрузка Fill(DataSet) метода защищена и предназначена для использования поставщиком данных .NET Framework.

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

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