Дотолкова, доколкото цялото ви програмиране е около извеждането на данни
във формата, разгледахме процеса. Това се окомплектова около свързването на
контроли към
DataSet. Вие не сте
кодирали за обектите
ADO.
NET. Трябва да можете да използвате
тези
ADO.
NET в компонентите, които
нямат потребителски интерфейс. Затова е важно да се разберат някои неща за
ADO.
NET контролите и тяхното действие.
-
Несвързана архитектура за работа с бази данни
Както много пъти вече споменахме,
ADO.
NET използва
несвързана архитектура да оперира с данни. Има
основание за това, защото традиционните апликации с отворена връзка с база
данни не могат да се разгръщат добре. Ако компонента отвори връзката с базата данни и я
държи отворена през целия живот на апликацията, а я използва само за няколко
процента, това е разхищение на ресурси. Освен това, ако са много потребителите
с техните отворени връзки, в един момент поведението на базата данни е
негативно. По тези причини, Microsoft реши да използва несвързаната архитектура за
ADO.
NET.
Това не само решава проблема с
разширяването чрез редуциране броя на активните връзки, но прави много лесен
трансфера на данни от един компонент към друг. Не е необходимо и двата компонента да се свързват към
базата данни, нито дори е нужно и двата да разбират от двоичен формат на
данните, както ще видим в момента.
Фигура 99 ADO.NET класовете.
И още нещо, Microsoft разпозна, че в повечето
програми днес се работи с несвързана апликационна архитектура, благодарение на
Web. Мислете за типичната
Web апликация: Потребителят
изисква страницата и страницата се генерира на сървъра като микс от
HTML и данни от база данни. По времето когато страницата се изпраща на
потребителя и се разполага в неговия браузър, връзката към базата данни повече не е нужна. По тази причина, ако
е нужна една секунда да се разположи страницата, но потребителят я разглежда
двадесет и девет секунди, връзката
с базата данни се използва само една тридесета част от общото време, за което е
ползвана страницата. Ако се нуждаете от свързана
архитектура (connected architecture), Microsoft ви препоръчва да използвате
ADO.
-
Множества данни - DataSets

Фигура100 System Data пространството от имена |
Основно пространство от имена за работа с бази
данни е System Data. ADO.NET използва множество данни - DataSet за съхраняване на несвързани данни. Тази нова структура е подобна на ADO recordset, но има и съществени различия. Множеството записи ADO recordset изглежда като отделна таблица, даже и данните да идват от
различни таблици. Крайното множество от записи - recordset е само редове и колони. Докато множеството
данни - DataSet, може да съхрани множество таблици в
своя кеш. Може да
дефинирате партньорските връзки (relationships) между тези таблици, а след това да четете от
индивидуалните таблици или от свързаните таблици и да получавате данни. По своята същност, множеството DataSet, работи като миниатюрно копие на
базата данни, въпреки че съдържа малко подмножество от данни или таблици. Множеството данни DataSet не знае нищо за подлежащата
база данни. |
Фактически, много подлежащи бази данни може да създават данните в
DataSet. Няма
никакви пречки, част от данните да идват от
SQL Server докато друга част от
Oracle. Друг обект, адаптерът
DataSet adapter, държи информацията относно
връзките с подлежащите бази данни. Адаптерът на множеството данни -
DataSet adapter има методи, които ви позволяват
да получавате и актуализирате данни, но тези методи зависят от вас, да
подберете необходимите инструкции -
SQL statements или имена на процедурите. Множествата данни знаят всичко за
XML. Ако трябва да подадете данните на
DataSet от един
компонент на друг, те
се предават използвайки
XML. Ако искате да запишете
DataSet на диск, за да получите данните
по-късно, те се
съхраняват в
XML формат.
ADO.
NET използва
XML защото е стандартен формат, и всеки консуматор, който разбира
XML може да
използва
XML поток, транформирайки го в какъвто формат желае.
XML, e текстово базиран формат и може да
се консумира от всяка платформа. Фактът, че
XML е текст означава, че е лесно да се направи трансфер през
HTTP.
-
Работа с обекти ADO.NET Objects
Съществуват редица нови обекти в
ADO.
NET , които са различни от това,
което използваха
ADO разработчиците. Някои от обектите звучат подобно на имената на
ADO обектите, но не смесвайте нещата. При
ADO.
NET, е важно да се разбере как да се
правят връзките с базите данни, и как се изпълняват инструкциите за запълване (
end up filling) в
DataSet.
·
Връзки (Connections): oleDbConnection и SQLConnection
Обектът
oleDbConnection използва
OLE DB за
свързване към източника на данни.
ADO.
NET също включва нов тип
връзка:
SQLConnection. Тя работи
като обект
oleDbConnection, но не използва
OLE DB. Вместо
това,
SQLConnection използва нейтив драйвер (
native driver) за връзка с
SQL Server и предлага по-добра преработка от
OLE DB provider (обезпечител). Свързването с източника на данни е
праволинеен процес: Дефиниране на стринга за
връзка (
connection st
ring), създаване на обект за връзка (
connection object), и отваряне на връзката (
open connection).
Отворете нов проект и го наречете
SQLConnDataReaderDemo, с Windows форма
с име
Form1.
vb. Засега, само
добавете бутон към формата с надпис
&GetData и име
btnGetData. След това с двукратно кликване отворете прозореца за
кода. Отидете в началото на прозореца за кода и въведете следния ред код:
Imports
System.Data
Imports
System.Data.SqlClient
Imports
System
Сега, в процедурата за събитието на бутона click, добавете следния код:
Private
Sub btnGetData_Click(ByVal
sender As System.Object, _
ByVal e As
System.EventArgs) Handles btnGetData.Click
'може да се наложи да присъедините следната връзка -
connection
' с вашите параметри за Microsoft SQL Server connection
Dim sqlConn As
SqlConnection = New _
SqlConnection("Initial Catalog=Payable_Data;" & _
"Data Source=IK-NK0YFP6JWVL1;Integrated Security=SSPI")
sqlConn.Open()
End Sub
Ако използваме
oleDbConnection ще бъде така
:
Imports System.Data.OleDb
Сега, в процедурата за събитието на бутона click, добавете следния код:
Dim connString As String =
_
"Provider= SQLOLEDB.1;Data
Source= IK-NK0YFP6JWVL1;"
& _
"uid=sa;pwd=;Initial
Catalog= Payable_Data;"
Dim myConn As New
oleDbConnection()
myConn.ConnectionString =
connString
myConn.Open()
Главното свойство на обект конекция е ConnectionString.
Това свойство се състои от
двойки атрибут - стойност. В тях се намира информацията за насочване към
конкретна база данни и влизането в нея (log on). Най-често срещани двойки атрибут -
стойност са: сървърът, ID на потребителя, паролата и източника на данни.
Не забравяйте да смените
connection string да съвпада с вашата среда както е нужно. Значи,
би следвало да напишете втория и третия ред така:
Dim myConn As
OleDbConnection = New oleDbConnection(sConnString)