Vous êtes sur la page 1sur 6

5.2.

3 Modelo Conectado x Modelo Desconectado

J escutei muita gente discutir qual o melhor modelo. Mas no existe isso!!! Gostaria que vocs entendessem que o que existe : O melhor modelo para uma determinada situao. Ento antes de qualquer pro eto estudem o melhor modelo! as vantagens e as desvantagens de cada um para aquele distema.
5.2.4 Ob etos utili!ados nos modelos

". #tring de $onexo %. #ql$onnection &. #ql'ata(dapter ). #ql$ommand *. 'ata#et +. #ql'ata,eader -ogo no in.cio /% anos atrs0! quando comecei a estudar $1! eu realmente no entendia a utili2a3o desses o4 etos. $onseguia at 5a2er as coisas! apenas porque decorava. Ento para no cometerem o mesmo erro que eu! vamos entender quando se utili2ar cada o4 eto desse. ". String de Conexo 6 5oi muito discutido no t7pico 5."8 %. SqlConnection 6 94 eto que de acordo com uma string de conexo ir se conectar com a 4ase. Esta classe contem vrias propriedades com in5orma3:es e mtodos para manipular a conexo com o 4anco8 &. DataSet ; < uma estrutura 4astante complexa e parecida com nosso 4anco de dados! so que manipulada em mem7ria. 9 o4 eto contm ta4elas /assim como o 4anco0 com linhas e colunas. < muito utili2ado em todo o 5rame=or> .?E@! mas uma das utili2a3:es 4sicas nos modelos desconectados. ). SqlDataAdapter 6 Atili2ado no modelo desconectado. 9 'ata#et por se s7 no consegue se conectar ao 4anco. Ele no sa4e nada da nossa 4ase de dados. Ento o Bnico modo de preenchermos nosso dataset com dados vindos do 4anco qual C -7gico! atrves de um o4 eto intermedirio que vai ser uma ponte entre a conexo e o 'ata#et /por exemplo0. *. SqlCommand 6 Atili2ado no modelo conectado. E serve 4sicamente para executar comandos no 4anco. Ento para cada comando que vai ser reali2ado em cima do 4anco /D?#E,@! AE'(@E! #E-E$@! 'E-E@E0 ser necessrio um o4 eto desta classe. +. SqlDataReader 6 Atili2ado explicitamente no modelo conectado.#a4em os ponteiros para arquivos em $F$GGCEois . Este o4 eto tra4alha de maneira 4em semelhante! sendo da mesma 5orma 5or=ard;onlH e read;onlH! ou se a esse IponteiroJ ir andar apenas para 5rente e ser apenas leitura.Ele ir apontar para resultados de um #ql$ommand /que so sempre resultados em 5orma de ta4elas!

consequentemente [agora sem trema :D] ! o datareader ir apontar sempre para uma linha desta ta4ela0. #. $cessando % base com C& Kinalmente chegamos na parte 4oa! depois de muito conceito vem a prtica. 'este primeiro post iremos trabalhar com o modelo conectado.
#." Criando a nossa classe b(sica )*essoa+

Lamos! primeiramente! criar nossa classe 4sica! a classe IEessoaJ que ir conter como propriedade todas as colunas de nossa ta4ela IEessoaJ. Essa classe ser utili2ada 4sicamente em todas as opera3:es dos nossos exemplos.
#.2 $l,oritmo -(sicos do Modelo Conectado

#e conexo 5echada (4rir conexo $ria comando que ir manipular o 4anco Executa comando Kecha $onexo com o 4anco $omo d para ver 4em simples o 5luxo das opera3:es ao acessar o 4anco de dados. Obs: Ama coisa muito importante que vocs no devem esquecer amais de 5echar a conexo depois de ter operado no 4anco. < como 5ala o meu che5e: abra a conexo o mais tarde que poder, e feche o mais cedo possvel ! Dsso se deve ao 5ato que 5icar consumindo a conexo com o 4anco por muito tempo desnessariamente pre udicial M aplica3o.
#.3 .nserindo re,istros no banco
public class Program 2: { 3: static Pessoa GetPessoa() 4: { 5: Pessoa pessoa = new Pessoa(); 6: Console !rite"ine(#$ome #); %: pessoa $ome = Console &ea'"ine(); (: Console !rite"ine(#)mail #); *: pessoa )mail = Console &ea'"ine(); +,: Console !rite"ine(#-e.o (/ ou 0) #); ++: pessoa -e.o = Con1ert 2oC3ar(Console &ea'"ine()); +2: Console !rite"ine(#4ata 'e $ascimento#); +3: pessoa 4ata$ascimento = Con1ert 2o4ate2ime(Console &ea'"ine()); +4: return pessoa; +5: 5 +6:

+%: static 1oi' /ain(string67 args) +(: { +*: 88 2,: 88c3ama um m9to'o :ue ir; preenc3er um ob<eto Pessoa 'e acor'o com entra'as 'o usu;rio 2+: 88 22: Pessoa newPessoa = GetPessoa(); 23: 24: 88 25: 88string 'e cone.=o :ue in>orma 'a'os 'o banco :ue irei acessar 26: 88 2%: string connection-tring = ?#4ata -ource= @-A";Bnitial Catalog=)stu'oClog;Bntegrate' -ecuritD=2rue;Pooling=0alse#; 2(: 2*: 88 3,: 88 AuerD 2-A" com coman'o :ue irei realiEar no banco 3+: 88 32: string :uerD = #B$-)&2 B$2F Pessoa (nomeG 'ata$ascimentoG se.oG email) 1alues (?nomeG ?'ata$ascimentoG ?se.oG ?email)#; 33: 34: -:lConnection conn = null; 35: trD 36: { 3%: 88 3(: 88instHncia 'a cone.=o 3*: 88 4,: conn = new -:lConnection(connection-tring); 4+: 42: 88 43: 881eri>ica se cone.=o est; >ec3a'aG se ti1er abre 44: 88 45: i> (conn -tate == Connection-tate Close') 46: { 4%: 88 4(: 88abre cone.=o 4*: 88 5,: conn Fpen(); 5+: 5 52: 53: 88 54: 88 CriaI=o 'o ob<eto coman'oG :ue recebe a :uerD :ue ser; utiliEa'a na operaI=o e a cone.=o com o banco 55: 88 56: -:lComman' cm' = new -:lComman'(:uerDG conn); 5%: 5(: 88 5*: 88 J'iciona parametros ao coman'o 6,: 88 6+: cm' Parameters J''(new -:lParameter(#nome#G newPessoa $ome)); 62: cm' Parameters J''(new -:lParameter(#'ata$ascimento#G newPessoa 4ata$ascimento)); 63: cm' Parameters J''(new -:lParameter(#se.o#G newPessoa -e.o)); 64: cm' Parameters J''(new -:lParameter(#email#G newPessoa )mail)); 65: 66: 88 6%: 88 ).ecuta coman'o 6(: 88 6*: cm' ).ecute$onAuerD();

%,: %+: %2: %3: %4: %5: %6: %%: %(: %*: (,: (+: (2: (3: (4: (5: (6: (%: ((: (*: *,: *+: *2: *3: *4: *5: 5

88 88 0ec3a cone.=o com o banco 88 conn Close(); Console !rite"ine(#Pessoa Ca'astra'a com sucessoKKK#); 5 catc3 ().ception e.) { Console !rite"ine(e. /essage); 5 >inallD { 88 88 Garante :ue a cone.=o ser; >ec3a'a mesmo :ue ocorra algum erro 88 $=o e.iste problema em >ec3ar uma cone.=o 'uas 1eEes 88 F problema esta em abrir uma cone.=o 'uas 1eEes 88 i> (conn K= null) { conn Close(); 5 5 5

#.3 /ecuperando re,istros do banco

9 modo de recuperar dados do 4anco! 4astante parecido com o modo de inserir. Ama coisa que muda e que vale chamar aten3o so em trs mtodos da classe #ql$ommand: ". Execute?onNuerH: Executa qualquer comando que no tenha retorno! ou se a! esse mtodo no retorna nada /D?#E,@! AE'(@E0 %. Execute,eader: Executa comandos que retornem alguma coisa /#E-E$@0 &. Execute#calar: ,etorna a primeira linha e a primeira coluna do comando. 9 nosso c7digo 5icar da seguinte maneira:
+: public class Program 2: { 3: static 1oi' /ain(string67 args) 4: { 5: 88 6: 88string 'e cone.=o :ue in>orma 'a'os 'o banco :ue irei acessar %: 88 (: string connection-tring = ?#4ata -ource= @-A";Bnitial Catalog=)stu'oClog;Bntegrate' -ecuritD=2rue;Pooling=0alse#; *: +,: 88 ++: 88 AuerD 2-A" com coman'o :ue irei realiEar no banco +2: 88

+3: string :uerD = #-)")C2 L 0&F/ Pessoa#; +4: +5: -:l4ata&ea'er rea'er = null; +6: -:lConnection conn = null; +%: +(: trD +*: { 2,: 88 2+: 88instHncia 'a cone.=o 22: 88 23: conn = new -:lConnection(connection-tring); 24: 25: 88 26: 881eri>ica se cone.=o est; >ec3a'aG se ti1er abre 2%: 88 2(: i> (conn -tate == Connection-tate Close') 2*: { 3,: 88 3+: 88abre cone.=o 32: 88 33: conn Fpen(); 34: 5 35: 36: 88 3%: 88 CriaI=o 'o ob<eto coman'oG :ue recebe a :uerD :ue ser; utiliEa'a na operaI=o e a cone.=o com o banco 3(: 88 3*: -:lComman' cm' = new -:lComman'(:uerDG conn); 4,: 4+: 88 42: 88 ).ecuta coman'o 43: 88 44: rea'er = cm' ).ecute&ea'er(); 45: 46: 88 4%: 88interage com a tabela retorna'a 4(: 88 4*: w3ile (rea'er &ea'()) 5,: { 5+: Console !rite(rea'er6#nome#7 2o-tring() M # N #); 52: Console !rite"ine(rea'er6#email#7 2o-tring()); 53: 5 54: 55: 88 56: 88 0ec3a cone.=o com o banco 5%: 88 5(: conn Close(); 5*: 5 6,: catc3 ().ception e.) 6+: { 62: Console !rite"ine(e. /essage); 63: 5 64: >inallD 65: { 66: 88 6%: 88 Garante :ue a cone.=o ser; >ec3a'a mesmo :ue ocorra algum erro 6(: 88 $=o e.iste problema em >ec3ar uma cone.=o 'uas 1eEes 6*: 88 F problema esta em abrir uma cone.=o 'uas 1eEes

%,: %+: %2: %3: %4: %5: %6: %%:

88 i> (conn K= null) { conn Close(); 5 5 5 5

Vous aimerez peut-être aussi