Jednom kada završite svoj Delphi rješenje baze podataka, posljednji korak je uspješna implementacija računala korisnika.
ConnectionString on-thely
Ako ste koristili dbGo (ADO) komponente,ConnectionString vlasništvo TADOConnection određuje podatke o vezi za pohranu podataka.
Očito je da prilikom stvaranja aplikacija baze podataka koje treba izvoditi na raznim strojevima veza s izvorom podataka ne smije biti tvrdo kodirana u izvršnoj datoteci. Drugim riječima, baza podataka može se nalaziti bilo gdje na korisnikovom računalu (ili nekom drugom) računalo u mreži) - vezni niz koji se koristi u objektu TADOConnection mora biti kreiran na vrijeme izvođenja. Jedno od predloženih mjesta za pohranu parametara niza veze je Windows registar (ili se možda odlučite koristiti "običan" INI datoteke).
Općenito, da biste stvorili vezni niz u vrijeme izvođenja koje morate
a) Puni put do baze podataka stavite u Registar; i
b) svaki put kada pokrenete aplikaciju, pročitajte podatke iz Registra, "stvorite" ConnectionString i "otvorite" ADOConnection.
Baza podataka... Spojiti!
Da bismo vam olakšali razumijevanje postupka, napravili smo uzorak aplikacije "kostur" koja se sastoji od jednog oblika (glavni oblik aplikacije) i podatkovnog modula. Delphijevi moduli podataka pružaju prikladan organizacijski alat koji se koristi za izoliranje dijelova vaše aplikacije koji upravljaju povezanošću baze podataka i poslovnim pravilima.
onCreate događaj Modula podataka je mjesto na kojem postavljate kôd za dinamičku konstrukciju ConnectionString i povezivanje s bazom podataka.
postupak TDM.DataModuleCreate (pošiljalac: TObject); početiako DBConnect zatim ShowMessage ("spojeno na bazu podataka!") drugo ShowMessage ('NIJE povezan s bazom podataka!'); kraj;
Bilješka: Naziv podatkovnog modula je "DM". Naziv komponente TADOConnection je "AdoConn".
DBConnect funkcija radi stvarni posao povezivanja s bazom podataka, evo koda:
funkocija TDM.DBConnect: boolean; var conStr: string; ServerName, DBName: string; početiIme poslužitelja: = ReadRegistry ('DataSource'); DBName: = ReadRegistry ('DataCatalog'); conStr: = 'Pružatelj = sqloledb;' + 'Izvor podataka =' + ServerName + ';' + 'Početni katalog =' + DBName + ';' + 'User ID = myUser; Password myPasword '; Rezultat: = lažno; AdoConn. Zatvoriti; AdoConn. ConnectionString: = conStr; AdoConn. LoginPrompt: = Netačno;ako (NE AdoConn. povezan) zatimprobati AdoConn. Otvoren; Rezultat: = True; osimna E: Izuzetak činipočetiMessageDlg ('Došlo je do pogreške prilikom povezivanja s. baze podataka. Pogreška: '+ # 13 # 10 + e. Poruka, mtError, [mbOk], 0);akoNE TDatabasePromptForm. Izvrši se (ServerName, DBName) zatim Rezultat: = netočno. drugopočeti WriteRegistry ('DataSource', ime poslužitelja); WriteRegistry ('DataCatalog', DBName); // podsjetiti se na ovu funkciju Rezultat: = DBConnect; kraj; kraj; kraj; kraj; //DBConnect
DBConnect funkcija spaja se na bazu podataka MS SQL Server - ConnectionString konstruira se pomoću lokalne connStr promjenjiva.
Ime poslužitelja baze podataka pohranjeno je u ServerName varijabla, ime baze podataka drži se u dbname promjenjiva. Funkcija započinje čitanjem te dvije vrijednosti iz registra (pomoću prilagođene ReadRegistry () postupak). Jednom kada se ConnectionString sastavi, tada jednostavno zovemo AdoConn. Otvoren metoda. Ako se ovaj poziv vrati "true", uspješno smo se povezali s bazom podataka.
Napomena: Budući da podatke za prijavu izričito prenosimo kroz ConnectionString, modul Budući da je stvoreno prije glavnog obrasca, možete sigurno nazvati metode iz podatkovnog modula u programu MainForm's OnCreate događaj.LoginPrompt svojstvo postavljeno na lažno da se spriječi nepotrebni dijaloški okvir za prijavu.
"Zabava" započinje ako se dogodi iznimka. Iako može postojati mnogo razloga za neuspjeh metode Open, pretpostavimo da je ime poslužitelja ili ime baze podataka loše.
Ako je to slučaj, pružit ćemo priliku korisniku da utvrdi ispravne parametre prikazivanjem prilagođenog dijaloškog obrasca.
Primjer aplikacije također sadrži jedan dodatni obrazac (DatabasePromptForm) koji korisniku omogućuje određivanje poslužitelja i imena baze podataka za komponentu Connection. Ovaj jednostavni obrazac pruža samo dva okvira za uređivanje, ako želite pružiti korisničko sučelje, mogli biste dodajte dva ComboBox-a i ispunite ih nabrajanjem dostupnih SQL poslužitelja i preuzimanjem baza podataka na SQL Serveru.
Obrazac DatabasePrompt pruža prilagođenu metoda klase imenovan Execute koji prihvaća dva varijabilna (var) parametra: ServerName i DBName.
S "novim" podacima koje je dao korisnik (ime poslužitelja i baze podataka) jednostavno ponovno pozivamo funkciju DBConnect () (rekurzivno). Naravno, informacije se najprije pohranjuju u Registar (koristeći drugu prilagođenu metodu: WriteRegistry).
Uvjerite se da je DataModule prvi "obrazac" kreiran!
Ako pokušate samostalno izraditi ovaj jednostavan projekt, možda ćete primijetiti iznimke kršenja pristupa prilikom pokretanja aplikacije.
Prema zadanom, prvi obrazac koji se dodaje u aplikaciju postaje MainForm (prvi kreiran). Kada dodate podatkovni modul u aplikaciju, podatkovni modul se dodaje popisu "automatski kreirajući obrasce" kao oblik koji se stvara nakon glavnog obrasca.
Ako pokušate pozvati bilo koje od svojstava ili metoda Data Modula u slučaju OnCreate događaja MainForm, dobit ćete iznimku kršenja pristupa - jer podatkovni modul još nije stvoren.
Da biste riješili taj problem, morate ručno promijeniti stvoreni redoslijed podatkovnog modula - i postaviti ga tako da bude prvi obrazac koji dobiva aplikacija (pomoću dijaloškog okvira Projekt-Svojstva ili uređivanjem Izvorna datoteka projekata).
Budući da je podatkovni modul stvoren prije glavnog obrasca, možete sigurno pozvati metode iz podatkovnog modula u događaju MainForm's OnCreate.