MDAC (Microsoft Data Access Components). 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

MDAC (Microsoft Data Access Components).



ADO іс жүзінде Microsoft Data Access Components (MDAC) деп аталатын кең масштабты технологияның бөлігі болады. MDAC термині ДҚ байланысты барлық технологиялар үшін Microsoft компаниясымен құрылған жалпы белгі. Бұл жиынға ADO, OLE DB, ODBC және RDS (Remote Data Services) жатады. Жиі естиміз адамдар MDAC және ADO терминдерін синоним сияқты қолданып жүргенін, бірақ бұл дұрыс емес. Негізінен ADO MDAC-тың бір бөлігі ғана. Біз ADO нұсқасы жөнінде айтқанымызда, MDAC нұсқасы туралы ойлаймыз. MDAC негізгі нұсқаларына 1.5, 2.0, 2.1, 2.5 және 2.6 жатады. Microsoft компаниясы MDAC жеке өнім түрінде таратады. Бұл өнім веб-түйіннен Microsoft –қа тегін жүктеледі. Сол сияқты, сіз оны өзініздің жеке өнімдерініздің құрамына тегін қоса аласыз (нақты бір шектеулер бар, бірақ Delphi өндеушілерінің көбісі осы талаптардың бәрін қанағаттандырады). Сонымен қатар, MDAC деректер қорына қатысы бар, Microsoft жеткізілетін көптеген өнімдер комплектісіне кіреді. Delphi 7 құрамына MDAC 2.6 нұсқасы кіреді.

Екі ерекше мүмкіндікті көңілге алу қажет. Біріншіден, сенімділікпен айтуға болады, MDAC технологиясы сіздің пайдаланушыларыныздың клиенттік компьютерлерінде орнатылған. Екіншіден, сіздің пайдаланушыларыныздың клиенттік компьютерлерінде орнатылған MDAC нұсқасына тәуелсіз екенін сенімділікпен айтуға болады, бұл нұсқа ерте ме кеш пе MDAC жаңа нұсқасына жаңартылады. Жаңартуды сіз, сіздің пайдаланушыларыныз, немесе Microsoft жүйесінің қосымшасында орындалуы мүмкін. Мұндай жаңартудың алдын алу мүмкін емес, себебі MDAC кең түрде таралған Internet Explorer қосымшасында орнатылады. Осыған үстемелеуге болады, Microsoft компаниясы MDAC соңғы нұсқасын ұстанады. Осыдан мынадай шешімге келуге болады: сіздің қосымшаныз MDAC жаңа нұсқасымен немесе алда болатын нұсқасымен жұмыс істей алады.

Сіз ADO құрушысы ретінде, MDAC арналған Microsoft веб-түйін беттерін тиянақты түрде қарап отыруыңыз керек. Ол үшін www.microsoft.com/data адресін қарау. Бұл жерде сіз MDAC жаңа нұсқасын тегін жүктей аласыз. Сонымен бірге, егер сізде MDAC SDK (13 Мбайт) пакеті жоқ болса, онда оны жүктеуге болады. MDAC SDK негізінен Platform SDK құрамына кіреді, егер сізде Platform SDK болса, ол дегеніміз сізде MDAC SDK бар деген сөз. MDAC SDK пакеті сіздің библия болсын. Сіз оны жүктеуіңіз керек және оған тұрақты түрде ADO-мен байланысты мәлімет пен кез келген сұраққа жауап ала аласыз. Егер сізге MDAC байланысты мәлімет керек болса, онда MDAC SDK хабарласуыңыз қажет.

OLE DB провайдері. OLE DB провайдері деректер көзіне қатынауды қамтамасыз етеді. bExpress бұл мақсат үшін драйверлер қолданылады, ал BDE - SQL Links байланысы. MDAC орнату процесінде, жүйеде 1 кесте келтірілген OLE DB провайдерлері автоматты түрде орнатылады.

 

Кесте 11.1 - MDAC құрамына кіретін OLE DB провайдерлері.

Драйвер Провайдер Сипаттамасы
MSDASQL ODBC Drivers ODBC драйверлері (үнсіздік бойынша)
Microsoft.Jet.OLEDB.3.5 Jet 3.5 Тек MS Access 97 деректер қоры
Microsoft.Jet.OLEDB.4.0 Jet 4.0 MS Access деректер қоры және басқа ДҚ
SQLOLEDB SQL Server MS SQL Server деректер қоры
MSDAORA Oracle Oracle деректер қоры
MSOLAP OLAP Services Online Analytical Processing
SampProv Sample provider CSV файлдары үшін ОLE DB провайдер мысалы
MSDAOSP Simple provider Қарапайым мәтін деректері үшін сіздің жеке провайдерді құру

 

 

Осы провайдерлердің тізімі:

· ODBC OLE DB - ODBC кері сыйымдылық үшін қолданылады. ADO жұмысымен толық танысқаннан соң, сіз осы провайдерге қатысты шектеулерді білесіз.

· Jet OLE DB - MS Access және басқа локальды деректер қорын ұстану. Бұл провайдерді алда қарастырамыз.

· SQL Server - SQL Server 7, SQL Server 2000 және Microsoft Database Engine (MSDE) әрекетті қамтамасыз етеді. MSDE - көптеген құралдар жоқ SQL Server жеңілдетілген нұсқасы, сонымен бірге деректер қорына бір уақытта бестен көп пайдаланушы қосылған жағдайда, өнімділікті төмендететін арнайы код қосылған. MSDE артықшылығына осы механизмді жатқызуға, себебі бұл механизм тегін таратылады және SQL Server толығымен сыйысады.

· OLE DB - ОLAP үшін тікелей қолданылады, бірақ оған үндеу ADO Multi-Dimentional (ADOMD) арқылы іске асырылады. ADOMD - бұл Online Analytical Processing (OLAP) үшін құрылған ADO қосымша технологиясы. Егер сіз бұрын Delphi Decision Cube, Excel Pivot Tables немесе Access Cross Tabs жұмыс істесеңіз, онда сіз OLAP бір формасымен жұмыс істедіңіз. Осында айтылған провайдерлерден бөлек Microsoft компаниясы, басқа өнімдердің немесе SDK құрамына кіретін OLE DB басқа провайдерлерімен қатысады.

· Active Directory Services OLE DB - АDSI SDK құрамына кіреді; AS/400 OLE DB және SAM OLE DB - SNA Server құрамына кіреді; Exchange OLE DB - Microsoft Exchange 2000 құрамына кіреді.

· Indexing Service OLE DB - Microsoft Indexing Service құрамына кіреді - файлдық ақпараттан каталог тұрғызу көмегімен файлда ақпаратты іздеуді жылдамдататын Windows ішкі механизмі. Indexing Service индекстеу қызметі IIS-те интеграцияланған және веб-түйіндерді индекстеу үшін қолданылады.

· Internet Publishing OLE DB құрушыларға http қолданып файлдар және каталогтарды манипуляциялауға мүмкіндік береді.

· Сол сияқты қызмет көрсету провайдері (service providers) деп аталатын OLE DB провайдер категориялары бар. Атына қарай бұл провайдерлер OLE DB басқа провайдерлеріне қызметті қамтамасыз етеді және программисттің қатысуынсыз автоматты түрде активтендіреді. Мысалы, Cursor Service қызметі сіз курсорды клиент жағында құрсаңыз активтендіріледі, ал Persistent Recordset провайдері активтендіріледі, егер сіз деректерді локальды дискіде сақтасаңыз.

Осы айтылған провайдерлерден өзге MDAC үшін OLE DBбасқа провайдерлері бар. OLE DB провайдерлерін Microsoft алған сияқты, басқа да тәуелсіз өндірушілерден алуға болады. OLE DB провайдерлерінің тізімі өте үлкен және үнемі өзгеріп тұрады. Тәуелсіз өндірушілерден өзге OLE DB провайдерлерін жеткізуді және ұстауды RDBMS жүйесінің өндірушілері іске асырады. Мысалы, Oracle компаниясында ORAOLEDB деп аталатын OLE DB жеке провайдері бар.

dbGo компоненттің қолдану.

Программисттер ешқандай қиыншылықсыз dbGo құрамына кіретін BDE, dbExpess немесе IBExpress компоненттерін танып біледі (11.2 кесте).

Кесте 11.2 - dbGo компоненттері.

dbGo компоненті Сипаттама BDE комплектісінен эквивалент
ADOConnection Деректер қорына қосылу Деректер қоры
ADOCommand SQL командасын орындайды Эквиваленті жоқ
ADODataSet TDataSet көпмақсатты жолын басушы Эквиваленті жоқ
ADOTable Кестені инкапсуляция жасайды Table
ADOQuery SQL SELECT инкапсуляция жасайды Query
ADOStoredProc Сақталынған процедураны (stored procedure) инкапсуляция жасайды StoredProc
RDSConnection Remote Data Services қосылу Эквиваленті жоқ

Деректер жиынның төрт компонентті (ADODataSet, ADOTable, ADOQuery и ADOStoredProc) оларға жалпы TCustomADODataSet базалық класпен толық үлестірілген. Бұл компонент деректер жиынына қатысты көптеген функцияның орындалуына жауап береді. Туынды компоненттер базалық компоненттің мүмкіндіктерін сыртқы дүние үшін қатынауға рұқсат ететін жұқа қабықша болады. Сонымен қатар, компоненттердің көптеген ерекшеліктері бар. ADOTable, ADOQuery және ADOStoredProc компоненттері BDE бағытталған код адаптациясын жеңілдету үшін арналған. Бірақ еске сақтау керек, бұл компоненттерді BDE компоненттеріне ұқсас толығымен эквивалентті деп санауға болмайды. Ерекшелігі өңдеу кезінде міндетті түрде шығады. Жаңа программаларды өңдеу кезінде негізгі компонент ретінде ADODataSet компоненттің санау керек, себебі, біріншіден бұл компонент жеткілікті түрде ыңғайлы, екіншіден оның интерфейсі АDO Recordset интерфейсімен ұқсас келеді.

Тәжірибелік мысал.

 

Сурет 11.5 - Қосылу жолының редакторы.

 

Формаға ADOTable компоненттің орналастырамыз. Деректер қорын индикациясы үшін ADO рамкасында қосылу жолдары қолданылады (connection strings). Егер сіз не істеп отырғанызды білсеңіз, онда қосылу жолын қолмен терсеңіз болады. Бірақ жалпы жағдайда қосылу жолын құру үшін арнайы редакторды (редактор свойства ConnectionString) қолдану ұсынылады, оның жұмыс терезесі 11.5 суретте көрсетілген.

Microsoft компаниясымен өңделген қосылу жолының редакторын іске қосу үшін Build (Қалыптастыру) шерту керек. Оның жұмыс терезесі 11.6 суретте көрсетілген. Бұл ADO жұмыс кезінде қажетті құрал болғандықтан, осы құралды толық қарастырайық. Бірінші бетінде OLE DB провайдері және сіздің компьютерде орнатылған қызмет көрсету провайдерлері. MDAC әртүрлі нұсқасы үшін провайдер тізімі әртүрлі болады, сонымен бірге, жаңа провайдерлер компьютерде жаңа қолдаңбалы программаны орнату кезінде тізімде пайда болады. Біздің мысалға оралайық. Jet 4.0 OLE DB провайдерін таңдаңыз - ол үшін Jet 4.0 OLE DB Provider жазуын екі рет шертіңіз, экранда Connection (Қосылу) беті пайда болады. Бұл беттің сыртқы түрі әртүрлі провайдер үшін әртүрлі болады. Jet провайдері үшін редактор сізге деректер қорының атын енгізуді және деректердің аутентификациясын ұсынады. Сіз Delphi (мысалы, C:\Program Files\Common Files\Borland Shared\Data\dbdemos.mdb) жеткізу комплектісіне кіретін Access деректер қорындағы MDB файлын таңдай аласыз. Сіздің таңдауыңыз дұрыс екенін білу үшін Test Connection (Қосылуға тест жасау) батырмасын шертіңіз.

 

 

Сурет 11.6 - Microsft қосылу жол редакторының бірінші беті.

 

Advanced (Қосымша) бетінде сіз деректер қорына қатынау режимін бақылай аласыз. Бұл жерде сіз оқу үшін қатынауды келтіре аласыз. All (Барлығы) бетінде қосылу жолының барлық параметрлері айтылады. Бұл тізім әртүрлі OLE DB провайдерлері үшін әртүрлі. Бұл бетті жақсылап еске сақтаңыз, себебі оның көмегімен әртүрлі мәселелерді шешуге болады. Microsoft редакторан жауып, сіз Borland қосылу жолының редакторына келесіз. Бұл редактордың жұмыс терезесінде ConnectionString меншіктелетін жол көрсетіледі. (мұнда біз оқуға жеңіл болу үшін оны бірнеше жолға бөлдік

Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Program Files\Common Files\Borland Shared\Data\dbdemos.mdb; Persist Security Info=False

Қосылу жолы - бұл жай ғана символдар жолы, онда нүкте үтір арқылы параметрлер және оның мәндері жазылады. Мұндай жолды қолмен өзгетуге болады. Параметрлер және оның мәндерін программаның орындалу процесінде қайта келтіруге болады. Ол үшін сіз тізімде параметрді іздеу және оның мәніне өзгеріс енгізу үшін жеке бағыңынқы программа жиынның жазуыңыз керек. Сол сияқты қарапайым тәсілі бар: сіз жолды Delphi жол тізіміне көшіре аласыз және «аты-мәні» жұпты өңдеу механизмін қолдана аласыз. Бұл JetText мысалында көрсетіледі, ол жөнінде «Jet арқылы мәтін файлдарына қатынау» бөлімінде айтылады.

Сіз қосылу жолын қалыптастырғаннан кейін, кестені таңдай аласыз. Object Inspector терезесінде TableName қасиеті көмегімен кесте тізімін ашыңыз. Customer кестесін таңдаңыз. Добавьте компонент DataSource компоненттің және DBGrid басқару элементтің қосыңыз, содан кейін оларды біріктіріңіз. Нәтижесінде ADO қолданатын программа пайда болды (толық шығыс коды FirstAdoExample мысалында көрсетілген). Деректерді көру үшін Active қасиетіне деректер жиынның True мәнін қойыңыз немесе FormCreate күй ішінде өңделген деректер жиынын ашыңыз (мысалда көрсетілгендей).

ADOConnection компоненті.

Сіз ADOTable компоненттің қолданған кезде, ол сізге білдермей ДҚ қосылу үшін жеке өзінің компоненттің құрады. Бірақ сізге дәл осы қосылуды қолдану міндеттіемес. Жалпы жағдайда сіз ADOConnection компонентті көмегімен өзіңіздің жеке қосылуыңызды құруыңыз керек. dbExpress кітапханасынан SQLConnection компонентті және BDE кітапханасынан Database компонентті эквивалентті. ADOConnection компоненті аудентификация процедурасын келтіруді, транзакцияны бақылауды, ДҚ адрестелген тікелей командаларды орындауды мүмкіндік береді, сонымен қатар, қосымша рамкасындағы қосылу санның азайтады.

ADOConnection қолдану жеткілікті түрде қарапайым. Осы компонентті формада орналастырыңыз және оның ConnectionString қасиетін ADOTable компоненттімен орындағандай етіп келтіріңіз. Сонымен бірге, сіз ADOConnection (немесе контексті менюден Component Editor пунктің таңдайсыз) компонентінде екі рет шерту жасайсыз, себебі қосылу жол редакторына тікелей қатысу үшін. Егер қосылу жолы (ConnectionString) қажетті деректер қорын көрсетсе, сіз ДҚ қосылудың диалог терезесін өшіресіз. Ол үшін LoginPrompt қасиетіне False мәннің меншіктеу жеткілікті. Алдыңғы мысалда жаңа қосылуды қолдану үшін, ADOTable1 компонетінің Connection қасиетіне ADOConnection1 мәннің меншіктеңіз. Сіз көресіз ConnectionString қасиетінің мәні бос болады, себебі Connection және ConnectionString қасиеттері бірін-бірі шығарады. ADOConnection пайдалану жетістігі, мынадай қосылу жолы бірнеше әртүрлі компонентте сақталғанның орнына, бір жерде сақталынады. Тағы бір жетістігі бірнеше әртүрлі компоненттер деректер қоры серверімен қосылуды қолданумен қорытындыланады. Егер сіз программаға қолмен жасалған ADOConnection компоненттің қоспасаңыз, онда әр ADO компонентті серверге жеке қосылуы бар болады.

Деректермен байланысқан файлдар (Data Link Files).

Сонымен, ADOConnection компоненті деректер модулі немесе форма шегінде қосылу жолын анықтауды орталықтандыруға мүмкіндік береді. Бірақ сипатталған жақындауда бұрынғыдай бір кемшілігі бар: егер сіз деректер қорын файлдың кейбір аты көмегімен идентификация жасасаңыз, онда бұл қорға жол қосымшаның ішінде орындалатын файлмен кодталынады. Нәтижесінде қосымша мүмкіндіктері шектеулі болады. Мәселені шешу үшін, ADO-да деректермен байланысқан файлдар қолданлады (Data Link Files). Деректермен байланысқан файлдар - бұл INIфайл түрінде бейнеленген қосылу жолы. Мысалы, Delphi шегінде төмендегідей мәтіні бар dbdems.udl файлы орнатылады:

[oledb] ; Берілген жолдан төмен орналасқан жол, OLE DB инициализациялау жолы деп аталады Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Program Files\Common Files\Borland Shared\Data\dbdemos.mdb

Деректермен байланысқан файлдарда кез келген кеңейтілу болу керек, бірақ.UDL кеңейтілуін қолдану ұсынылады. Сіз кез келген мәтіндік редактор арқылы осындай файл құра аласыз. Сонымен қатар, мұндай файл құру үшін Windows терезесін ашу керек, тышқанның оң жақ батырмасымен дискінің бір бумасын шертіңіз, New > Text Document (Құру > мәтіндік құжат) таңдау, файлдың кеңейтілуін.UDL өзгерту, содан кейін файлға екі рет шерту - нәтижесінде Microsoft қосылу жол редакторы қосылады.

Егер ConnectionString қасиет редакторында сіз Use Data Link File (Деректермен байланысқан файлдарды қолдану) таңдасаңыз, бұл қасиетте 'FILE NAME =' жолы автоматты түрде орналасады, одан деректермен байланысқан файл аты көрсетіледі. Бұл DataLinkFile мысалында көрсетілген. Деректермен байланысты файлдарды кез келген дискіде орналастыруға болады, бірақ ADO-да мұндай файлдарды сақтау үшін кейбір стандартты каталогы қолданылады. Бұл каталог атын DataLinkDir функциясы көмегімен білуге болады, ол ADODB модулінде анықталынады. Егер конфигурация-MDAC үнсіздік бойынша қолданылады, бұл функция келесіні әкеледі:

C:\Program Files\Common Files\System\OLE DB\Data Links

Динамикалық қасиеттер.

Сіз бірнеше деректер қоры және клиенттер арасында орналасқан орта звено құрумен айналысып отырсыз. Бір жағынан сіз бірнеше әртүрлі деректер қорына қатынау үшін бірыңғай унификацияланған программалық интерфейсті қалыптастыруыңыз керек, басқа жағынан бұл интерфейс әр деректер қорына қатынау мүмкіндіктерін қамтамасыз етеді. Осы тапсырмаларды шешу үшін, сіз ауыр салмақты интерфейс құруыңыз керек. Мұндай интерфейстің әр класы өзіне барлық мүмкін қасиет және әдістерді қосады, бірақ нақты ДҚ жұмыс істеу үшін қасиет және әдіс кластарының бағыңынқы көпмүшесін қолдануға болады. Бұл шешім ең жақсы екенін дәлелдеу қажет емес. ADO мәселелерді шешу үшін динамикалық (dynamic properties) қасиеттер қолданылады. ADO барлық интерфейстері, dbGo компоненттеріне сәйкес Properties деп аталатын қасиетке ие. Бұл қасиет деректер қоры үшін қасиет коллекциясы болады. Бұл қасиеттерге оның реттік нөмірін көрсетіп қатысуға болады, мысалы:

 

ShowMessage(ADOTable1.Properties[1].Value);

Бірақ көптеген жағдайларда ShowMessage(ADOConnection1.Properties['DBMS Name'].Value) атын қолдану ыңғайлы. Динамикалық қасиеттер жиыны OLE DB провайдерімен және объект типімен анықталынады. Динамикалық қасиеттердің қажеттілігі жөнінде көрініс ADOConnection немесе Recordset компоненттерінде 100 динамикалық қасиет бар.

Схема жөнінде ақпарат алу.

ADO схема жөнінде ақпарат алу үшін ADOConnection компоненттінің OpenSchema әдісі қолданылады. Бұл әдіс төрт параметрді қабылдайды:

· OpenSchema әдісімен қайтатын деректер типі. Бұл TSchemaInfo типіндегі мән: кесте тізімін, индексті, тік жолды, көріністі және сақталған процедураны қоса 40 мән жиынан тұрады.

· Деректерге қатысты қолданылатын фильтр. Бұл параметр мысалы кейінірек.

· Провайдер үшін GUID сұранысы. Бұл параметр қолданылады, егер бірінші параметр мәні siProviderSpecific тең болса.

· ADODataSet компоненті құрамында деректер қайтарылынады. Бұл параметр ADO шегінде таратылған тақырыпқа иллюстрация жасайды. Егер әдіс деректердің кейбір санның қайтарса, онда бұл деректерді Recordset немесе, Delphi терминологиясында - ADODataSet компонентіне кіргізеді.

OpenSchema әдісін қолдану үшін, сіз ADOConnection ашуыңыз керек. Келесі код, OpenSchema мысалының бір бөлігі, әр кесте үшін алғашқы кілт тізімінен алынады және ADODataSet компонетіне енгізіледі:

ADOConnection1.OpenSchema(siPrimaryKeys, EmptyParam, EmptyParam, ADODataSet1);

Сурет 11.7 - OpenSchema программасы кестенің алғашқы кілттері жөнінде ДҚ ақпарат алады.

Алғашқы кілт құрамындағы әр өріске деректер жиынында нәтижеленетін бір жол сәйкес келеді. Сонымен, егер екі өрістен тұратын кестенің алғашқы кілті болса, онда мұндай кестенің нәтижеленетін деректер жиынына екі жол сәйкес келеді. EmptyParam мәні параметрге бос мән меншіктелетінін көрсетеді. Жұмыс нәтижесі 11.7 суретте көрсетілген.

Егер екінші параметр ретінде сіз EmptyParam мәннің берсеңіз, онда барлық деректер қоры үшін нәтижеленетін деректер жиын құрамына көрсетілген типтің барлық ақпараты енгізіледі. Сіз ыңғайлы болу үшін ақпаратты фильтрация жасауыңыз керек. Бұл мақсат үшін нәтижеленетін деректер жиынына Delphi (ол үшін Filter және Filtered қасиеттерін немесе OnFilterRecord күйін қолдану) әдеттегі фильтрі қолданылады. Бірақ бұл жағдайда фильтрлеу клиент жағында орындалады. Екінші параметр схема жөніндегі ақпарат жағында фильтрлеуді орындауға мүмкіндік береді. Фильтр массив мәні сияқты анықталынады. Массивтің әр элементі қайтатын деректер типіне қатысты арнайы мағынаға ие болады. Мысалы, алғашқы кілт үшін фильтр массивінде үш элемент бар болады: каталог (болмаса деректер қоры), схема және кесте аталуы. Бұл мысал Customer кестесінде алғашқы кілт тізімін қайтарады:

var Filter: OLEVAriant; begin Filter:= VarArrayCreate([0, 2], varVariant); Filter[2]:= 'CUSTOMER'; ADOConnection1.OpenSchema( siPrimaryKeys, Filter, EmptyParam, ADODataSet1); end;

Jet механизмін қолдану.

Енді сіз MDAC және ADO жөніндегі түсініктерден көрініс алған соң, Jet механизмін қарастыруға болады. Кейбіреулер үшін бұл механизм қызықты, ал біреулерге қызықсыз. Егер сіз Access, Paradox, dBase, Excel, Lotus 1-2-3, HTML немесе мәтіндік файлда сақталынатын деректермен жұмыс істесеңіз, онда қарастырылатын материал сізге керек болады. Егер осы атап өтілген форматтар сізге қызықсыз болса, онда бқл бөлімді қарамауға болады. Ереже бойынша, Jet механизмі Microsoft Access деректер қорымен ассоцияланады. Расында, Access Jet әрекет ететін негізгі жүйе болады. Бірақ Jet механизмі Microsoft Access бөлек басқа локальды деректермен жұмыс істей алады. Осыдан Jet механизмінің артықшылықтарын көруге болады. Негізгі артықшылығы Jet механизмінің Access-пен әрекеттесуі, сондықтан біз Jet қолданудың стандартты режимін қарастырамыз.

Jet механизмі үшін OLE DB екі провайдері бар: Jet 3.51 OLE DB және Jet 4.0 OLE DB. Jet 3.51 OLE DB провайдері Jet 3.51 қолданады және тек Access 97 жұмыс істейді. Егер сіз тек Access 97 қолданып және Access 2000 өтпесеңіз, онда Jet 3.51 көп жағдайда OLE DB Jet 4.0 провайдерімен салыстырғанда жоғарғы өнімділікті береді.

OLE DB Jet 4.0 провайдері Access 97, Access 2000 және IISAM драйверлерімен (Installable Indexed Sequential Access Method) жұмыс істейді. ISAM орнатылатын драйверлері Jet механизмі үшін арнайы жазылған және мынадай Paradox, dBase және мәтіндік файлдар сияқты форматтарға қатынауды қамтамасыз етеді. Осындай драйверлерді қолдану мүмкіндігі Jet пайдалы және ыңғайлы құрал етеді. Сіздің компьютерде орнатылған ISAM драйверлерінің толық тізімі, орнатылған программалық қамтама жүйе жиынымен анықталынады. Бұл тізім реестрде мына адрес бойынша орналасады:

 

HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\ISAM Formats

Jet жеткізу комплект құрамына Paradox, dBase, Excel, мәтіндік файлдар және HTML үшін драйверлер кіреді.

Импорт және экспорт. Jet механизмін деректерді импорттау және экспорттау үшін қолдануға ыңғайлы. Деректерді экспорттау процесі әр экспортталған формат үшін бірдей және арнайы форматта SELECT орындалуынан тұрады. Деректерді экспорттау мысалын, Access деректер қорының Paradox кестесінің DBDemos мысалында қарастырамыз. Ол үшін JetImportExport программасына ADOConnection1 аталуы бар ADOConnection активті қосылуын қосамыз. Бұл қосылуды деректер қорын ашу үшін Jet механизмі қолданады. Келесі код Paradox форматындағы Customer.db файлын Customer кестесіне экспорттауды жасайды:

 

SELECT * INTO Customer IN "C:\tmp" "Paradox 7.x;" FROM CUSTOMER

Осы SQL-түсініктің құрамдас бөліктерін қарастырамыз. INTO кілттік сөзінен кейін, жаңа кесте көрсетіледі. Ол SELECT операторының орындалу нәтижесінде құрылады. Бұл кодтың орындалуына дейін осы аталуы бар кесте қорда болмау керек. IN кілттік сөзінен кейін жаңа кесте қосылатын деректер қоры көрсетіледі. Paradox-та дискідегі каталог болу керек. Деректер қорының аталуынан кейін бірден, деректерді экспорттауға қолданылатын IISAM драйверінің аты көрсетіледі. Драйвер аталуының соңында міндетті түрде нүкте үтір (;) символын қосу керек. FROM кілттік сөзі SELECT үшін стандартты компонент. Қарастырылатын мысалда бұл операция ADOConnection1 компонентті көмегімен орындалады, каталогтың тиянақты аталуының орнына программаның ағымдағы каталогы қолданылады:

ADOConnection1.Execute (''SELECT * INTO Customer IN "' + CurrentFolder + '" "Paradox 7.x;" FROM CUSTOMER');

Дәл осындай формат экспорттың кез келген операциясында қолданылады, бірақ IISAM қолданылатын драйверге сәйкес деректер қорының аты әртүрлі интерпретацияланады. Excel кестесіне деректерді экспорттайтын ұқсас мысал:

ADOConnection1.Execute ('SELECT * INTO Customer IN "' + CurrentFolder + 'dbdemos.xls" "Excel 8.0;" FROM CUSTOMER’);

Excel-де dbdemos.xls атты жаңа файл программаның ағымдағы каталогында құрылады. Excel бұл құжатына Customer атты жұмыс кітабы қосылады. Access dbdemo. mdb. деректер қорының Customer кестесіндегі барлық деректер енгізіледі. Осы деректерді HTML файлға экспорттайтын тағы бір мысал:

ADOConnection1.Execute ('SELECT * INTO [customer.htm] IN "' + CurrentFolder + '" "HTML Export;" FROM CUSTOMER');

Берілген жағдайда деректер қоры - бұл каталог (Paradox сияқты). Кесте атының кеңейтілуі.htm, сондықтан кесте атын квадрат жақшаға алу қажет. Көңіл бөліңіз, IISAM драйвері жай ғана HTML емес, ал HTML Export деп аталады. Аталуына қарай, драйвер деректерді тек экспорттайды, бірақ импорттауға мүмкіндік бермейді. Енді Jet драйвер құрамына кіретін HTML Export пайдалы қосымшасы болатын HTML Import қарастырамыз. Формаға ADOTable компоненттің қосыңыз. OLE DB Jet 4.0 провайдерін қолдану үшін ConnectionString қосылу жолын келтіріңіз. Параметрге Extended Properties қосылу жолын HTML Import мәнін меншіктеңіз. Деректер қорының аты ретінде экспорт нәтижесінде құрылған HTML-файл атын көрсетіңіз, дәлірек айтсақ Customer.htm. TableName қасиетіне Customer мәнін меншіктеңіз. Кестені ашыңыз - сіз қазір ғана HTML-файлдан деректерді импорттау жасадыңыз. Есіңізде болсын, егер сіз деректерді жаңарту жасағыңыз келсе, онда жүйе қате береді, себебі драйвер тек импорттау үшін арналған. Егер сіз кестесі бар өзіңіздің жеке HTMLфайл құрсаңыз және осы драйверді қолданып кестені ашқыңыз келсе, ұмытпаңыз, кесте аты - бұл HTML caption тегінің мәні - table бөлімінде.

Курсормен жұмыс істеу.

ADO әрбір деректер жиынында бір-бірімен байланысқан екі қасиет бар және олар біздің қосымшаға әсер етеді. Бұл CursorLocation және CursorType қасиеттері. Егер сіз ADO деректер жиынын қалыптастыру принципін түсінгіңіз келсе, онда сіз осы екі қасиетті оқып білуіңіз қажет.

Курсордың орналасуы (CursorLocation қасиеті).

CursorLocation қасиеті деректер қандай жолмен алынады және модификацияланады соны анықтайды. Бұл қасиетке екі мәннің бірін меншіктеуге болады: clUseClient (курсор клиент жағында) немесе clUseServer (курсор сервер жағында). Мәнді таңдау көп деңгейде деректер қорының қалыптасуына, өнімділігіне және масштабына әсері бар. Клиент курсоры ADO Cursor Engine курсорымен қызмет көрсетіледі. Бұл механизм OLE DB қызмет көрсету провайдерінің мысалы. Ол OLDE DB басқа провайдерлеріне қызмет көрсетеді. ADO Cursor Engine механизмі клиент жағында деректерді өңдеуді басқарады. Деректер жиынның ашқан кезде нәтижеленетін жиынның барлық деректері серверден клиент компьютеріне өтеді. Осыдан кейін деректер жадыда сақталынады, оларды жаңарту және өңдеу ADO Cursor Engine қолданумен іске асырылады. Бұл жақындау dbExpress қосымшасында ClientDataSet қолдануды еске түсіреді. Артықшылығы мынада, клиент жағына деректерді жібергеннен кейін, осы деректерге орындалатын кез келген манипуляция тез болады. Сонымен қатар, манипуляция жадыда орындалғандықтан сервер жағында жұмыс істейтін кез келген курсорға қарағанда ADO Cursor Engine кең мүмкіндіктері бар. Сервер жағындағы курсор RDBMS жүйесімен басқарылады. Мынадай өнімдерге негізделген клиент-сервер архитектурасында SQL Server, Oracle немесе InterBase, бұл нені білідерді, курсорды басқару алыстатылған компьютер серверінде іске асырылады. Сөз Access немесе Paradox деректер қоры жөнінде болғандықтан, серверлік курсор деректер қорына қызмет көрсететін программалық өніммен басқарылады. Логикалық курсор «сервер» орналасқан, бірақ деректер қоры курсормен бірге клиент компьютерінде орналасады. Ереже бойынша, сервер курсорлары клиент курсорына қарағанда тез жүктеледі. Серверлік курсормен деректер жиынның ашқан кезде барлық деректерді клиент жағына орналастыру қажетті емес. Осыған қатысты серверлік курсорлар үлкен деректер жиынына қызмет көсретуге ыңғайлы, ал клиент компьюетрінде үлкен деректер жиынын сақтау үшін жады көлемі жеткіліксіз. Екі типтің де курсор мүмкіндіктерін түсіну үшін, олар жағдайларда қалай қалыптасады соны көру керек. Мысалы, жазбаны блоктау жағдайын қарастырайық (Егер сіз жазбаны блоктағыңыз келсе, онда сізге серверлік курсор керек болады.)

Тағы бір көңіл бөлетін сипаттама, ол курсордың орналасуын таңдау болып масштабтау табылады. Серверлік курсорлар сервер жағында орналасады. Деректер қорына қанша пайдаланушы қосылса, сонша курсор серверде құрылады. Әр жаңа курсормен бірге серверге жүктеме өсе түседі. Сонымен қатар, пайдаланушы саны көбеюіне қарай, жүйенің жалпы өнімділігі төмендеуі мүмкін. Клиент жағында курсорды қолданып, сіз өзіңіздің қосымшаның масштабтылығын жоғарлатасыз. Клиенттік курсорды ашу сізге қымбатқа түседі. Себебі ашылу процесі кезінде барлық деректер клиент жағына кетеді, осымен байланысты негізгі жүктеме клиент компьютеріне артылады.

Курсор типі (CursorType қасиеті).

Курсор типі көбінесе курсордың орналасу орнымен анықталынады. Біреу қолданылмайтын курсордың бес типі бар. Қолданылмайтын типі unspecified (көрсетілмеген) деп аталады. Көрсетілмеген мәнге тиісті ADO көптеген мәндер бар. Delphi бұл мәндер қолданылмайды. Бұл мәндер Delphi-де тек қатысады, себебі олар ADO-да қатысқандықтан. Негізінен ADO технологиясы бастапқыда мынадай тілдер Visual Basic және Cи үшін құрылды. Бұл тілдер де сіз объектімен dbGo сияқты көмекші механизмсіз тікелей жұмыс істейсіз. Нәтижесінде сіз жазбаның ашық жиыныны құрасыз (ADO терминологиясында - recordset), әр қасиет үшін мән көрсетілмейді. Сонымен, кейбір қасиеттер мәні анықталмайды. Бұл жағдайда қасиетке unspecified (көрсетілмеген) мәні меншіктеледі. Бірақ dbGo шегінде сіз компонентпен жұмыс істейсіз. Компоненттер конструкторға ие болады. Конструктор - бұл компоненттің әр қасиетін міндетті түрде инициализациялайтын функция. Сіз dbGo компоненттің құрған кезде, оның әрбір қасиеті анықталған мәнге ие. Нәтижесінде unspecified (көсретілмеген) мәннің қолдану қажет емес.

Курсор типі деректерді оқу және жаңарту қалай іске асатынына әсер етеді. Курсордың төрт типінің біреуін қолдануға болады: Forward-Only (тек алға), Static (статикалық), Keyset (кілт жиыны) және Dynamic (динамикалық). Курсордың типіне және орналасу орнына тоқталмастан бұрын, мұнда көңіл бөлу керек: клиент жағында жұмыс істейтін курсорлар үшін тек бір тип қана қолданылады: статикалық курсор. Курсордың қалған типтері тек сервер жағында ғана қолданылады. Курсор типтерін толық қарастырайық.

· Forward-only (тек алға). Бұл типтегі курсорлар арзанға түседі. Басқаша атйқанда, мұндай курсорлар жоғары өнімділікті қамтамасыз етеді. Атына қарай Forward-only (тек алға) курсоры деректер жиынына басынан соңына қарай бағытта орналасуға мүмкіндік береді. Курсор CacheSize (1 үнсіздік бойынша) қасиетінде көрсетілген серверден жазба санын оқиды, әрбір кезде локальды кэште соңғы жазбаны бітірген бойда, ол серверден келесі жазбаны оқуды бастайды. Локальды кэш сыртында жазба жиынын басына бағыт бойынша орнығу қате пайда болуына әкеліп соғады. Бұл тәртіп dbExpress кітапханасындағы деректер жиынның тәртібін еске түсіреді.. Forward-only (тек алға) курсоры пайдаланушы интерфейсін қалыптастыру үшін келмейді, онда пайдаланушы орналасу бағытын бақылай алу мүмкіндігі бар. Мұндай курсор пакет операцияларын, есеп беруді қалыптастыру, веб қосымша тұрғызуды, күй жөнінде ақпарат сақтамауды орындау үшін қажет - бұл жағдайларда сіз деректер жиынын басынан бастап соңына бірақ барасыз. Соңына жеткен соң деректер жиыны жабылады.

· Static (статикалық). Статикалық курсорды қолданғанк езде деректер жиыны толығымен клиент жағына орналасады, оған қатысу CacheSize өлшемді терезе көмегімен іске асырылады. Нәтижесінде пайдаланушы деректер жиыны бойынша екі бағыттада орналасу мүмкіндігін алады. Кемшілігі, деректер статикалық болады - басқа пайдаланушымен орындалатын жазбаны жаңарту, үстемелеу және жою статикалық курсорға көрінбейді, себебі курсор деректері оқылып кеткен.

· Keyset (кілттер жиыны). Бұл кусордың қалыптасу принципін түсіну үшін Keyset сөзін екі бөлікке бөліңіз: key және set. Key - бұ кілт, бұл контексте - жазба идентификаторы. Негізнен алғашқы кілт түрінде. Set - бұл көпмүше немесе жиын. «Кілттер жиыны» болады. Серверден деректер жиынын ашу кезінде барлық кілттердің толық тізімі оқылады. Мысалы, егер деректер жиыны SELECT * FROM CUSTOMER түсінігі көмегімен қалыптастырылса, онда кілттер тізімін SELECT CUSTID FROM CUSTOMER түсінігі көмегімен қалыптастыруға болады. Кілттер жиыны клиент жағында курсор жабылғанға дейін сақталынады. Қосымшаға деректер қажет болғанда, осы мақсат үшін кілттер жиынын қолданып OLE DB провайдері кесте жолын оқиды. Нәтижесінде клиенттің үнемі жаңартылған деректермен жұмысы болады. Бірақ кілттер жиыны статикалық болады, егер курсор ашылғаннан кейін бұл жиынға жаңа кілт қосуға болмайды, сол сияқты жиыннан кілттерді жоюға болмайды. Басқаша айтқанда, егер басқа пайдаланушы кестеге жаңа жазба қосады, бұл өзгертулер клиентке көрінбейді. Жойылған деректерге қатынауға рұқсат болмайды, ал кез келген алғашқы кілтке өзгерту мүмкін болмайды (ереже бойынша, пайдаланушыға алғашқы кілтті өзгерту тыйым салынад).



Поделиться:


Последнее изменение этой страницы: 2017-01-24; просмотров: 221; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.140.198.43 (0.075 с.)