ADO - Como usar o
objeto Connection ?
![]() |
Hoje vamos falar um pouco do objeto Connection da ADO, seus métodos e propriedades. |
|
O que é um objeto Connection ?
|
Quais o métodos e propriedades do objeto Connection ?
Métodos
| Método | Descrição |
| Open | Abre uma conexão com uma fonte de dados |
| Close | Fecha a conexão e todos os objetos dependentes dela. |
| Execute | Executa uma consulta , instrução SQL , stored procedures ou um comando específico do provedor |
| BeginTrans | Inicia uma nova Transação |
| CommiTrans | Salva qualquer alteração e encerra a transação atual. |
| RollBackTrans | Cancela qualquer alteração feita durante a transação atual e encerra a transação. |
Propriedades
| Propriedade | Descrição |
| ConnectionString | Contém a informação usada para estabelecer uma conexão com uma fonte de dados |
| ConnectionTimeout | Indica o tempo de espera durante a tentativa de uma conexão , antes de terminar e gerar um erro |
| CommandTimeout | Indica o tempo de espera durante a execução de um comando antes de terminar e gerar um erro |
| State | Indica se a conexão esta aberta, fechada ou em andamento |
| Provider | Informa o nome do provedor usado na conexão |
Como utilizar o objeto Connection para se conectar a uma base de dados ?
Para usar o objeto Connection basta informar uma string de conexão (connection string) que identifique a fonte de dados com a qual deseja trabalhar e a seguir acionar o método Open para efetivar a conexão.
A maneira mais fácil de abrir uma conexão é passar a informação sobre a string de conexão para o método Open. A propriedade State irá determinar se conexão foi alcançada retornando adStateOpen em caso positivo e adStateClosed caso a conexão não for ativada. Vejamos a seguir um exemplo de conexão com o SQL Server usando uma base de dados ODBC.
| Dim cnn as
ADODB.Connection Set cnn = New ADODB.Connection 'abrindo uma conexão usando um DSN configurado com o nome de Teste Cnn.Open "Teste" , "usuario", "" 'Verifica se a conexão foi efetivamente efetuada If cnn.State = adStateOpen then Msgbox " Conexão ativa " else MsgBox " Conexão inativa " End if Cnn.close 'Fecha a conexão |
O Código acima é utilizado para conexão com somente uma fonte de dados, mas, você pode criar um objeto Connection e configurar a propriedade ConnectionString antes de ativar o método Open permitindo assim a conexão com uma fonte de dados e posterior reutilização do objeto Connection para uma conexão com outra fonte de dados, e você pode também configurar outras propriedades do objeto Connection antes da conexão.( Ex: time-out, etc..) Vejamos:
| Dim cnn as
ADODB.Connection Set cnn = New ADODB.Connection 'abrindo uma conexão usando um DSN configurado com o nome de Teste Cnn.ConnectionString = DSN=Teste;UID=usuario;PWD=;" Cnn.ConnectionTimeout = 30 Cnn.Open 'Verifica se a conexão foi efetivamente efetuada If cnn.State = adStateOpen then Msgbox " Conexão ativa " else MsgBox " Conexão inativa " End if Cnn.close 'Fecha a conexão |
Como usar o objeto Connection para executar um comando ?
O método Execute é usado para enviar um comando(command) ( instrução SQL ou outro texto) para uma fonte de dados. Se a instrução retornar colunas então um objeto Recordset é criado. Vejamos o código para este serviço:
| Dim cnn as
ADODB.Connection Dim rs As ADODB.Recordset Set cnn = New ADODB.Connection 'abrindo uma conexão usando um DSN configurado com o nome de Teste Cnn.Open "Teste" , "usuario", "" 'Verifica se a conexão foi efetivamente efetuada If cnn.State = adStateOpen then Msgbox " Conexão ativa " else MsgBox " Conexão inativa " End if 'Cria um Recordset usando uma instrução SQL Set rs = cnn.Execute("Select * From authors") ' Mostra o primeiro registro MsgBox rs("au_fname") & " " & rs("au_lname") Cnn.close 'Fecha a conexão |
Lembre-se que o Recordset retornado via método Execute é somente leitura (read-only). Se voce precisar um Recordset atualizável deverá criar primeiro o objeto Recordset configurando-o com as propriedades desejadas e a seguir utilizar o método Open para abrir a consulta e retornar o tipo de cursor desejado.
No código a seguir estaremos passando a instrução Delete via método Execute para fonte de dados para excluir todos os autores cujo código 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 conexão usando um DSN configurado com o nome de Teste Cnn.Open "Teste" , "usuario", "" 'Verifica se a conexão foi efetivamente efetuada If cnn.State = adStateOpen then Msgbox " Conexão ativa " else MsgBox " Conexão inativa " End if 'Envia uma instrução 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 conexão |
A ADO possui somente o método Execute para executar instruções SQL . Neste exemplo a constante adExecuteNoRecords que a instrução SQL não irá gerar um Recordset, pois nenhuma coluna é retornada. Se a constante não for declarada a ADO irá criar um objeto Recordset.
Para finalizar iremos mostra um exemplo de como criar um Recordset usando o método 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.
Sub cmdConnect_Click()
' declara e instancia as variaveis objeto
Dim cnn_teste As Connection
Dim rs_teste As Recordset
Set cnn_teste= New Connection
Set rs_teste = New Recordset
' estabele a conexão
With cnn_teste
.Provider = "Provider=Microsoft.Jet.OLEDB.4.0;"
.ConnectionString = "Data Source=C:\students.mdb;"
.Open
End With
' abre um recordset usando o metodo execute
Set rs_teste = cnn_teste.Execute("SELECT StudentID FROM Students")
End Sub
|
Para encerrar vamos dar alguns exemplos de strings de conexões::
1- Access ( sem usar DSN) - conexão ao banco de dados biblio.mdb , usuário Admin, sem senha:
Dim conn As New ADODB.Connection
Dim lsDSN As String
lsDSN = "Driver={Microsoft Access Driver (*.mdb)};" & _
"Dbq=c:\program files\devstudio\vb\biblio.mdb;" & _
"Uid=Admin; Pwd="
conn.Open lsDSN
|
2- SQL Server ( sem usar DSN) - conexão ao banco de dados pubs, usuário sa , sem senha:
Dim conn As New ADODB.Connection
Dim lsDSN As String
lsDSN = "driver={SQL Server};server=meuserver;" & _
"database=pubs;uid=sa;pwd="
conn.Open lsDSN
|
3- Oracle ( sem usar DSN) - usuário demo, senha demo:
Dim conn As New ADODB.Connection
Dim lsDSN As String
lsDSN = "Driver={Microsoft ODBC Driver for Oracle};" & _
"Server=OracleServer.world; Uid=demo; Pwd=demo"
conn.Open lsDSN
|
Até o próximo artigo...
|
Veja os
Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique
e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ?
|
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências: