INTUIT, Lecture, DataTable, DataRow и DataColumn обекти
Обекти DataTable, DataRow и DataColumn
Концепция за DataSet, DataTable и DataColumn
И така, DataSet е буфер за съхраняване на данни от базата данни. Този буфер е проектиран да съхранява структурирана информация, представена като таблици, така че първият и най-очевиден вложен DataSet е DataTable. В рамките на един обект DataSet могат да се съхраняват множество заредени таблици от базата данни, поставени в съответните обекти DataTable. Всяка таблица се състои от колони (наричани още полета или колони) и редове. За достъп до тях и за управление на колоните и редовете в обекта DataTable са предвидени специални обекти - DataColumn и DataRow . Между таблиците, както знаем, може да има релации - тук те са представени от DataRelation обект. И накрая, таблиците имат първични и вторични ключове - обектът Constraint със своите два подкласа UniqueConstraint и ForeighKeyConstraint ги описват. Продължавам да казвам "представен", "описвам", като избягвам думите "показвам" и "дефиниран" - факт е, че не можете да поставите знак за равенство между например DataRelation обект и релация на таблица. В заредените таблици всички необходими обекти не се формират автоматично - на места трябва да го направим сами. Самите обекти също имат доста фина и сложна структура, така че това би било доста грубо приближение. Първо обаче, за да разберете същността, е полезно да имате предвид следните "формули":
Възниква въпросът: за какво са тези обекти, ако се справихме добре без тях, за да покажем съдържанието на таблицата, например в елемента DataGrid? Факт е, че за просто показване на информация не е необходимо да създавате тези обекти, но тогава всички данни ще бъдатхомогенни текстови променливи, като таблици в документ на Microsoft Word. DataSet не може сам да формира структурата на данните - типа на променливите, първични и вторични ключове, връзки между таблици. За да управлявате структурата, за сложен дисплей (например показване на информация по отношение на елементи, създадени в режим на работа на приложението), е необходимо да дефинирате тези обекти.
Най-добрият начин да разберете как работят всички обекти е да ги приложите на практика. Нека създадем проста тестова програма, в която можете да отговаряте на въпроси, да навигирате през тях и да определяте броя на верните отговори. Нека създадем Microsoft SQL база данни за тестове, за да съхраняваме въпроси и опции за отговори. Базата данни ще се състои само от две таблици (фиг. 8.1):
Всеки въпрос ще съдържа няколко отговора, за синхронно движение през структурата е необходима връзка в полето questID. Квадратчето „Allow Nulls“ не е отметнато за всички полета – това означава, че всички полета ще бъдат задължителни. Структурата на таблиците с въпроси и варианти е дадена в таблица 8.1:
Таблица 8.1. Структура на таблицата на базата данни ТестовеТаблица Поле Описание на полето
Въпроси - таблица с въпроси | questID Номер на въпроса |
въпрос Текст на въпрос |
questType Тип въпрос (с един или повече верни отговора) |
Варианти - таблица с варианти на отговор | id Номер на отговора |
questID Номер на въпроса |
вариант Текстът на опцията за отговор |
isRight Правилен ли е даденият отговор |
За нас броят на въпросите не е толкова важен, така че ще има пет от тях, свързани с темата за операционната система Windows XP. един въпрос можесъответства на един верен отговор - в този случай стойността "0" е посочена в полето questType. По-нататък във формуляра тези опции ще бъдат показани с елементи RadioButton. За въпроси, които имат няколко верни отговора, полето questType е зададено на "1". Във формуляра такива опции ще бъдат показани с квадратчета за отметка. Таблици 8.2 и 8.3 показват съдържанието на таблиците Въпроси и Варианти.
Таблица 8.3. Отговори в таблицата "Варианти"id questID Variant isRight
1 | 1 | C:\Program Files\Outlook Express\Mail | 0 |
2 | 1 | C:\Documents and Settings\UserName\ Local Settings\Application Data\Identities\ \Microsoft\Outlook Express | 1 |
3 | 1 | C:\WINDOWS\system32\Microsoft\Outlook Express\Bases | 0 |
4 | 1 | C:\Documents and Settings\Default User\Cookies | 0 |
5 | 2 | „Моят компютър – Щракнете с десния бутон – Свойства – Раздел „Общи“ на Подпис – Щракнете с десния бутон – Свойства – Преименуване“ | 0 |
6 | 2 | [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion] след това променете параметрите RegisteredOwner и RegisteredOrganization | 1 |
7 | 2 | [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT] изтрийте ключа CurrentVersion | 0 |
8 | 2 | [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] | 0 |
9 | 3 | *.mpeg, *.mdb, *. htm | 0 |
10 | 3 | *.xls, *.txt, *.mht | 1 |
единадесет | 3 | *. jpeg,*.gif, *.mp3 | 0 |
12 | 3 | *. документ *. xml, *.bmp | 1 |
13 | 4 | актуализация, вмъкване, сума | 0 |
14 | 4 | където, като, създавайте | 0 |
15 | 4 | брой, мин., макс | 1 |
16 | 4 | изберете, ср., в | 0 |
17 | 5 | Деактивирана проверка за грешки на всички дискови дялове при зареждане на Windows XP | 1 |
18 | 5 | Таймерът е настроен на автоматично изключване | 0 |
19 | 5 | Деактивирани са всички диагностични съобщения | 0 |
20 | 5 | Системата ще спре да се зарежда | 0 |
В полето isRight на таблицата Варианти верните отговори се отбелязват със стойност „1“. Ясно е, че за практическото приложение на тестовата програма достъпът до базата данни на тестовете трябва да бъде ограничен. Ние обаче ще използваме връзки без парола.
Създайте ново Windows приложение и го наименувайте „Тестове“. Задайте следните свойства на формуляра:
Form1, форма, стойност на свойството
FormBorderStyle | FixedSingle |
MaximizeBox | Невярно |
размер | 550; 350 |
Текст | Тест |
Плъзнете и пуснете TextBox, GroupBox, Label и пет бутона върху формуляра, задайте следните стойности на свойството на елемента:
label1, стойност на свойството
местоположение | 16;8 |
Текст | Въпрос: |
textBox1, стойност на свойството
Име | txtВъпрос |
местоположение | 12; 24 |
многоредов | Вярно |
размер | 520; 90 |
TabIndex | 8 |
Текст |
groupBox1, стойност на свойството
Име | GbVariants |
местоположение | 12; 120 |
размер | 520; 150 |
Текст | Опции за отговор |
button1, стойност на свойството
Име | btnFirst |
местоположение | 24; 280 |
Текст |
button4, стойност на свойството
Име | BtnLast |
местоположение | 249; 280 |
Текст | > |
button5, стойност на свойството
Име | BtnCheck |
местоположение | 360; 280 |
размер | 150; 23 |
Текст | Резултат |
Интерфейсът на приложението е готов. Ще добавим квадратчета за отметка или елементи на radioButton в режим на стартиране на приложението - всъщност дължината на всички отговори е различна и няма смисъл да се обвързваме със статични елементи. Превключете към раздела Данни на лентата с инструменти на кутията с инструменти и плъзнете обект DataSet върху формуляра. В прозореца Add DataSet, който се показва, изберете стойността „Untyped DataSet“ и щракнете върху „OK“. Появява се панелът с компоненти, с който многократно сме се занимавали. Задайте свойството Name на dsTests.
име на таблица | Въпроси |
Име | dtВъпроси |