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: