DbDataAdapter.Fill Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
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
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
Параметры
- 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
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
Параметры
- 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
Параметры
- 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
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
Параметры
- 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необходимо выполнить два условия:
Инструкция SQL должна соответствовать инструкции, которая изначально использовалась для заполнения DataSet.
Должны присутствовать сведения о ключевом столбце.
При наличии сведений о первичном ключе все повторяющиеся строки будут согласованы и отображаются только один раз в 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, чтобы получить все записи после начальной записи.
Возвращаемое значение
Число строк, успешно добавленных или обновленных в объектах 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
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
Параметры
Возвращаемое значение
Количество строк, успешно добавленных или обновленных в объекте 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
Параметры
- dataReader
- IDataReader
Имя IDataReader.
Возвращаемое значение
Количество строк, успешно добавленных или обновленных в объекте DataTable. Не включает строки, на которые воздействуют операторы, не возвращающие строк.
Применяется к
Fill(DataSet, String)
- Исходный код:
- DbDataAdapter.cs
- Исходный код:
- DbDataAdapter.cs
- Исходный код:
- DbDataAdapter.cs
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
Параметры
- 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должны выполняться два условия:
Инструкция SQL должна совпадать с инструкцией , которая изначально использовалась для заполнения DataSet.
Должны присутствовать сведения о ключевом столбце. При наличии сведений о первичном ключе все повторяющиеся строки выверяются и отображаются только один раз в 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. Не включает строки, на которые воздействуют операторы, не возвращающие строк.
Реализации
Комментарии
Метод 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должны выполняться два условия:
Инструкция SQL должна совпадать с инструкцией , которая изначально использовалась для заполнения DataSet.
Должны присутствовать сведения о ключевом столбце.
При наличии сведений о первичном ключе все повторяющиеся строки выверяются и отображаются только один раз в 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
Параметры
- 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.