Реклама:

//---добавление столбцов в таблицы

t.Columns.Add(d2);

//---заливка таблицы данными

aKaf.Fill(t);

//---связывание таблицы и элемента управления DataGrid

dataGrid1.DataSource = t; Результат выполнения показан на рис. 2.37.

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

J рис. 2.37

2.2.6.3. Fill с параметрами набором и таблицей данных

public int Fill( DataSet dataSet, string dataTable);

Эта разновидность метода может использоваться как для типизированных, так и для нетипизированных наборов данных. Однако в нетипизированном наборе данных такая таблица должна быть создана на момент заливки в нее данных.

J

Пример. В типизированном наборе данных ndl есть таблица Prep. Зальем в нее данные: aPrep.Fill(nd1, "Prep");

Пример. Пусть имеется нетипизированный набор данных naborDannyhl и доподлинно неизвестно, есть ли в нем таблица Prep. Если такая таблица есть, то нужно залить ее данными. Если нет, выдать сообщение об ошибке.

//---если в наборе данных есть таблица Prep if (naborDannyh1.Tables.Contains("Prep"))

{

//---то зальем в нее данные aPrep.Fill(naborDannyh1, "Prep");

}

else

{

//---иначе сообщение об ошибке

MessageBox.Show(" Таблица Prep в наборе не задана!");

}

2.2.6.4. Fill с параметрами набором, таблицей данных, начальной записью и числом записей

public int Fill( DataSet dataSet, int startRecord, int maxRecords, string srcTable );

Эта разновидность метода Fill отличается от предыдущей тем, что с ее помощью можно залить в таблицу набора данных не все записи из таблицы источника, а только часть таких записей. Параметр задает startRecord начальную запись, а параметр maxRecords - максимальное число считываемых записей.

Пример. В типизированном наборе данных ndl есть таблица Prep. Зальем в нее все имеющиеся записи: aPrep.Fill(nd1, "Prep");

Результат показан ниже на рис. 2.38.

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис. 2.38

Однако если залить в таблицу Prep две записи из таблицы-источника, начиная со второй, получим результат, показанный на рис. 2.39.

APrep.Fill(nd1, 1, 2, "Prep");

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис. 2.39

2.2.7. Освежение записей из источника данных и фантомные записи

Пусть пользователи A, B и C залили в наборы данных своих приложений данные из одного и того же источника - базы данных X. "Моментальный" снимок базы X, с которым происходит работа в приложениях A, B и C, обозначим как X1.

Пусть пользователь в приложении A изменил данные и запомнил эти изменения в базе X. Обозначим это состояние базы как X2.

Возникает неприятная коллизия - в то время как приложение A работает с актуальным снимком базы данных - X2 прочие приложения (B и C) работают с устаревшим снимком данных X1.

Чтобы актуализировать данные в приложениях B и C, данные в этих приложениях нужно "освежить".

Освежение данных из источника, как и заливка данных, также производится методом Fill адаптера данных.

Пример. Пусть с одной и той же таблицей Prep базы данных VUZ.mdb работают два пользователя - AAA и BBB. Пусть AAA запускает приложение, заполняет таблицу Prep набора данных данными (рис. 2.40) и тут его вызывают на 10 минут к телефону.

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис. 2.40

В это время стартует пользователь BBB. За те 10 минут, пока пользователь AAA не работает с приложением, BBB успевает удалить две последние записи и добавить одну новую, а в первой записи исправить значение столбца Rank (рис. 2.41), после чего запоминает внесенные изменения, пересылая их к источнику данных:


⇐ Предыдущая страница| |Следующая страница ⇒