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


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

Fill(DataSet, String)

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

Fill(DataSet)

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

Fill(DataTable, IDbCommand, CommandBehavior)

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

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

Исходный код:
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столбцы, он создает имена для последующих столбцов, используя шаблон "имя_столбца1", "имя_столбца2", "имя_столбца3" и т. д. Если входящие данные содержат неименованные столбцы, они помещаются в DataSet в соответствии с шаблонами "Столбец1", "Столбец2" и т. д. При добавлении нескольких результирующих наборов в DataSet каждый результирующий набор помещается в отдельную таблицу. Дополнительные результирующие наборы именуются путем добавления целочисленных значений к указанному имени таблицы (например, "Table", "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 возвращает результаты OUTER JOIN, то DataAdapter не задает значение PrimaryKey для результирующего объекта DataTable. Чтобы обеспечить правильное разрешение повторяющихся строк, необходимо явно определить первичный ключ. Дополнительные сведения см. в разделе Определение первичных ключей.

Примечание

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

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

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

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

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

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

Исходный код:
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

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

behavior
CommandBehavior

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

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

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

Исключения

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

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

-или-

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

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

Значение параметра startRecord меньше 0.

-или-

Значение параметра maxRecords меньше 0.

Комментарии

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

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

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

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

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

  • При обработке нескольких результатов из пакетной инструкции maxRecords SQL применяется только к первому результату. То же самое относится и к строкам, содержащим результаты с главами (платформа .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

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

Примеры

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

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

Метод 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, имейте в виду следующее:

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

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

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

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

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

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

Если SelectCommand возвращает результаты OUTER JOIN, то DataAdapter не задает значение PrimaryKey для результирующего объекта DataTable. Чтобы обеспечить правильное разрешение повторяющихся строк, необходимо явно определить первичный ключ. Дополнительные сведения см. в разделе Определение первичных ключей.

Примечание

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

Примечание

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

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

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

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

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

Fill(Int32, Int32, DataTable[])

Исходный код:
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 возвращает результаты OUTER JOIN, то DataAdapter не задает значение PrimaryKey для результирующего объекта DataTable. Чтобы обеспечить правильное разрешение повторяющихся строк, необходимо явно определить первичный ключ. Дополнительные сведения см. в разделе Определение первичных ключей.

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

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

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

Примечание

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

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

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

Fill(DataTable)

Исходный код:
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столбцы, он создает имена для последующих столбцов, используя шаблон "имя_столбца1", "имя_столбца2", "имя_столбца3" и т. д. Если входящие данные содержат неименованные столбцы, они помещаются в DataSet в соответствии с шаблонами "Столбец1", "Столбец2" и т. д. При добавлении нескольких результирующих наборов в 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 возвращает результаты OUTER JOIN, то DataAdapter не задает значение PrimaryKey для результирующего объекта DataTable. Чтобы обеспечить правильное разрешение повторяющихся строк, необходимо явно определить первичный ключ. Дополнительные сведения см. в разделе Определение первичных ключей.

Примечание

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

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

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

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

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

Fill(DataTable, IDataReader)

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

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

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

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

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

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

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

Если SelectCommand возвращает результаты OUTER JOIN, то DataAdapter не задает значение PrimaryKey для результирующего объекта DataTable. Чтобы обеспечить правильное разрешение повторяющихся строк, необходимо явно определить первичный ключ. Дополнительные сведения см. в разделе Определение первичных ключей.

Примечание

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

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

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

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

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

Fill(DataSet)

Исходный код:
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 в соответствии с шаблонами "Столбец1", "Столбец2" и т. д.

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

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

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

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

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

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

Если SelectCommand возвращает результаты OUTER JOIN, то DataAdapter не задает значение PrimaryKey для результирующего объекта DataTable. Чтобы обеспечить правильное разрешение повторяющихся строк, необходимо явно определить первичный ключ. Дополнительные сведения см. в разделе Определение первичных ключей.

Примечание

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

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

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

Fill(DataTable, IDbCommand, CommandBehavior)

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

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

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

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

Если SelectCommand возвращает результаты OUTER JOIN, то DataAdapter не задает значение PrimaryKey для результирующего объекта DataTable. Чтобы обеспечить правильное разрешение повторяющихся строк, необходимо явно определить первичный ключ. Дополнительные сведения см. в разделе Определение первичных ключей.

Примечание

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

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

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

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

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