Kā dinamiski izveidot datu bāzes savienojuma virkni

Kad esat pabeidzis savu Delphi datu bāzes risinājums, pēdējais solis ir veiksmīgi izvietot to lietotāja datorā.

ConnectionString tiešraidē

Ja jūs izmantojāt dbGo (ADO) komponentus,ConnectionString īpašums TADOC savienojums norāda savienojuma informāciju datu krātuvei.

Acīmredzot, veidojot datu bāzes lietojumprogrammas, kuras darbināmas ar dažādām mašīnām, savienojumam ar datu avotu nevajadzētu būt izpildāmā kodējumam. Citiem vārdiem sakot, datu bāze var atrasties jebkur lietotāja datorā (vai kādā citā) dators tīklā) - objektā TADOConnection izmantotā savienojuma virkne jāizveido vietnē izpildes laiks. Viena no ieteiktajām savienojuma virknes parametru glabāšanas vietām ir Windows reģistrs (vai arī jūs varētu izlemt izmantot “vienkāršo” INI faili).

Parasti, lai izveidotu savienojuma virkni izpildes laikā, jums tas ir jādara
a) reģistrē pilnu ceļu uz datu bāzi; un
b) katru reizi, palaižot lietojumprogrammu, izlasiet informāciju no reģistra, "izveidojiet" ConnectionString un "atveriet" ADOConnection.

instagram viewer

Datu bāze... Pievienojieties!

Lai palīdzētu jums izprast procesu, mēs esam izveidojuši "skeleta" programmas paraugu, kas sastāv no vienas formas (pieteikuma galvenā forma) un datu moduļa. Delphi datu moduļi nodrošina ērtu organizatorisko rīku, ko izmanto, lai izolētu jūsu lietojumprogrammas daļas, kas apstrādā datu bāzes savienojamību un biznesa noteikumus.

OnCreate Datu moduļa notikums ir vieta, kur jūs ievietojat kodu, lai dinamiski izveidotu ConnectionString un izveidotu savienojumu ar datu bāzi.

procedūra TDM.DataModuleCreate (Sūtītājs: TObject); sāktja DBConnect tad
ShowMessage ('Pievienots datu bāzei!')
cits
ShowMessage ('NAV savienots ar datu bāzi!'); beigas;

Piezīme: Datu moduļa nosaukums ir "DM". TADOConnection komponenta nosaukums ir "AdoConn".

DBConnect funkcija veic faktisko pieslēgšanās datu bāzei darbu, šeit ir kods:

funccijas TDM.DBConnect: Būla; var
conStr: virkne; ServerName, DBName: virkne; sāktServerName: = ReadRegistry ('DataSource'); DBName: = ReadRegistry ('DataCatalog'); conStr: = 'Sniedzējs = sqloledb;' + 'Datu avots =' + ServerName + ';' + 'Sākotnējais katalogs =' + DBName + ';' + 'Lietotāja ID = myUser; Parole = myPasword '; Rezultāts: = nepatiess; AdoConn. Aizvērt; AdoConn. ConnectionString: = conStr; AdoConn. LoginPrompt: = nepatiess;ja (NAV AdoConn. Savienots) tadmēģiniet
AdoConn. Atvērts; Rezultāts: = patiess; izņemotieslēgts E: Izņēmums darītsāktMessageDlg ('Veidojot savienojumu ar., Radās kļūda. datu bāze. Kļūda: “+ # 13 # 10 + e. Ziņojums, mtError, [mbOk], 0);jaNAV TDatabasePromptForm. Izpildīt (ServerName, DBName)
tad
Rezultāts: = nepatiess. citssākt
WriteRegistry ('DataSource', ServerName); WriteRegistry ('DataCatalog', DBName); // atgādināt šo funkciju
Rezultāts: = DBConnect; beigas; beigas; beigas; beigas; //DBConnect

Funkcija DBConnect izveido savienojumu ar MS SQL Server datu bāzi - ConnectionString tiek veidota, izmantojot vietējo connStr mainīgs.

Datubāzes servera nosaukums tiek glabāts Servera nosaukums mainīgais, datu bāzes nosaukums tiek turēts DBN nosaukums mainīgs. Funkcija sākas ar šo divu vērtību nolasīšanu no reģistra (izmantojot pielāgoto Lasītreģistrācija () procedūra). Kad ConnectionString ir samontēts, mēs vienkārši piezvanīsim AdoConn. Atvērt metode. Ja šī zvana vērtība ir “patiesa”, mēs esam veiksmīgi izveidojuši savienojumu ar datu bāzi.

Piezīme: Tā kā mēs nepārprotami pārsūtām pieteikšanās informāciju caur ConnectionString, tā kā datu modulis ir kas izveidots pirms galvenās formas, varat droši izsaukt metodes no datu moduļa MainForm OnCreate notikums.LoginPrompt rekvizīts ir iestatīts uz nepatiess, lai novērstu nevajadzīgu pieteikšanās dialogu.

"Jautrība" sākas, ja rodas izņēmums. Lai gan Open metodes neveiksmei var būt daudz iemeslu, pieņemsim, ka servera vai datu bāzes nosaukums ir slikts.
Ja tas tā ir, mēs lietotājiem sniegsim iespēju norādīt pareizos parametrus, parādot pielāgotu dialoga formu.
Parauga lietojumprogrammā ir arī viena papildu forma (DatabasePromptForm), kas ļauj lietotājam norādīt servera un savienojuma komponenta datu bāzes nosaukumu. Šī vienkāršā forma nodrošina tikai divus rediģēšanas lodziņus, ja vēlaties, lai nodrošinātu lietotājam draudzīgāku saskarni pievienojiet divus ComboBox un aizpildiet tos, uzskaitot pieejamos SQL serverus un izgūstot SQL servera datu bāzes.

DatabasePrompt forma nodrošina pielāgotu klases metode nosaukts Izpildīt, kas pieņem divus mainīgus (var) parametrus: ServerName un DBName.

Izmantojot "jaunos" datus, ko nodrošina lietotājs (servera un datu bāzes nosaukums), mēs vienkārši (rekursīvi) atkal izsaucam funkciju DBConnect (). Protams, informācija vispirms tiek saglabāta reģistrā (izmantojot citu pielāgotu metodi: WriteRegistry).

Pārliecinieties, ka DataModule ir pirmā izveidotā "forma"!

Ja jūs pats mēģināt izveidot šo vienkāršo projektu, palaižot lietojumprogrammu, iespējams, rodas piekļuves pārkāpuma izņēmumi.
Pēc noklusējuma pirmā lietojumprogrammai pievienotā forma kļūst par MainForm (pirmā izveidotā). Kad lietojumprogrammai pievienojat datu moduli, datu modulis tiek pievienots “automātiski izveidoto formu” sarakstam kā forma, kas tiek izveidota pēc galvenās formas.
Tagad, mēģinot izsaukt kādu no datu moduļa īpašībām vai metodēm MainForm OnCreate notikumā, jūs iegūsit piekļuves pārkāpuma izņēmumu - jo datu modulis vēl nav izveidots.
Lai atrisinātu šo problēmu, jums manuāli jāmaina izveidotā datu moduļa secība - un jāiestata tā pirmā forma, kuru izveido lietojumprogramma (izmantojot vai nu dialoglodziņu Projekta rekvizīti, vai arī rediģējot) Projektu avota fails).

Tā kā datu modulis ir izveidots pirms galvenās formas, MainForm notikumā OnCreate varat droši izsaukt metodes no datu moduļa.

instagram story viewer