· Множество данни - DataSet
Множеството данни - DataSet е обект, който съдържа една или повече обекти таблици данни - DataTable. Команда на DataSet може да изтегля данни от база данни и да ги съхранява
в таблици DataTable вътре в DataSet. В ADO.NET, множеството DataSet е колекция за една или повече таблици данни, и всяка таблица може да съдържа данни от много
таблици на подлежащата база данни.
· Обект Таблица данни - DataTable
Може лесно да добавим DataTable от източник
на данни или да създадем наша собствена таблица (DataTable) в дадено множество DataSet.За да създадем и запълним DataSet, първо трябва да създадем обект DataSetAdapter и после да поставим референтна връзка обратно към OleDbCommand или SqlCommand които провеждат записите. Може да осъществите това с кода:
Dim dsCommand As New
OleDbDataAdapter ()
dsCommand.SelectCommand =
myComm
Обектът DataSetAdapter има
метод Fill, който актуално изпълнява
инструкцията в командния обект. След това трябва да създадете обекта DataSet. След това да извикате метод Fill на DataSetAdapter и да подадете на това ново множество DataSet единия параметър. Вторият параметър е името на таблицата DataTable вътре в DataSet , която ще бъде създадена от DataSetAdapter. Въведете следния код за
създаване на таблица данни от команда DataSetCommand вътре в DataSet:
Dim dsDascali As New
DataSet()
dsCommand.Fill (dsDascali,
"Dascali")
Когато се изпълнява този код, се създава таблица вътре в DataSet. Тази таблица тук е именована Dascali, но би могла да има всякакво име. Когато извикате Fill, ако името на таблицата, която сте спесифицирали не
съществува,
то се създава автоматично. Всички обекти са независими един от друг. Ако имате много таблици в DataSet, може даже да дефинирате партньорски връзки (relationships) между тях. Мислете за вашето DataSet като за миниатюрна база данни в паметта. Можете да вмъквате (insert), актуализирате (update) и изтривате (delete) записи в таблиците на DataSet. Тези промени могат да
бъдат направени опционално обратно в подлежащата база данни. За да видим стойностите на таблица в DataSet, трябва да минем през редица колекции и свойства. Примерно, вие
имате таблица на даскалите в училище Dascali в DataSet. Ако искате да получите първия запис (record zero) и второто поле (field 1, DascaloName) вашият код ще е:
msgbox(dsDascalo.Tables.Item("Dascali").Rows(0).Item("DascaloName").ToString)
Вместо Tables.Item("Dascali") може да използвате Tables.Item(0). След това спесифицирате първия ред и поле DascaloName. Бихте могли и така Rows(0).Item(1). След това добавяте метод ToString за да конвертирате стойността изрично в стринг. Синтаксисът е: msgbox(dsDascalo.Tables.Dascali.Rows(0).
DascaloName.ToString)
· Обект DataRow
Алтернативно може да създадете обект DataRow. Ето и примерния цикъл:
Dim drDascal As DataRow
For Each drDascal In dsDascali.Tables.Item("Dascali").Rows
MsgBox(drDascal.Item("DascaloName").ToString)
Exit For
Next
Отново прекъсваме с Exit за да не минаваме през всички записи на даскали. Както
можете да видите в кода, просто
използваме обект DataRow да
сочи отделните редове, а след това можем да достигнем до необходимите полета. Eто и комплектния код:
Private
Sub Button1_Click_1(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim
sConnString As String
= "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet
OLEDB:Database Locking Mode=1; Data Source =
""C:DataBasesDascalo.mdb""; Jet OLEDB:Engine Type = 5 ;
Provider = ""Microsoft.Jet.OLEDB.4.0"";Jet OLEDB:System database=;Jet
OLEDB : SFP = False ;persist security info=False;Extended
Properties=;Mode=Share Deny None;Jet OLEDB:Encrypt Database=False;Jet
OLEDB:Create System Database = False ; Jet OLEDB:Don't Copy Locale on
Compact=False;Jet OLEDB:Compact Without Replica Repair=False;User ID=Admin;Jet
OLEDB:Global Bulk Transactions=1"
Dim myConn As New OleDbConnection
myConn.ConnectionString = sConnString
myConn.Open()
Dim sqlStatement As String = "SELECT Oblast FROM Dascali"
Dim myComm As
OleDbCommand = New OleDbCommand(sqlStatement,
myConn)
Dim myReader As
OleDbDataReader = Nothing
Dim dsCommand As New OleDbDataAdapter
dsCommand.SelectCommand = myComm
Dim dsDascali As New DataSet
dsCommand.Fill(dsDascali, "Dascali")
MsgBox(dsDascali.Tables.Item("Dascali").Rows(0).Item("Oblast").ToString)
Dim drDascali As
DataRow
For Each drDascali In dsDascali.Tables.Item("Dascali").Rows
MsgBox(drDascali.Item("Oblast").ToString)
Exit For
Next
End Sub
End
Class
· Обект DataView
Можем да създадем множество изгледи от дадена таблица с помощта на
обекта DataView. Обектът DataView е проектиран така, че да може
да се свързва към Windows форма или
към Web форма.
Фигура 101 Компонентите данни на ADO.NET
