Vous êtes sur la page 1sur 5

ADO - Como usar o objeto Connection ?

O que um objeto Connection ? 1. Um objeto Connection representa uma conexo fsica com uma fonte de dados. 2. Para criar um objeto Connection devemos fornecer o nome de um provedor OLE DB ou o nome de uma fonte de dados ODBC. 3. Quando abrimos um objeto Connection estamos tentando a conexo com a fonte de dados. 4. A propriedade State do objeto Connection nos dir se a conexo foi um sucesso ou se falhou. 5. Podemos enviar instrues SQL ou rodar stored procedures usando o mtodo Execute do objeto Connection. 6. Se a instruo que enviamos ao objeto Connection retornar um conjunto de registros um objeto Recordset ser criado automaticamente. Quais o mtodos e propriedades do objeto Connection ? Mtodos Mtodo Open Close Execute BeginTrans CommiTrans RollBackTrans Propriedades Propriedade ConnectionString ConnectionTimeout CommandTimeout State Provider Descrio Contm a informao usada para estabelecer uma conexo com uma fonte de dados Indica o tempo de espera durante a tentativa de uma conexo , antes de terminar e gerar um erro Indica o tempo de espera durante a execuo de um comando antes de terminar e gerar um erro Indica se a conexo esta aberta, fechada ou em andamento Informa o nome do provedor usado na conexo Descrio Abre uma conexo com uma fonte de dados Fecha a conexo e todos os objetos dependentes dela. Executa uma consulta , instruo SQL , stored procedures ou um comando especfico do provedor Inicia uma nova Transao Salva qualquer alterao e encerra a transao atual. Cancela qualquer alterao feita durante a transao atual e encerra a transao.

Como utilizar o objeto Connection para se conectar a uma base de dados ? Para usar o objeto Connection basta informar uma string de conexo (connection string) que identifique a

fonte de dados com a qual deseja trabalhar e a seguir acionar o mtodo Open para efetivar a conexo. A maneira mais fcil de abrir uma conexo passar a informao sobre a string de conexo para o mtodo Open. A propriedade State ir determinar se conexo foi alcanada retornando adStateOpen em caso positivo e adStateClosed caso a conexo no for ativada. Vejamos a seguir um exemplo de conexo com o SQL Server usando uma base de dados ODBC. Dim cnn as ADODB.Connection Set cnn = New ADODB.Connection 'abrindo uma conexo usando um DSN configurado com o nome de Teste Cnn.Open "Teste" , "usuario", "" 'Verifica se a conexo foi efetivamente efetuada If cnn.State = adStateOpen then Msgbox " Conexo ativa " else MsgBox " Conexo inativa " End if Cnn.close 'Fecha a conexo O Cdigo acima utilizado para conexo com somente uma fonte de dados, mas, voc pode criar um objeto Connection e configurar a propriedade ConnectionString antes de ativar o mtodo Open permitindo assim a conexo com uma fonte de dados e posterior reutilizao do objeto Connection para uma conexo com outra fonte de dados, e voc pode tambm configurar outras propriedades do objeto Connection antes da conexo.( Ex: time-out, etc..) Vejamos: Dim cnn as ADODB.Connection Set cnn = New ADODB.Connection 'abrindo uma conexo usando um DSN configurado com o nome de Teste Cnn.ConnectionString = DSN=Teste;UID=usuario;PWD=;" Cnn.ConnectionTimeout = 30 Cnn.Open 'Verifica se a conexo foi efetivamente efetuada If cnn.State = adStateOpen then Msgbox " Conexo ativa "

else MsgBox " Conexo inativa " End if Cnn.close 'Fecha a conexo Como usar o objeto Connection para executar um comando ? O mtodo Execute usado para enviar um comando(command) ( instruo SQL ou outro texto) para uma fonte de dados. Se a instruo retornar colunas ento um objeto Recordset criado. Vejamos o cdigo para este servio: Dim cnn as ADODB.Connection Dim rs As ADODB.Recordset Set cnn = New ADODB.Connection 'abrindo uma conexo usando um DSN configurado com o nome de Teste Cnn.Open "Teste" , "usuario", "" 'Verifica se a conexo foi efetivamente efetuada If cnn.State = adStateOpen then Msgbox " Conexo ativa " else MsgBox " Conexo inativa " End if 'Cria um Recordset usando uma instruo SQL Set rs = cnn.Execute("Select * From authors") ' Mostra o primeiro registro MsgBox rs("au_fname") & " " & rs("au_lname") Cnn.close 'Fecha a conexo Lembre-se que o Recordset retornado via mtodo Execute somente leitura (read-only). Se voce precisar um Recordset atualizvel dever criar primeiro o objeto Recordset configurando-o com as propriedades desejadas e a seguir utilizar o mtodo Open para abrir a consulta e retornar o tipo de cursor desejado. No cdigo a seguir estaremos passando a instruo Delete via mtodo Execute para fonte de dados para excluir todos os autores cujo cdigo for igual a '011-01-0111'.

Dim cnn as ADODB.Connection Dim regafetados as integer Dim rs As ADODB.Recordset Set cnn = New ADODB.Connection 'abrindo uma conexo usando um DSN configurado com o nome de Teste Cnn.Open "Teste" , "usuario", "" 'Verifica se a conexo foi efetivamente efetuada If cnn.State = adStateOpen then Msgbox " Conexo ativa " else MsgBox " Conexo inativa " End if 'Envia uma instruo DELETE para o banco de dados cnn.Execute "DELETE from Authors Where au_id='011-01-0111'",regafetados , adExecuteNoRecords ' Mostra o numero de registros afetados Debug Print "Registros afetados = " & regafetados Cnn.close 'Fecha a conexo A ADO possui somente o mtodo Execute para executar instrues SQL . Neste exemplo a constante adExecuteNoRecords que a instruo SQL no ir gerar um Recordset, pois nenhuma coluna retornada. Se a constante no for declarada a ADO ir criar um objeto Recordset. Para finalizar iremos mostra um exemplo de como criar um Recordset usando o mtodo Execute. A titulo de exemplo estamos abrindo uma base de dados access chamada students.mdb e vamos selecionar todos os codigos dos estudantes da tabela students.
S u bc m d C o n n e c t _ C l i c k ( ) 'd e c l a r aei n s t a n c i aa sv a r i a v e i so b j e t o D i mc n n _ t e s t eA sC o n n e c t i o n D i mr s _ t e s t eA sR e c o r d s e t S e tc n n _ t e s t e =N e wC o n n e c t i o n S e tr s _ t e s t e=N e wR e c o r d s e t 'e s t a b e l eac o n e x o W i t hc n n _ t e s t e . P r o v i d e r=" P r o v i d e r = M i c r o s o f t . J e t . O L E D B . 4 . 0 ; " . C o n n e c t i o n S t r i n g=" D a t aS o u r c e = C : \ s t u d e n t s . m d b ; "

. O p e n E n dW i t h 'a b r eu mr e c o r d s e tu s a n d oom e t o d oe x e c u t e S e tr s _ t e s t e=c n n _ t e s t e . E x e c u t e ( " S E L E C TS t u d e n t I DF R O MS t u d e n t s " ) E n dS u b

Para encerrar vamos dar alguns exemplos de strings de conexes:: 1- Access ( sem usar DSN) - conexo ao banco de dados biblio.mdb , usurio Admin, sem senha:
D i mc o n nA sN e wA D O D B . C o n n e c t i o n D i ml s D S NA sS t r i n g l s D S N=" D r i v e r = { M i c r o s o f tA c c e s sD r i v e r( * . m d b ) } ; "&_ " D b q = c : \ p r o g r a mf i l e s \ d e v s t u d i o \ v b \ b i b l i o . m d b ; "&_ " U i d = A d m i n ;P w d = " c o n n . O p e nl s D S N

2- SQL Server ( sem usar DSN) - conexo ao banco de dados pubs, usurio sa , sem senha:
D i mc o n nA sN e wA D O D B . C o n n e c t i o n D i ml s D S NA sS t r i n g l s D S N=" d r i v e r = { S Q LS e r v e r } ; s e r v e r = m e u s e r v e r ; "&_ " d a t a b a s e = p u b s ; u i d = s a ; p w d = " c o n n . O p e nl s D S N

3- Oracle ( sem usar DSN) - usurio demo, senha demo:


D i mc o n nA sN e wA D O D B . C o n n e c t i o n D i ml s D S NA sS t r i n g l s D S N=" D r i v e r = { M i c r o s o f tO D B CD r i v e rf o rO r a c l e } ; "&_ " S e r v e r = O r a c l e S e r v e r . w o r l d ;U i d = d e m o ;P w d = d e m o " c o n n . O p e nl s D S N

retorna