17318

Візуальне програмування – робота з БД Компонентне програмування – робота з обєктами БД

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторна робота 4. Візуальне програмування робота з БД Компонентне програмування робота з об'єктами БД. 2 год Мета роботи: Додавання оновлення і видалення даних Розмістіть на формі дві кнопки Button які налаштуйте відповідно до таблиці властивостей ...

Украинкский

2013-06-30

67 KB

1 чел.

Лабораторна робота 4. Візуальне програмування – робота з БД Компонентне програмування – робота з об'єктами БД. (2 год)

Мета роботи: Додавання, оновлення і видалення даних

Розмістіть на формі дві кнопки Button, які налаштуйте відповідно до таблиці властивостей

Властивість

Значення

(Name)

btnSave

Text

Save

 

(Name)

btnCancel

Text

Cancel

Кнопка Save зберігатиме вміст полей редагування в БД, а кнопка Cancel - відновлювати поля повторним читанням відповідного запису з БД.

Для збору редагованої в текстових полях інформації потрібно з них її зібрати і відновити кеш набору даних, після чого виконати метод Update() постачальника даних для збереження набору в БД. Для збору даних з редагованих полів, пов'язаних з даними, ми застосуємо екземпляр бібліотечного класу System.Windows.Forms.BindingContext.

Об'єкт BindingContext успадковується як загальнодоступна віртуальна властивість класу Control, отже міститься в будь-якому елементі управління, у тому числі і в самій формі. Цей об'єкт дозволяє управляти процесом редагування і оновлення даних, а також їх передачею в набір даних. Він забезпечує синхронізацію наборів даних із зв'язаними елементами управління. Скористаємося об'єктом BindingContext як вбудованою властивістю форми для оновлення набору даних.

Подвійним клацанням на кнопці Save створіть для неї обробник події Click, якого заповните так

private void btmSave_Click(object sender, EventArgs e)

       {

           SaveRecord();

       }

       private void SaveRecord()

       {

           // Застосувати властивість форми типа BindingContext

           // і виштовхнути зміни зі всіх дочірніх елементів форми

           // пов'язаних з даними, в кеш набору даних для заданої таблиці

           this.BindingContext[dataSet21, "Student"].EndCurrentEdit();

           // Відновити дані в БД з кеша набору даних dataSet21

           sqlDataAdapter2.Update(dataSet21, "Student");

           // Відновити перший набір даних і список listBox

           // із збереженням позиції виділеного елементу списку

           // на випадок, якщо раптом редагувалося поле Name

           // що відображується в списку

           int index = listBox1.SelectedIndex;

           NewLoad();

           int count = listBox1.Items.Count - 1;

           index = index < count ? index : count; // Однорядковий умовний оператор

           listBox1.SelectedIndex = index;

       }

       void NewLoad()

       {

           // Очищаємо набір даних

           dataSet11.Clear();

           // Заповнюємо набір даних командою з новим значенням параметра

           sqlDataAdapter1.Fill(dataSet11);

           // Встановлюємо курсор списку в кінець

           listBox1.SelectedIndex = listBox1.Items.Count - 1;

       }

  •  Запустіть форму - буде викинуто виключення, що адаптер даних не підтримує команду Update().

Так, дійсно, наш другий постачальник даних був раніше налаштований лише на читання даних з бази (як і перший), тому потрібно його переналаштувати, щоб додати функціональність оновлювати дані в БД.

  •  У режимі View Designer форми викличте контекстне меню для об'єкту sqlDataAdapter2 і виконайте команду Configure Data Adapter
  •  Дійдіть до вкладки Generate the SQL statements майстра, клацніть на кнопці Advanced Options і встановіть всі прапорці вкладки Advanced Options
  •  Дійдіть до останньої вкладки майстра налаштування постачальника, переконайтеся, що включені всі режими Select, Insert, Update, Delete і клацніть на кнопці Finish, щоб завершити налаштування

В обробнику кнопки Save ми використовували оновлення даних в базі в два етапи: спочатку виштовхнули зміни із зв'язаних елементів управління в набір даних, і лише потім дали команду на остаточне внесення змін з набору в саму базу. Такий підхід реалізований в середовищі ADO.NET для забезпечення від'єднаного підключення до бази даних.

Механізм роботи такий: постачальник даних при виконанні запиту SELECT на вибірку даних короткочасно підключається до бази даних, завантажує в кеш знайдені дані і відразу ж відключається від бази. Це дає можливість працювати з базою даних максимальній кількості користувачів. Постачальник даних після роз'єднання імітує тепер собою базу даних в кеші оперативної пам'яті і користувач працює з даними через набір даних не помічаючи, що фактично працює з копією даних.

Користувач у від'єднаному режимі може зберігати дані нібито в базі, але при кожному збереженні постачальник даних фактично створює у себе по декілька версій змін, які можна завжди відмінити. При остаточному збереженні змін в базі даних розробник через програмування постачальника даних може реалізувати необхідну стратегію оновлення і дозволу конфліктних ситуацій.

Налаштуємо обробник подій кнопки Cancel для відміни дій і відновлення попереднього стану також за допомогою BindingContext

private void btnCancel_Click(object sender, EventArgs e)

       {

           // Вытолкнуть первоначальные данные из

           // набора данных в поля редактирования

           this.BindingContext[dataSet21, "Student"].CancelCurrentEdit();

       }

Механізм ADO.NET роботи у від'єднаному режимі спирається на принцип оптимістичного паралелізму обробки даних. Дані в самій базі не блокуються і можуть споживатися відразу декількома користувачами. Постачальники даних кожного користувача при спробі зберегти перевіряють зміни підвідомчих даних в базі і дозволять зберегти зміни лише тих даних, з якими не працюють в даний момент інші користувачі.

Для розрахованого на багато користувачів режиму роботи з БД найбільш поширені наступні типи перевірки порушення паралелізму і стратегій оновлення даних:

  1.  Зміни заносяться в базу даних в тому випадку, якщо значення первинного ключа оновленого рядка збігається із значенням первинного ключа існуючого рядка.
  2.  Зміни заносяться в базу даних в тому випадку, якщо жоден із стовпців, оновлених даним користувачем, не був змінений ніким іншим з тих пір, як рядок був лічений даним користувачем.
  3.  Зміни заносяться в базу даних в тому випадку, якщо жоден із стовпців рядка не був змінений ніким іншим з тих пір, як рядок був лічений даним користувачем.
  4.  Зміни заносяться в базу даних в тому випадку, якщо мітка часу останнього оновлення рядка не змінилася з тих пір, як рядок був лічений даним користувачем. По своєму сенсу цей тип перевірки аналогічний попередньому.

Функціонування середовища ADO.NET у від'єднаному режимі засновано на створенні тимчасових даних у файлі на мові XML. Аби переконатися в цьому, досить заглянути в панель Solution Explorer і побачити файли з розширенням .xsd і з іменами класів, створених оболонкою для наших наборів даних. Якщо відкрити, наприклад, файл DataSet2.xsd через команду контекстного меню Open With/Source Code (Text) Editor, то можна побачити схему на мові XML, що налаштовує роботу постачальника.

Додавання і видалення записів з використанням зв'язаних елементів управління

Додамо функціональність видалення або додавання по одному запису в таблицю через другий постачальник даних. Як і при редагуванні, використовуватимемо можливості об'єкту BindingContext форми і діятимемо через нього на пов'язані з даними елементи управління.

  •  Додайте на форму дві кнопки і налаштуйте їх відповідно до таблиці властивостей

Елемент

Властивість

Значення

Button

(Name)

btnAdd

 

Text

Add

Button

(Name)

btnDelete

 

Text

Delete

  •  Створіть обробники події Click для обох кнопок:

         private void btnAdd_Click(object sender, EventArgs e)

       {

           // Добавить пустую запись в набор и

           // показать ее в элементах редактирования

           this.BindingContext[dataSet21, "Student"].AddNew();

       }

       private void btnDelete_Click(object sender, EventArgs e)

       {

         if (listBox1.Items.Count <= 0)// Список пустой, удалять нечего

               return;

           // Отметить в наборе текущую запись как удаленную

            int index = this.BindingContext[dataSet21, "Student"].Position;

            this.BindingContext[dataSet21, "Student"].RemoveAt(index);

             SaveRecord();// Записать изменения в БД

        }    

Якщо користувач редагував дані і забув їх зберегти, то при закритті форми збережемо зміни самі.

Для цього в обробник події  FormClosed вставте виклик функції збереження даних

       private void Form1_FormClosed(object sender, FormClosedEventArgs e)

       {

           SaveRecord();

       }

Завдання для самостійного виконання

1. Модифікуйте код, вставивши обробку  помилок (блоки try...catch...)

2. Для власних варіантів завдань забезпечте відображення даних у список і текстові поля з можливістю їх редагування, видалення, додавання.


 

А также другие работы, которые могут Вас заинтересовать

48403. Необхідність, сутність і функції фінансів 48.11 KB
  Юридичні особи діяльність яких повязана з наданням професійних послуг на ринку цінних паперів до них відносяться підприємства що спеціалізуються на здійсненні посередницької діяльності по випуску та розміщенню цінних паперів виконуючи операції на фондовому ринку за дорученням своїх клієнтів. Фінанси підприємства. Субєктами господарювання є: Господарські організації це юридичні особи створені відповідно до цивільного кодексу України державні комунальні та інші підприємства створенні відповідно до господарського кодексу України а також...
48404. Предмет фінансової науки. Фінансові категорії 1.04 MB
  Тут зосереджувалася основна маса доходів у бюджеті централізувалося більше 50 валового внутрішнього продукту і до 75 національного доходу а без асигнувань з бюджету практично неможливим було функціонування значної частини підприємств установ соціальнокультурної сфери будівництво житла існування житловокомунального Господарства тощо. Значення державного бюджету обумовлено не лише обсягом коштів зосереджених у ньому а й найбільш розвиненою системою взаємозвязків з усіма іншими ланками та сферами. до Європейської хартії про місцеве...
48405. СТАТЬ І СЕКСУАЛЬНІСТЬ: ПСИХОЛОГО-ПЕДАГОГІНИЙ ПОГЛЯД 584 KB
  Статева соціалізація особистості оволодіння підростаючим поколінням нормами поведінки з представниками протилежної статі підготовка молоді до інтимних стосунків створення сімї та виховання дітей залишалась у тіні. Відсутність системи статевої просвіти серед дітей та юнацтва нестача висококваліфікованих педагогів з питань сексології психології статі брак наукової та науковопопулярної літератури з питань статі шлюбу та сімї негативно позначаються на засвоєнні учнями норм поведінки та самовизначенні особистості у складних питаннях...
48406. Функціонування Internet: організація, структура, методи 335.69 KB
  Еталонна модель ISOOSI Сучасні мережі побудовані за багаторівневим принципом. Для роботи мереж необхідна множина різноманітних протоколів: наприклад таких що керують фізичним зв'язком встановленням зв'язку по мережі доступом до різноманітних ресурсів і т. Він відповідає за правильну передачу даних пакетів на ділянках між безпосередньо пов'язаними елементами мережі. Цей рівень користується можливостями наданими йому рівнем 2 для забезпечення зв'язку двох будьяких точок у мережі.
48407. Теоретичні та методологічні засади комунікації і комунікаційних процесів 467.76 KB
  Теоретичні та методологічні засади комунікації і комунікаційних процесів Теорія комунікації як наукова дисципліна Основні визначення теорії комунікації. Предмет теорії комунікації. Закони теорії комунікації.
48408. Міжнародна економіка 30.64 KB
  Тема Агенти відкритої економіки беруть участь в міжнародному обміні товарів і послуг переміщенні грошей капіталу і робочої сили між країнами. Мезорівень охоплює економічні звязки між регіонами галузями міжгалузевими комплексами окремих країн. Світовий ринок це сфера стійких товарногрошових відносин між країнами які базуються на міжнародному поділі праці та інших факторів виробництва. Світове господарство це сукупність взаємодіючих національних економік всіх країн світу повязаних між собою мобільними факторами виробництва.
48409. Основи мотиваційних процесів 42.13 KB
  Маніпулювання – приховане спонукання іншої людини, прийняття рішень, до переживання певних станів, і виконання необхідних для ініціатора цілей. Стимулювання – предявлення зовнішнього фактору, з метою посилення і прийняття мисленнєвих, емоційних і поведінкових реакцій.
48410. Психологія особистості 191.5 KB
  Індивід (від лат. individuum – неподільне) – це одиничний представник людського роду, носій сукупності морфологічних, фізіологічних та психічних ознак, що відрізняють його від представників інших видів живих створінь. Індивідом є кожна людина. Індивідні властивості притаманні їй від народження (за винятком випадків вродженої патології). В процесі онтогенічного розвитку індивід стає особистістю, індивідуальністю, свідомим суб’єктом своєї поведінки та діяльності.
48411. Себестоимость продукции 173.32 KB
  Себестоимость продукции Виды продукции предприятия позиции номенклатуры. Показатели деятельности предприятия: позиции номенклатуры 1 2 n; объём выпуска продукции в натуральном виде Ni натуральное выражение; V 100 60 2008 2012 1995 1991 Т годы Товарная продукция ТП денежное выражение выпущенной продукции по всем позициям номенклатуры за год. Производственная мощность это максимально возможный выпуск продукции в натуральном выражении за год при определённых организационно-технических условиях производства.