Упражнение 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, свойству Text – Save 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, свойству Text – Fill 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, свойству Text – Add 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, свойству Text – Del Row.
15. Для новой кнопки создайте обработчик события Click и реализуйте вызов метода Delete() выбранной строки для пометки ее в DataTable как удаленной:
GetSelectedRow().Delete();
16. Добавьте на форму три кнопки и установите следующие свойства:
a. Первая:
(Name) – UpdateValueButton,
Text – Update Value
b. Вторая:
(Name) – AcceptChangesButton,
Text – Accept Changes
c. Третья:
(Name) – RejectChangesButton,
Text – Reject 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!