Вы находитесь на странице: 1из 13

Iazendo uso de uma c1asse paa se conecfa em um

banco de dados {Pafe ll}




Aced1fo que com esfe af1go vou fem1na o que comee1
na 1mp1emenfaao de uma c1asse gen1ca, paa c1a um obefo
de conexo a um defem1nado banco de dados.
1enfo aqu1 da apenas um exemp1o de como faba1ha com
o amb1enfe De1ph1 paa pode muda os componenfes de acessos
a banco de dados sem causa fanfo 1mpacfo em uma mudana de
componenfes de acesso a um 5G8D, o que hoe em d1a mu1fo
faba1hoso sa1 mudando fodos os dafamodue{s} de um s1sfema
o que pode fe mudanas 1nc1us1ve na foma como os
componenfes faba1ham e os seus mfodos ex1sfenfes.

vamos enfo efoma a 1d1a da c1asse c1ada no af1go
anfe1o descevendo a funo de cada mfodo e co1ocando
a1guns fechos do cd1go fonfe.

1ConecfaGea1 = c1ass -> Lsfa a c1asse def1n1da em
ucconecf1on.

A un1f un1f un1f un1f des1gnada ucsc1pfs ucsc1pfs ucsc1pfs ucsc1pfs paa esfe exemp1o no
ap11cve1, uma vez que a funo da mesma e faba1ha com
oufa c1asse des1gnada d1c1on1o, onde 1 gea fodas as
consu1fas baseadas em uma base de conhec1menfo def1n1da, mas
assunfo paa oufo documenfo. Nesfe caso podemos ef1a da
un1f ucconecf1on.


Aba1xo segue um pedao do cd1go fonfe paa enfend1menfo
do func1onamenfo de cada mfodo, 1mpofanfe 1emba que os
pedaos de cd1gos ass1m desc1fos no esfam comp1efos paa
seem func1ona1s e s1m apenas paa exemp11f1ca o mode1o
c1ado da c1asse, f1cando em fa1fa a1gumas va1ave1s a seem
def1n1das como descevo a1gumas aba1xo paa fe um
enfend1menfo comp1efo.

{$1fdef 5GD8CONLC1Okl8 }
5fDafabaseName = D:\lnfe8ase\db\l861L51L.GD8
5f5eve5GD8 = 192.16.0.2
5fConnecf1onPafe1 = usename=5Y5D8A
5fConnecf1onPafe2 = passWod=masfekey
5fConnecf1onpafe3 =
5fConnecf1onpafe4 =
{$end1f}
// Consfanfe de paamefos de queys
CPef1xI1e1d = :NLW


// Cod1go de Lo
LNoma1 = 0
LAb11abe1a = 1001
LConexao8anco = 1002
LDesConexao8anco = 1003

LAb1quey = 2001 //no usado nesfe confexfo a1nda
LLeD1c1ona1o = 2002
LLelnd1ces = 2003
LIechaquey = 2004
LLeLnf1dade = 2005 // Lo ao Le Lnf1dade paa Pega
o Cd1go da Lnf1dade
LAfua11za = 2006 // Lo ao 1enfa Iecha uma 1ansacao
LLxc1usao = 2007 // Lo ao 1enfa Lxc1u1 uma keg1sfo
LPaamefo = 200 // Lo ao 1enfa Af1bu1 Paamefos

O mfodo consfucfo o mfodo onde chamado
1mp11c1famenfe quando o pogamado esfa c1ando um obefo
paa conexo ao 5G8D. Ponfos 1mpofanfes a seem nofadas
nesfe mfodo a 1denf1f1cao do f1po de banco de dados
1nd1cado pe1a consfanfe 5GD8CONLC1Okl8 def1n1da no 1n1c1o
da un1f. {v1de af1go anfe1o}.

Io1 def1n1do no pofof1po da c1asse a1gumas pop1edades
que deveam se 1nsfnc1adas epesenfadas pe1as va1ave1s,
seam e1as :

IConnecf1onDefau1f paa popefy Conexao8anco
I1ansacf1onDefau1f paa popefy Conecfo1ansacao

IkesponseCode := 0
IMensagemLo := Lmpfy5f
INome8ancoDados := IConnecf1onDefau1f.DafabaseName
I5ev1doDados := 5f5eve5GD8
I5f1ngConexao := IConnecf1onDefau1f.DafabaseName

L 1mpofanfe enfaf1za que esfas duas va1ave1s mudam de
c1asse dependenfe de qua1 consfanfe man1fesfa fo1 def1n1da no
1n1c1o da un1f.
Paa o exemp1o poposfo faba1hamos com componenfes de
acesso ao l8X 1ogo as pop1edades a seem afua11zadas nessa
va1ave1 da c1asse l8X nada ma1s que as pop1edades
v1sua11zadas no Obecf lnspecfo da lDL do De1ph1, vea
aba1xo um exemp1o :

IConnecf1onDefau1f.DafabaseName:=5f5eve5GD8+:+5fDafabaseName
IConnecf1onDefau1f.Log1nPompf := Ia1se

A va1ave1 de c1asse IConnecf1onDefau1f esfa
ecebendo 1nfomaes nas pop1edades de nome do banco de
dados DafabaseName DafabaseName DafabaseName DafabaseName, se va1 ou no fe pegunfa de usu1o no
1og1n Log1nPompf Log1nPompf Log1nPompf Log1nPompf, e com 1sso oufas pop1edades pefencenfe


apenas a esse f1po de d1ve de acesso. L no mfodo
consfucfo consfucfo consfucfo consfucfo que deve se conf1guado o pado de acesso ao
obefo Dafa8aseName que uf111zado paa 11ga com fodos os
oufos componenfes de acesso a dados como o 1quey,
1dafa5ouce.

// Consfufo
consfucfo consfucfo consfucfo consfucfo 1ConecfaGea1.Ceafe{ pamd1a1efo : 1D1a1ecf
consf pamDafabasename: sf1ng
consf pam5eve: sf1ng }
beg1n beg1n beg1n beg1n
1nhe1fed Ceafe
// ln1c1a va1ve1s
fy
IlD11po5GD8 := pamd1a1efo
{$1fdef 5GD8CONLC1Okl8}
IConnecf1onDefau1f := 1l8Dafabase.Ceafe{n11}
I1ansacf1onDefau1f := 1l81ansacf1on.Ceafe{n11}
IConnecf1onDefau1f.DafabaseName := 5f5eve5GD8 +
:+5fDafabaseName
IConnecf1onDefau1f.Log1nPompf := Ia1se

IConnecf1onDefau1f.Defau1f1ansacf1on:=
I1ansacf1onDefau1f
IConnecf1onDefau1f.Paams.C1ea
IConnecf1onDefau1f.Paams.Add{5fConnecf1onPafe1}
IConnecf1onDefau1f.Paams.Add{5fConnecf1onPafe2}
I1ansacf1onDefau1f.Defau1fAcf1on := 1AComm1f
I1ansacf1onDefau1f.Paams.Add{eadcomm1ffed}
I1ansacf1onDefau1f.Paams.Add{ecves1on}
I1ansacf1onDefau1f.Paams.Add{noWa1f}
IkesponseCode := 0
IMensagemLo := Lmpfy5f
INome8ancoDados := IConnecf1onDefau1f.DafabaseName
I5ev1doDados := 5f5eve5GD8
I5f1ngConexao := IConnecf1onDefau1f.DafabaseName
{$end1f}

excepf
on 1ConGea1Lxcecao do
beg1n
IConnecf1onDefau1f.Iee
IConnecf1onDefau1f := n11
IkesponseCode := LAb11abe1a
IMensagemLo := Lo ao ab1 a fabe1a.
ka1se
1ConGea1Lxcecao.Ceafe{{+lnf1o5f{IkesponseCode}+} - +
IMensagemLo}
end
end end end end



No mfodo Desfoy fem a funo de f1na11za fodos as
va1ave1s de c1asses quando o obefo de conexo sea
f1na11zado ou desfu1do.
// Desfufo
desfucfo desfucfo desfucfo desfucfo 1ConecfaGea1.Desfoy
beg1n beg1n beg1n beg1n
1nhe1fed Desfoy
fy
IConnecf1onDefau1f.Iee
{$1fdef 5GD8CONLC1Okl8}
I1ansacf1onDefau1f.Iee
{$end1f}
IkesponseCode := 0
IMensagemLo := Lmpfy5f
excepf
on 1ConGea1Lxcecao do
beg1n
IConnecf1onDefau1f := n11
IkesponseCode := LDesConexao8anco
IMensagemLo := Lo ao I1na11za o 5ev1o de 8anco
de Dados.
ka1se
1ConGea1Lxcecao.Ceafe{{+lnf1o5f{IkesponseCode}+} - +
IMensagemLo}
end
end
end end end end

No mfodo Conecfa o p1nc1pa1 po1s fazendo a chamada
paa e1e que o obefo conecfo c1ado 1 fenfa conecfa no
banco de dados esco1h1do. Aqu1 cabe esa1fa que a
pop1edade Connecfed := 1ue ex1sfem na ma1o1a dos
componenfes de conexo, caso apaea a1gum que d1fee voc
deve fesfa qua1 a consfanfe def1n1da paa pode faze a
chamada sem afefa os oufos mfodos de oufos f1pos de
banco.
Po exemp1o vamos supo que paa o banco MY5qL o
componenfe ZLO5 fenha oufa pop1edade paa faze esfe
fesfe ?
{$1fdef 5GD8CONLC1OkZLO5}
IConnecf1onDefau1f.ConecfedMy5q1 :=1ue
{$end1f}
Obs: lsfo apenas um exemp1o, po1s o mfodo 1denf1co e po
1sso que no fo1 fesfado a consfanfe def1n1da.

Oufa c1asse uf111zada a c1asse 1ConGea1Lxcecao
que em1fe uma exeo.

pocedue pocedue pocedue pocedue 1ConecfaGea1.Conecfa


beg1n beg1n beg1n beg1n
fy
IConnecf1onDefau1f.Connecfed := 1ue
IConecfado := 1ue
excepf
on 1ConGea1Lxcecao do
beg1n
IConnecf1onDefau1f := n11
IkesponseCode := LAb11abe1a
IMensagemLo := Lo ao ab1 a fabe1a.
ka1se
1ConGea1Lxcecao.Ceafe{{+lnf1o5f{IkesponseCode}+} - +
IMensagemLo}
end
end
end end end end

O mfodo desconecfa faz o pocesso 1nveso ao mfodo
conecfa, gea1menfe chamado no f1na1 da ap11cao paa
f1na11za a conexo com o banco de dados.

pocedue pocedue pocedue pocedue 1ConecfaGea1.desconecfa
beg1n beg1n beg1n beg1n
fy
IConnecf1onDefau1f.Connecfed := Ia1se
IConecfado := Ia1se
excepf
on 1ConGea1Lxcecao do
beg1n
IConnecf1onDefau1f := n11
IkesponseCode := LDesConexao8anco
IMensagemLo := Lo ao Desconecfa do 8anco de
Dados.
ka1se
1ConGea1Lxcecao.Ceafe{{+lnf1o5f{IkesponseCode}+} - +
IMensagemLo}
end
end
end end end end


Nesfe mfodo GefObefoConexao cabe um comenf1o
1mpofanfe po1s o mesmo efona o obefo de conexo
dependendo do f1po de conecfo que o desenvo1vedo 1 ocupa
paa o seu poefo po 1sso que ex1sfe as d1ef1vas de
comp11ao paa pode faze a dev1da conf1guao do efono
da funo e no da eo na comp11ao. 5endo ass1m esfe
mfodo 1 efona exafamenfe a va1ve1 de c1asse chamada
IConnecf1onDefau1f, que dependendo do f1po de banco 1 fe


pop1edades pp1as paa se uf111zadas na 1g1ca do
pocesso.


{$1fdef 5GD8CONLC1OkADO}
Iuncf1on Iuncf1on Iuncf1on Iuncf1on 1ConecfaGea1.GefObefoConexao : 1ADOConnecf1on
{$end1f}
{$1fdef 5GD8CONLC1Okl8}
Iuncf1on Iuncf1on Iuncf1on Iuncf1on 1ConecfaGea1.GefObefoConexao : 1l8Dafabase
{$end1f}
{$1fdef 5GD8CONLC1OkZLO5}
Iuncf1on Iuncf1on Iuncf1on Iuncf1on 1ConecfaGea1.GefObefoConexao : 1ZConnecf1on
{$end1f}
beg1n beg1n beg1n beg1n
kesu1f := IConnecf1onDefau1f
end end end end


O mfodo Lsfado8anco efona um sfafus dependendo se
houve eo ou no em a1gum mfodo execufado ac1ma, a va1ve1
IkesponseCode pefence a c1asse 1conecfaGea1 e afua11zada
foda vez que ocoe uma exceo. Mfodo c1ado apenas paa
ve o esfado desfa pop1edade e usado quando necess1o.


Iuncf1on 1ConecfaGea1.Lsfado8anco : 8oo1ean
beg1n beg1n beg1n beg1n
esu1f := {IkesponseCode = 0}
end end end end

O mfodo Abe1ansacao como o pp1o nome d1z paa
da 1n1c1o em uma fansao 1ndependenfe do f1po de banco de
dados

Pocedue Pocedue Pocedue Pocedue 1ConecfaGea1.Abe1ansacao
beg1n beg1n beg1n beg1n
1f Nof IConecfado fhen ex1f
{$1fdef 5GD8CONLC1OkADO}
// Nada Iaz
{$end1f}
{$1fdef 5GD8CONLC1Okl8}
I1ansacf1onDefau1f.5faf1ansacf1on
{$end1f}
end end end end


O mfodo Iecha1ansacao faba1ha em conunfo com o
mfodo Abe1ansacao e Cance1a1ansacao.




Pocedue Pocedue Pocedue Pocedue 1ConecfaGea1.Iecha1ansacao
beg1 beg1 beg1 beg1n nn n
1f Nof IConecfado fhen ex1f
{$1fdef 5GD8CONLC1OkADO}
// Nada Iaz
{$end1f}
{$1fdef 5GD8CONLC1Okl8}
I1ansacf1onDefau1f.Comm1f
{$end1f}
end

O mfodo Cance1a1ansacao uf111zada paa abandona uma
fansao abefa, em1f1ndo o ko11back paa o sev1do de
banco de dados.


Pocedue 1ConecfaGea1.Cance1a1ansacao
beg1n
1f Nof IConecfado fhen ex1f
{$1fdef 5GD8CONLC1OkADO}
// Nada Iaz
{$end1f}

{$1fdef 5GD8CONLC1Okl8}
I1ansacf1onDefau1f.ko11back
{$end1f}
end end end end


Com esses mfodos padon1zados o desenvo1vedo pode
muda de banco de dados, que o seu poefo em de1ph1 no
sofe mu1fo 1mpacfo nessa mudana dos cd1gos fonfes do
poefo, o que pode aconfece faze a1gumas adapfaes
nesfa c1asse paa f1ca o ma1s comp1efo poss1ve1 e com 1sso
fe apenas uma c1asse de conexo ao 5G8D 1ndependenfe dos
componenfes.
queo essa1fa que emboa os componenfes de conexo de
banco de dados no faba1ha soz1nho f1ca aqu1 o desaf1o paa
c1a uma c1asse do f1po 1queyComun ou 1Gene1cquey que
fenha o mesmo conce1fo desfa c1asse. 5egue um pedao de
cd1go fonfe de como f1ca1a o seu pogama sem faze uso de
um DafaModu1e. L um pouco d1feenfe mas func1ona1, caso
a1gum se 1nfeesse pe1os fonfes f1co a d1spos1o paa pode
ecebe a1guma conf1bu1o do esfudo que f1z, func1ona mu1fo
bem.










Aqu1 co1oco um exemp1o func1ona1 de um poefo de1ph1 6
com uso das c1asses c1adas :

ucconecf1on -> possue a def1n1o das c1asses : 1queyComun,
1gene1cquey, 1conecfaGea1

unfuncgea1s -> funes d1vesas

ucsc1pfs -> c1asses que gea sc1pfs aufomf1cos, senfenas
b1cas de sq1 baseadas em um d1c1on1o de dados

ucsco11, ucsffunc -> de uso 1nfeno das c1asses


pogam PoC1asse

uses
Ioms,
un1f1 1n un1f1.pas {Iom1},
ucconecf1on 1n ..\..\C1asses\ucconecf1on.pas,
unfuncgea1s 1n ..\..\unfuncgea1s.pas,
ucsc1pfs 1n ..\..\C1asses\ucsc1pfs.pas,
ucsco11 1n ..\..\C1asses\ucsco11.pas,
ucsffunc 1n ..\..\C1asses\ucsffunc.pas

{$k ".es}

beg1n
App11caf1on.ln1f1a11ze
App11caf1on.CeafeIom{1Iom1, Iom1}
App11caf1on.kun
end.





















Iomu11o de fesfe de uso da c1asse :





Cd1go fonfe do fomu1o ac1ma :

un1f un1f1

1nfeface

uses
W1ndoWs, Messages, 5ysuf11s, va1anfs, C1asses, Gaph1cs,
Confo1s, Ioms,
D1a1ogs, D8, 5fdCf1s, ucconecf1on, NW15fafus8a, G1ds,
D8G1ds,
ComCf1s, 8uffons

fype
1Iom1 = c1ass{1Iom}
Labe11: 1Labe1
8uffonConecfa: 18uffon
8uffonDesconecfa: 18uffon
D8G1d1: 1D8G1d


8uffonAbequey: 18uffon
8uffonIechaquey: 18uffon
Memo1: 1Memo
Labe12: 1Labe1
8uffonLnf1dade: 18uffon
Ld1fenf1dade: 1Ld1f
Labe13: 1Labe1
LdWhee: 1Ld1f
Labe14: 1Labe1
Combo8ox1: 1Combo8ox
D5h1sfo1co: 1Dafa5ouce
l8D8anca1o: 1l8Dafabase
l818anca1o: 1l81ansacf1on
qYCbch1sfo1co: 1l8Dafa5ef
8uffon1: 18uffon
l8quey1: 1l8quey
NW15fafus8a1: 1NW15fafus8a
8uffon2: 18uffon
pocedue 8uffonConecfaC11ck{5ende: 1Obecf}
pocedue 8uffonDesconecfaC11ck{5ende: 1Obecf}
pocedue 8uffonAbequeyC11ck{5ende: 1Obecf}
pocedue 8uffonIechaqueyC11ck{5ende: 1Obecf}
pocedue 8uffonLnf1dadeC11ck{5ende: 1Obecf}
pocedue Combo8ox1Change{5ende: 1Obecf}
pocedue IomkeyDoWn{5ende: 1Obecf va key: Wod
5h1ff: 15h1ff5fafe}
pocedue 8uffon1C11ck{5ende: 1Obecf}
pocedue 8uffon2C11ck{5ende: 1Obecf}
p1vafe
{ P1vafe dec1aaf1ons }
pub11c
My5GD8 : 1ConecfaGea1
Myquey : 1Gene1cquey
end

va
Iom1: 1Iom1

1mp1emenfaf1on

{$k ".dfm}

pocedue 1Iom1.8uffonConecfaC11ck{5ende: 1Obecf}
beg1n
fy
My5GD8 := 1ConecfaGea1.Ceafe{olnfebase}
My5GD8.Conecfa
1f My5GD8.Conecfado fhen
NW15fafus8a1.51mp1e1exf := Conecfado em +
My5GD8.Nome8ancoDados


My5GD8.Abe1ansacao
excepf on L:1ConGea1Lxcecao do
5hoWmessage{L.Message}
end
end

pocedue 1Iom1.8uffonDesconecfaC11ck{5ende: 1Obecf}
beg1n
My5GD8.Desconecfa
1f Nof My5GD8.Conecfado fhen
NW15fafus8a1.51mp1e1exf := Desconecfado em +
My5GD8.Nome8ancoDados
end

pocedue 1Iom1.8uffonAbequeyC11ck{5ende: 1Obecf}
beg1n
1f My5GD8 = n11 fhen beg1n
5hoWmessage{Iavo Conecfa no 8anco P1me1o !}
ex1f
end

1f Nof My5GD8.Conecfado fhen beg1n
5hoWmessage{Iavo Conecfa no 8anco P1me1o !}
ex1f
end
Myquey := 1Gene1cquey.Ceafe{My5GD8,s1enf1dade}
Myquey.Add5qL{Memo1.1exf}
1f Myquey.LsfadoConsu1fa fhen
beg1n
Myquey.Abe
D8G1d1.Dafa5ouce := Myquey.PegaDafa5efCoenfe
end
end

pocedue 1Iom1.8uffonIechaqueyC11ck{5ende: 1Obecf}
beg1n
Myquey.Iecha
end

pocedue 1Iom1.8uffonLnf1dadeC11ck{5ende: 1Obecf}
beg1n
1f My5GD8 = n11 fhen beg1n
5hoWmessage{Iavo Conecfa no 8anco P1me1o !}
ex1f
end

1f Nof My5GD8.Conecfado fhen beg1n
5hoWmessage{Iavo Conecfa no 8anco P1me1o !}
ex1f
end


Myquey :=
1Gene1cquey.Ceafe{My5GD8,11m{Ld1fenf1dade.1exf}}
1f Myquey.LsfadoConsu1fa fhen
beg1n
Myquey.Pepaa5qLGade
Myquey.Abe
D8G1d1.Dafa5ouce := Myquey.PegaDafa5efCoenfe
end
end

pocedue 1Iom1.Combo8ox1Change{5ende: 1Obecf}
beg1n
1f Combo8ox1.lfemlndex <> 0 fhen
v1eWImMode1o{Combo8ox1.lfems|Combo8ox1.1fem1ndex]}

end

pocedue 1Iom1.IomkeyDoWn{5ende: 1Obecf va key: Wod
5h1ff: 15h1ff5fafe}
beg1n
1f key = 27 fhen c1ose
end

pocedue 1Iom1.8uffon1C11ck{5ende: 1Obecf}
va 1q : 1queyComun
beg1n
1f My5GD8 = n11 fhen beg1n
5hoWmessage{Iavo Conecfa no 8anco P1me1o !}
ex1f
end

1f Nof My5GD8.Conecfado fhen beg1n
5hoWmessage{Iavo Conecfa no 8anco P1me1o !}
ex1f
end

1q := 1queyComun.Ceafe{My5GD8}
1q.Add5qL{5e1ecf " fom cpapodufo , 1da1moxpodufo =
+ quofedsf{001}}
1q.Abe
D8G1d1.Dafa5ouce := 1q.PegaDafa5ef
end

pocedue 1Iom1.8uffon2C11ck{5ende: 1Obecf}
beg1n
My5GD8.Iecha1ansacao
end

end.



Com esfe exemp1o poss1ve1 conhece esfa foma
d1feenfe de se pogama em de1ph1. O 1nfeessanfe de se
faba1ha ass1m que voc f1ca 1ndependenfe dos componenfes
que fazem a conexo com ao 5G8D, po1s 1 faze manufeno
apenas nas c1asses que c1a esses componenfes em fempo de
un-f1me, mas paa fudo sempe fem os ponfos pos1f1vos e
negaf1vos e um de1es que os 11nks fe1fos nos D8Confo1s
deveo se fe1fo em fempo de un-f1me, po1s esfes obefos de
conexo pefencenfes a c1asse somenfe ex1sf1 quando o
ap11caf1vo f1ve execufando.
Mas na fenfe mosfo como se1a uma c1asse f1po
1queyComun.


quem f1ve 1nfeesse s enfa em confafo !


1odos os D1e1fos kesevados a
kona1do Campos Pee1a kona1do Campos Pee1a kona1do Campos Pee1a kona1do Campos Pee1a
hffp://WWW.ona1d.ef1.b

Вам также может понравиться