Fill(DataSet, Int32, Int32, String)

Метод реализует добавление или обновление строк в объект DataSet из части таблицы в источнике данных.

Например, таблица X содержит 1 млн. записей. Данный метод позволяет выполнить частичную загрузку этой таблицы в DataSet, например, 100 записей, начиная c 500001.

Примечание

В клиентских приложениях, ориентированных на работу исключительно с СУБД ЛИНТЕР, вместо данного метода можно использовать конструкцию «ограничение выборки» select-запроса:

< ограничение выборки >::=
FETCH FIRST < объем выборки > [PERCENT] [WITH TIES]
| LIMIT  [ < начало выборки >,] < количество строк >

Описание работы метода см. в подпункте Fill(DataTable).

Синтаксис
  public int Fill(
    DataSet dataSet,
    int startRecord,
    int maxRecords,
    string srcTable
);
      

dataSet – объект DataSet для заполнения записями и, если необходимо, схемой данных.

startRecord – начальный номер строки в источнике данных, с которой необходимо начать добавление (обновление) строк в DataSet.

Отсчет начинается с 0.

maxRecords – максимальное число извлекаемых из источника данных строк.

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

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

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

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

Примечание

Хотя вся выборка данных, создаваемая SQL-запросом, передается с ЛИНТЕР-сервера на клиентский компьютер, тем не менее объект DataSet не будет содержать больше записей, чем указано в maxRecords.

Исключения
ArgumentNullException Параметр dataSet содержит null-значение.
ArgumentException Значение параметра startRecord или параметра maxRecords меньше 0.
InvalidOperationException Свойство SelectCommand не инициализировано.
LinterSqlException Код завершения СУБД ЛИНТЕР не равен 0.
Пример

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

1) Стандартный метод.

// C#
using System;
using System.Data;
using System.Data.Common;

class FillSample
{
  static void Main()
  {
    // Создание фабрики классов провайдера
    DbProviderFactory factory =
      DbProviderFactories.GetFactory("System.Data.LinterClient");
    // Соединение с БД
    DbConnection con = factory.CreateConnection();
    con.ConnectionString =
      "Data Source=LOCAL;User ID=SYSTEM;Password=MANAGER8";
    // Создание объекта DbDataAdapter
    DbDataAdapter adapter = factory.CreateDataAdapter();
    adapter.SelectCommand = factory.CreateCommand();
    adapter.SelectCommand.Connection = con;
    adapter.SelectCommand.CommandText =
      "select model, make " +
      "from auto, person " +
      "where auto.personid=person.personid and name like 'A%'";
    // Создание объекта DataSet
    DataSet dataset = new DataSet();
    // Заполнение объекта DataSet данными из таблицы БД
    adapter.Fill(dataset, 25, 7, "Автомобили");
    // Отображение полученных данных
    foreach (DataTable table in dataset.Tables)
    {
      Console.WriteLine("Имя таблицы: " + table.TableName);
      Console.WriteLine("Строки таблицы:");
      foreach (DataRow row in table.Rows)
      {
        foreach (DataColumn column in table.Columns)
        {
          Console.Write("{0} | ", row[column.ColumnName]);
        }
        Console.WriteLine();
      }
    }
  }
}

2) Только при работе с ЛИНТЕР-сервером.

// C#
using System;
using System.Data;
using System.Data.LinterClient;

class FillSample
{
  static void Main()
  {
    // Создание объекта LinterDbDataAdapter
    LinterDbDataAdapter adapter = new LinterDbDataAdapter(
      "select model, make from auto, person " +
      "where auto.personid=person.personid and name like 'A%' limit 25, 7",
      "Data Source=LOCAL;User ID=SYSTEM;Password=MANAGER8");
    // Создание объекта DataSet
    DataSet dataset = new DataSet();
    // Заполнение объекта DataSet данными из таблицы БД
    adapter.Fill(dataset, "Автомобили");
    // Отображение полученных данных
    foreach (DataTable table in dataset.Tables)
    {
      Console.WriteLine("Имя таблицы: " + table.TableName);
      Console.WriteLine("Строки таблицы:");
      foreach (DataRow row in table.Rows)
      {
        foreach (DataColumn column in table.Columns)
        {
          Console.Write("{0} | ", row[column.ColumnName]);
        }
        Console.WriteLine();
      }
    }
  }
}