Како динамички конструисати стринг повезивања базе података

Једном када завршите свој Решење базе података Делпхи, последњи корак је успешно постављање рачунара корисника.

ЦоннецтионСтринг он-тхе-Фли

Ако сте користили дбГо (АДО) компоненте,ЦоннецтионСтринг власништво ТАДОЦоннецтион одређује информације о вези за складиште података.

Очигледно је да приликом креирања апликација базе података које треба покренути на различитим машинама, веза с извором података не би требала бити тврдо кодирана у извршној датотеци. Другим речима, база података може се налазити било где на рачунару корисника (или на неком другом) рачунар у мрежи) - веза за везу која се користи у ТАДОЦоннецтион објекту мора бити креирана на време трајања. Једно од предложених места за чување параметара низа везе је Виндовс Регистри (или, можда ћете се одлучити за употребу „обичног“ ИНИ датотеке).

Уопште, да бисте створили конектор за везу у време које морате да радите
а) постављање целокупног пута ка бази података у регистру; и
б) сваки пут када покренете апликацију, прочитајте податке из Регистра, „креирајте“ ЦоннецтионСтринг и „отворите“ АДОЦоннецтион.

instagram viewer

База података... Повежи се!

Да бисмо вам помогли да разумете поступак, направили смо огледни "скелет" апликацију која се састоји од једног облика (главни облик апликације) и модула података. Делпхијеви модули података пружају погодан организациони алат који се користи за изоловање делова ваше апликације који управљају повезаношћу базе података и пословним правилима.

Тхе ОнЦреате догађај модула података је мјесто на којем постављате код за динамичку конструкцију ЦоннецтионСтринг и повезивање са базом података.

процедура ТДМ.ДатаМодулеЦреате (пошиљалац: ТОбјецт); започетиако ДБЦоннецт онда
СховМессаге ('Спојено на базу података!')
друго
СховМессаге ('НИЈЕ повезан са базом података!'); крај;

Белешка: Назив податковног модула је „ДМ“. Назив компоненте ТАДОЦоннецтион је „АдоЦонн“.

Тхе ДБЦоннецт функција обавља стварни посао повезивања са базом података, ево кода:

функцттио ТДМ.ДБЦоннецт: боолеан; вар
цонСтр: стринг; СерверНаме, ДБНаме: стринг; започетиСерверНаме: = РеадРегистри ('ДатаСоурце'); ДБНаме: = РеадРегистри ('ДатаЦаталог'); цонСтр: = 'Пружатељ = склоледб;' + 'Извор података =' + Име сервера + ';' + 'Почетни каталог =' + ДБНаме + ';' + 'Усер ИД = миУсер; Лозинка = мојаПесворд '; Резултат: = лажно; АдоЦонн. Близу; АдоЦонн. ЦоннецтионСтринг: = цонСтр; АдоЦонн. ЛогинПромпт: = Нетачно;ако (НЕ АдоЦонн. Повезан) ондапокушати
АдоЦонн. Отворено; Резултат: = Тачно; осимна Е: Изузетак урадитизапочетиМессагеДлг ('Дошло је до грешке при повезивању са. базе података. Грешка: '+ # 13 # 10 + е. Порука, мтЕррор, [мбОк], 0);акоНЕ ТДатабасеПромптФорм. Извршите (СерверНаме, ДБНаме)
онда
Резултат: = лажно. другозапочети
ВритеРегистри ('ДатаСоурце', СерверНаме); ВритеРегистри ('ДатаЦаталог', ДБНаме); // опозива ову функцију
Резултат: = ДБЦоннецт; крај; крај; крај; крај; //DBConnect

ДБЦоннецт функција се повезује на базу података МС СКЛ Сервер - ЦоннецтионСтринг је конструисан користећи локалну цоннСтр променљива.

Име сервера базе података је сачувано у СерверНаме променљива, име базе података се налази у ДБНаме променљива. Функција започиње читањем те две вредности из регистра (користећи прилагођени) РеадРегистри () процедура). Једном када се ЦоннецтионСтринг споји, тада једноставно зовемо АдоЦонн. Отвори метод. Ако се овај позив врати „труе“, успешно смо се повезали са базом података.

Напомена: Пошто податке за пријаву изричито преносимо кроз ЦоннецтионСтринг, модул података Будући да је креиране пре главног обрасца, можете безбедно позвати методе из податковног модула у програму МаинФорм'с ОнЦреате догађај.ЛогинПромпт својство је постављено на лажно да спречи непотребни дијалог за пријаву.

"Забава" започиње ако се догоди изузетак. Иако можда постоји много разлога за неуспех методе Опен, претпоставимо да је име сервера или име базе података лоше.
Ако је то случај, пружићемо прилику кориснику да утврди исправне параметре приказивањем прилагођеног дијалошког обрасца.
Примјер примене такође садржи један додатни образац (ДатабасеПромптФорм) који кориснику омогућава да одреди сервер и име базе података за компоненту Цоннецтион. Овај једноставан образац пружа само два поља за уређивање, ако желите да пружите корисничко сучеље, могли бисте додајте два ЦомбоБок-а и испуните их набрајањем доступних СКЛ сервера и преузимањем база података на СКЛ серверу.

Образац ДатабасеПромпт пружа прилагођену употребу метода класе именован Екецуте који прихвата два варијабилна (вар) параметра: СерверНаме и ДБНаме.

Помоћу "нових" података које пружа корисник (име сервера и базе података) једноставно поново позивамо ДБЦоннецт () функцију (рекурзивно). Наравно, информације се прво чувају у Регистру (користећи други прилагођени метод: ВритеРегистри).

Уверите се да је ДатаМодуле први "образац" креиран!

Ако покушате самостално да направите овај једноставан пројекат, можда ћете доживети изузеће кршења приступа приликом покретања апликације.
Према заданом, први образац који се додаје апликацији постаје МаинФорм (први креиран). Када додате податковни модул у апликацију, модул података се додаје листи „аутоматски креирајући обрасце“ као облик који се ствара након главног обрасца.
Сада, ако покушате да позовете било које од својстава или метода Дата Модула у догађају ОнЦреате главног форума, добићете изузетак кршења приступа - пошто модул података још увек није створен.
Да бисте решили овај проблем, потребно је да ручно промените креирани редослед модула података - и подесите га да буде први образац који је створен помоћу апликације (било помоћу дијалога Пројецт-Пропертиес или уређивањем тхе тхе Изворна датотека пројекта).

Будући да је податковни модул креиран прије главног обрасца, можете сигурно назвати методе из податковног модула у догађају МаинФорм-а ОнЦреате.