Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠœΠΈΡ€ InterBase. АрхитСктура, администрированиС ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Π² InterBase/FireBird/YaffilΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 50

Автор А Ковязин

Π˜Π½ΡΡ‚Π°Π»Π»ΡΡ†ΠΈΡ IBProvider

ΠŸΠ΅Ρ€Π΅Π΄ установкой OLE DB-ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π° ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° вашСй машинС инсталлирована клиСнтская Ρ‡Π°ΡΡ‚ΡŒ InterBase Для этого Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ GDS32.DLL. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½Π° находится Π² систСмном ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Windows (System - для 95/98/ΠœΠ•, System32 - для NT4/Win2000) ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ обустановкС клиСнтской части InterBase см. Π³Π»Π°Π²Ρƒ "Установка InterBase - взгляд ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ" (Ρ‡. 4)

Π’ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ дистрибутива IBProvider входят Π΄Π²Π° модуля: _IBProvider.dll ΠΈ cw3250mt.dll. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΎΠ±Π° Ρ„Π°ΠΉΠ»Π° Π² систСмный ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Windows ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ regsvr32 _B3Provider.dll для рСгистрации ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π° Π² систСмС.

Если Π²Ρ‹ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ дистрибутивом IBProvider, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° инсталляции Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ инсталляции ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π° Π² Windows NT4/Windows 2000 Ρƒ вас Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π°Π²Π° Π½Π° запись Π² рССстр ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ рСгистрации Π»ΡƒΡ‡ΡˆΠ΅ всСго Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ, обладая ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора.

ПослС установки ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π° ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ОБ Π½Π΅ трСбуСтся

Π˜Π½ΡΡ‚Π°Π»Π»ΡΡ†ΠΈΡ ADODB-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ADO входят Π² состав свободно распространяСмого дистрибутива Microsoft Data Access Components ΠΈ доступны для скачивания Π½Π° сайтС ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Microsoft - www microsoft com/data. Для написания ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² использовались ADODB-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈΠ· дистрибутива вСрсии 2.6.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования ADODB

Для создания ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ с IBProvider Ρ‡Π΅Ρ€Π΅Π· ADODB Π±Ρ‹Π» ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ Visual Basic for Application (VBA) ΠΈΠ· Microsoft Excel 97. Для использования ADODB-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π½ΡƒΠΆΠ½ΠΎ ΠΈΡ… Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² список Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, употрСбляСмых Visual Basic Для этого:

* ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° Visual Basic (Alt+Fl 1).

* Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ мСню БСрвис\Бсылки.

* НайдитС Π² спискС строку Microsoft ActiveX Data Objects 2.6 Library ΠΈ ΠΏΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ рядом с Π½Π΅ΠΉ Π³Π°Π»ΠΎΡ‡ΠΊΡƒ.

* Π—Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ, Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ "ОК".

ИспользованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ классов

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° классов поставляСтся Π² Π²ΠΈΠ΄Π΅ исходных тСкстов. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для Π΅Π΅ использования Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ трСбования:

* Π―Π²Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Lib:

ole_lib\oledb\oledb_client_lib.cpp ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ классы для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с OLE DB

ole_lib\oledb\oledb_client_base.cpp

ole_lib\oledb\oledb_common.cpp

ole_lib\oledb\oledb_variant.cpp

ole_lib\oledb\oledb_ado_lib.cpp Π£Ρ‚ΠΈΠ»ΠΈΡ‚Ρ‹ стыковки с ADODB

ole_lib\ole_base.cpp

ole_lib\ole_auto.cpp

Win32Lib\win321ib.cpp

structure\util_classes.cpp

util_func.cpp

* Начало ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ срр-Ρ„Π°ΠΉΠ»Π°, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ttinclude <_pch_.h> #pragma hdrstop

* Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (опция Conditional defines) макрос INCLUDE_OLEDB_HEADER.

* ΠŸΡ€ΠΈ использовании Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ VCL ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° макрос _USE_VCL_. Π’ этом случаС Ρ„Π°ΠΉΠ» <vcl.h> Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ csm-Ρ„Π°ΠΉΠ» (Ρ„Π°ΠΉΠ» ΠΏΡ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°) косвСнно ΠΈΠ· <_pch_ h>.

* Основной ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ include, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ компилятором C++ Builder, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ OLE DB SDK. BCB5 ΠΈ Free Borland C++ Compiler ΡƒΠΆΠ΅ содСрТат всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅. Π’ Π’Π‘Π’Π— Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ эти Ρ„Π°ΠΉΠ»Ρ‹ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ OLE DB SDK вСрсии Π½Π΅ Π²Ρ‹ΡˆΠ΅ 2.1.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½Π°Ρ Π² составС дистрибутива IBProvider Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° классов являСтся основой для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π΅Ρ‘ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ…. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ прСдполагаСтся, Ρ‡Π³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» <_pch_.h> прямо ΠΈΠ»ΠΈ косвСнно Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ срр-Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ использования с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ осущСствляСтся Π·Π° счСт опрСдСлСния пространств ΠΈΠΌΠ΅Π½. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ VCL Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ. Для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ потрСбуСтся ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ <_pch_.h>.

ΠŸΠ΅Ρ€Π΅Π½ΠΎΡ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ компиляторы C++ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ зависит ΠΎΡ‚ стСпСни ΠΈΡ… совмСстимости с послСдним стандартом C++ ΠΈ ΠΎΡ‚ слоТности ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ STL.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ классов

Для написания ΠΈ тСстирования ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² использовался Borland C++ Builder 3-ΠΉ вСрсии (с установлСнным ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ исправлСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ доступСн для скачивания Π½Π° сайтС ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Borland). Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° классов ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ конфигурируСтся ΠΏΠΎΠ΄ использованиС компилятора ΠΈ STL ΠΈΠ· Π’Π‘Π’5, поэтому ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ пСрСносятся Π½Π° Borland C++ Builder 5-ΠΉ вСрсии Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π² тСкст этого Ρ€Π°Π·Π΄Π΅Π»Π°, ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ этап ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ БОМ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. ВсС это, СстСствСнно, присутствуСт Π² ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², доступных для скачивания с сайта ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ этой ΠΊΠ½ΠΈΠ³ΠΈ www.lnterBase-world.com.

Π’Π°ΠΊΠΆΠ΅ для изучСния Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ использования Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ классов для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с OLE DB ΠΈΠ· C++ рСкомСндуСтся ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠ· дистрибутива IBProvider.

ВСстовая Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…

Для тСстирования использовался Firebird 1.0 ΠΈ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… employee.gdb, входящая Π² дистрибутив этого сСрвСра Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…. На этом сСрвСрС Π±Ρ‹Π» создан ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ "gamer" с ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ "vermin"

Для сокращСния объСма ΠΊΠΎΠ΄Π°, проводящСго ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, использовался тСкстовый Ρ„Π°ΠΉΠ» employee.ibp, содСрТащий ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ:

data source=c266:d:\database\employee.gdb;

user=gamer;

password=vermut;

auto_cornmit = true ;

ctype=win!251;

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма

ВсС пСрСчислСнныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ для написания ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π±Ρ‹Π»ΠΈ установлСны Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΌ ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Windows NT4 Service Pack 5, Internet Explorer 5.

Бостав ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² IBProvider




Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим составныС части IBProvider. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, входящиС Π² состав OLE DB-ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π°, дСлятся Π½Π° 4 основныС Π³Ρ€ΡƒΠΏΠΏΡ‹:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ ΠžΠ°Π½Π½Ρ‹\ (Data Source). ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ этой Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π—Π΄Π΅ΡΡŒ ΠΆΠ΅ прСдоставляСтся интСрфСйс для создания сСссии.

БСссия (Session). ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ управлСния Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠ΅ΠΉ. Π£ ΠΎΠ΄Π½ΠΎΠ³ΠΎ источника Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько сСссий. ΠšΡ€ΠΎΠΌΠ΅ управлСния транзакциями, сСссия обСспСчиваСт созданиС ΠΊΠΎΠΌΠ°Π½Π΄, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Команда (Command). ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ для ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΈ выполнСния SQL-запросов ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Команда выполняСтся Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ сСссии, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² случаС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ автоматичСского запуска ΠΈ подтвСрТдСния Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ (autocommit) выполняСтся Π² Ρ€Π°ΠΌΠΊΠ°Ρ… собствСнной Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠΉ сСссии ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ мноТСство ΠΊΠΎΠΌΠ°Π½Π΄.

Набор строк (Ronset). ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйсы Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΏΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ SQL-запроса (Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌΡƒ мноТСству) ΠΈ доступа ΠΊ Π΅Π³ΠΎ содСрТимому.

Для описания Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… сторон, Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ тСрминология:

ΠšΠ»ΠΈΠ΅Π½Ρ‚ - это любой Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ систСмного ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс OLE DB. Бюда ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈ сами ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ доступа. Π’Π°ΠΊ ΠΆΠ΅, для обозначСния этой стороны взаимодСйствия, Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡŒ. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² доступа - это любой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ интСрфСйс OLE DB. ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ OLE DB- поставщик, OLE DB-ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€, ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ ΠΈ IBProvider. Настройка ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· ΠΈΡ… свойства. Бвойства - это Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. НапримСр, свойства Π½Π°Π±ΠΎΡ€Π° строк ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΏΡ€Π΅Π΄Π΅Π» объСма ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти для хранСния Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π·Π°ΠΊΠ»Π°Π΄ΠΎΠΊ ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΡƒΡŽ модСль. ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ значСния свойств, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ повСдСния, ΠΈ Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ свойства, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ возмоТности ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° КаТдоС свойство характСризуСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, Ρ‚ΠΈΠΏΠΎΠΌ, описаниСм, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ чтСния/записи

Бвойство идСнтифицируСтся GUID (Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ собой структуру Π΄Π»ΠΈΠ½ΠΎΠΉ 128 Π±ΠΈΡ‚) ΠΈ Ρ†Π΅Π»Ρ‹ΠΌ числом, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ свойства. Набор свойств - это ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ свойств с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ GUID.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ Π΄Π°Π½Π½Ρ‹Ρ…

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Data Source являСтся ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· IBProvider. БущСствуСт нСсколько сцСнариСв создания ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° доступа. Они ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ объСмом Ρ€Π°Π±ΠΎΡ‚Ρ‹, выполняСмой Π² клиСнтском ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ доступа ΠΊ OLE DB ΠΈ самим IBProvider.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 1. ΠšΠ»ΠΈΠ΅Π½Ρ‚ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ осущСствляСт всС этапы:

ADODB

Dim en As New ADODB.Connection

cn.Provider = "LCPI.IBProvider.1"

cn.Properties("data source") =

"localhost:d:\database\employee.gdb"

en.Properties("user id") = "gamer"

en.Properties("password") = "vermut"

cn.Open

C++

t_db_data_source cn;

_THROW_OLEDB_FAILED(cn,create("LCPI.IBProvider.1"))

t_db_ob]_props cn_props(/*refresh=*/false);

_THROW_OLEDB_FAILED(cn_props,attach_data_source(en.m_obj, DBPROPSET_DBINITALL))

_THROW_OLEDB_FAILED(cn_props,set("data source" "iocalhost:d:\\database\\employee. gdo")) ;

_THROW_OLEDB_FAILED(cn_props,set("user id","gamer"));

_THROW_OLEDB_FAILED(cn_props,set("password","vermut"));

_THROW_OLEDB_FAILED(en,attach(""));

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ выполняСт клиСнтская Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°:

ADODB

Dim en As New ADODB.Connection

Call en.Open("provider=LCPI.IBProvider.1; data

source=Iocalhost:d:\database\employee.gdb", "gamer", "vermut")

C++

t_db_data_source cn;

_THROW_OLEDB_FAILED(en,attach("provider=LCPI.IBProvider.1;"

"data source=localhost:d:\\database\\employee.gdb;"

"user id=gamer;password=vermut"));

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 3. ΠŸΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ создаСт клиСнтская Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ выполняСт сам ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€:

ADODB

Dim en As New ADODB.Connection

Call en.Open("file name=d:\database\employee.ibp")

C++

t_do_data_source cn;

_THROW_OLEDB_FAILED(cn,

attach!"file name=d:\\database\\employee.ibp"));

//ΠΈΠ»ΠΈ явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ ΠΈ Ρ„Π°ΠΉΠ» с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ