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):

datatable

Всеки въпрос ще съдържа няколко отговора, за синхронно движение през структурата е необходима връзка в полето 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
11C:\Program Files\Outlook Express\Mail0
21C:\Documents and Settings\UserName\ Local Settings\Application Data\Identities\ \Microsoft\Outlook Express1
31C:\WINDOWS\system32\Microsoft\Outlook Express\Bases0
41C:\Documents and Settings\Default User\Cookies0
52„Моят компютър – Щракнете с десния бутон – Свойства – Раздел „Общи“ на Подпис – Щракнете с десния бутон – Свойства – Преименуване“0
62[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion] след това променете параметрите RegisteredOwner и RegisteredOrganization1
72[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT] изтрийте ключа CurrentVersion0
82[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]0
93*.mpeg, *.mdb, *. htm0
103*.xls, *.txt, *.mht1
единадесет3*. jpeg,*.gif, *.mp30
123*. документ *. xml, *.bmp1
134актуализация, вмъкване, сума0
144където, като, създавайте0
154брой, мин., макс1
164изберете, ср., в0
175Деактивирана проверка за грешки на всички дискови дялове при зареждане на Windows XP1
185Таймерът е настроен на автоматично изключване0
195Деактивирани са всички диагностични съобщения0
205Системата ще спре да се зарежда0

В полето isRight на таблицата Варианти верните отговори се отбелязват със стойност „1“. Ясно е, че за практическото приложение на тестовата програма достъпът до базата данни на тестовете трябва да бъде ограничен. Ние обаче ще използваме връзки без парола.

Създайте ново Windows приложение и го наименувайте „Тестове“. Задайте следните свойства на формуляра:

Form1, форма, стойност на свойството
FormBorderStyleFixedSingle
MaximizeBoxНевярно
размер550; 350
ТекстТест

Плъзнете и пуснете TextBox, GroupBox, Label и пет бутона върху формуляра, задайте следните стойности на свойството на елемента:

label1, стойност на свойството
местоположение16;8
ТекстВъпрос:
textBox1, стойност на свойството
ИмеtxtВъпрос
местоположение12; 24
многоредовВярно
размер520; 90
TabIndex8
Текст
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Въпроси

datatable