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(); } } } }