Упражнение 4. Программное создание объекта DataAdapter



1. Создайте новое WinForms-приложение (назовите его DataAdapterProgram).

2. Добавьте на форму DataGridView. Сделайте так, чтобы компонент занимал верхнюю половину формы.

3. Добавьте пространство имен using System.Data.SqlClient;

4. Программно добавьте в класс формы объект Connection для соединения с базой данных на локальном сервере:

private SqlConnection NorthwindConnection = new SqlConnection("Data Source=(local);Initial Catalog=Northwind;Integrated Security=True");

5. Добавьте после соединения код для создания DataAdapter:

private SqlDataAdapter SqlDataAdapter1;

6. Создайте объект DataSet с таблицей Customer:

 private DataSet NorthwindDataset = new DataSet("Northwind");

 private DataTable CustomersTable = new DataTable("Customers");

7. Создайте обработчик события Load формы в нем укажите следующий код:

SqlDataAdapter1 = new SqlDataAdapter("SELECT * FROM Customers", NorthwindConnection);

 NorthwindDataset.Tables.Add(CustomersTable);

 SqlDataAdapter1.Fill(NorthwindDataset.Tables["Customers"]);

 dataGridView1.DataSource = NorthwindDataset.Tables["Customers"];

8. Создайте там же объект CommandBuilder, который предоставит дополнительные команды INSERT, UPDATE и DELETE, требующиеся для обновления базы при вызове метода DataAdapter.Update:

SqlCommandBuilder commands = new SqlCommandBuilder(SqlDataAdapter1);

9. Добавьте на форму кнопку и установите свойству (Name) значение UpdateButton, свойству TextSave Change.

10. В обработчике события Click вызовите метод адаптера данных Update для сохранения изменений в базе данных:

NorthwindDataset.EndInit();

SqlDataAdapter1.Update(NorthwindDataset.Tables["Customers"]);

11. Запустите приложение измените в сетке значение в одной из записей. Сохраните изменения и проверьте сохранение данных при повторном запуске приложения.

Упражнение 5. Обработка данных в DataTable

В упражнении описывается загрузка данных в таблицу, удаление строк из таблицы и редактирование текущих значений, а также просмотр сведений RowState и  DataRowVersion для записи в DataTable.

1. Создайте новое WinForms-приложение (назовите его WorkingDataTable).

2. Добавьте пространство имен using System.Data.SqlClient;

3. Добавьте на форму DataGridView. Сделайте так, чтобы компонент занимал верхнюю половину формы. Измените его свойство (Name) на CustomersDataGridView.

4. Добавьте на форму кнопку и установите свойству (Name) значение FillTableButton, свойству TextFill Table.

5. Перенесите на форму компонент SqlDataAdapter, откроется мастер настройки адаптера. На первой странице укажите подключение к БД Northwind.

6. При выборе типа команды оставьте по умолчанию – использовать инструкции SQL.

7. Введите инструкцию SELECT * FROM Customers. Проверьте, что в области компонентов появился объект Connection.

8. Сгенерируйте типизированный DataSet, основанный на настроенном адаптере, для чего в меню Data (Данные) выберите команду Generate DataSet (Создать набор данных). Обратите внимание, что выбран настроенный адаптер. Для нового набора данных введите имя NorthwindDataSet.

9. Создайте обработчик события Load формы в нем укажите следующий код:

CustomersDataGridView.DataSource = northwindDataSet1.Customers;

CustomersDataGridView.MultiSelect = false;

CustomersDataGridView.SelectionMode =     DataGridViewSelectionMode.CellSelect;

CustomersDataGridView.EditMode = DataGridViewEditMode.EditProgrammatically;

10. В обработчике события Click кнопки Fill Table вызовите метод адаптера данных Fill:

sqlDataAdapter1.Fill(northwindDataSet1.Customers);

11. Добавьте на форму кнопку и установите свойству (Name) значение AddRowButton, свойству TextAdd Row.

12. Для новой кнопки создайте обработчик события Click и реализуйте следующую функциональность:

a. Создайте новый экземпляр строки Customers:

NorthwindDataSet.CustomersRow NewRow =

(NorthwindDataSet.CustomersRow)northwindDataSet1.Customers.NewRow();

b. Присвойте значения каждому столбцу строки:

       NewRow.CustomerID = "WINGT";

       NewRow.CompanyName = "Wingtip Toys";

       NewRow.ContactName = "Steve Lasker";

       NewRow.ContactTitle = "CEO";

       NewRow.Address = "1234 Main Street";

       NewRow.City = "Buffalo";

       NewRow.Region = "NY";

       NewRow.PostalCode = "98052";

       NewRow.Country = "USA";

       NewRow.Phone = "206-555-0111";

       NewRow.Fax = "206-555-0112";

c. Реализуйте добавление строки к коллекции Rows таблицы Customers:

       try

          {

           northwindDataSet1.Customers.Rows.Add(NewRow);

          }

 

       catch (Exception ex)

          {

           MessageBox.Show(ex.Message, "Add Row Failed");

          }

13. Добавьте к классу формы метод, возвращающий выбранный в сетке CustomersRow:

private NorthwindDataSet.CustomersRow GetSelectedRow()

{

String SelectedCustomerID = CustomersDataGridView.CurrentRow.Cells["CustomerID"].Value.ToString();

NorthwindDataSet.CustomersRow SelectedRow =

northwindDataSet1.Customers.FindByCustomerID(SelectedCustomerID);

   return SelectedRow;

}

14. Добавьте на форму кнопку и установите свойству (Name) значение DeleteRowButton, свойству TextDel Row.

15. Для новой кнопки создайте обработчик события Click и реализуйте вызов метода Delete() выбранной строки для пометки ее в DataTable как удаленной:

GetSelectedRow().Delete();

16. Добавьте на форму три кнопки и установите следующие свойства:

a. Первая:

(Name) – UpdateValueButton,

TextUpdate Value

b. Вторая:

(Name) – AcceptChangesButton,

TextAccept Changes

c. Третья:

(Name) – RejectChangesButton,

TextReject Changes

17.  Добавьте четыре текстовых поля TexBox и присвойте свойствам (Name) следующие значения: CellValueTextBox, OriginalDRVTextBox, CurrentDRVTextBox, RowStateTextBox

18. Добавьте к классу формы метод, обновляющий текстовые поля версиями и состояниями строки:

private void UpdateRowVersionDisplay()

{

  }

19. В этом методе отобразите значения Original и Current для DataRowVersion выбранной Cell:

try

       {

CurrentDRVTextBox.Text = GetSelectedRow()[CustomersDataGridView.CurrentCell.OwningColumn.Name, DataRowVersion.Current].ToString();

       }

catch (Exception ex)

       {

           CurrentDRVTextBox.Text = ex.Message;

       }

try

       {

           OriginalDRVTextBox.Text = GetSelectedRow()[CustomersDataGridView.CurrentCell.OwningColumn.Name, DataRowVersion.Original].ToString();

       }

catch (Exception ex)

       {

           OriginalDRVTextBox.Text = ex.Message;

       }

20.  В этом же методе отобразите текущий RowState выбранной строки:

RowStateTextBox.Text = GetSelectedRow().RowState.ToString();

21. Создайте обработчик события Click для кнопки UpdateValueButton и добавьте следующий код:

GetSelectedRow()[CustomersDataGridView.CurrentCell.OwningColumn.Name] = CellValueTextBox.Text;

UpdateRowVersionDisplay();

22. Создайте обработчик события CustomersDataGridView_Click и добавьте следующий код:

a.  Заполните CellValueTextBox значением выбранной ячейки

CellValueTextBox.Text = CustomersDataGridView.CurrentCell.Value.ToString();

b. Обновите другие текстовые поля:

UpdateRowVersionDisplay();

23. Создайте обработчик события AcceptChangesButton_Click и добавьте следующий код:

       GetSelectedRow().AcceptChanges();

       UpdateRowVersionDisplay();

 

24. Создайте обработчик события RejectChangesButton_Click и добавьте следующий код:

       GetSelectedRow().RejectChanges();

       UpdateRowVersionDisplay();

25. Запустите приложение и нажмите кнопку Fill Table. Щелкните в сетке и обратите внимание, что значения Original и Current показывают одинаковые значения, а RowState показывает Unchanged.

26. Щелкните ячейку, содержащую Maria Anders (первая строка) и введите Maria AndersEdited в CellValueTextBox.

27. Обновите кнопкой Update Value и обратите внимание, что значение в сетке обновлено, текстовые поля Original и Current отображают различные версии записи, а текст в RowState изменен на Modified.

28. Щёлкните кнопку Add Row.

29. Пролистайте сетку вниз и выделите одну из ячеек в новой записи (WINGT). Обратите внимание, что Row State содержит Added, указывающее, что это новая строка, а текстовое поле Original показывает отсутствие исходных данных.

30. Пролистайте сетку назад до строки с полем MariaAndersEdited и выделите его.

31.  Щёлкните кнопку Reject Changes и проверьте значения версий и состояния строки.

32. Пролистайте до записи WINGT и выделите ее. Щёлкните кнопку Accept Changes и проверьте значения версий и состояния строки.

 


Дата добавления: 2019-02-26; просмотров: 196; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!