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 ?

  1. Um objeto Connection representa uma conexão física 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 conexão com a fonte de dados.
  4. A propriedade State do objeto Connection nos dirá se a conexão foi um sucesso ou se falhou.
  5. Podemos enviar instruções SQL ou rodar stored procedures usando o método Execute do objeto Connection.
  6. Se a instrução que enviamos ao objeto Connection retornar um conjunto de registros um objeto Recordset será criado automaticamente.

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:


José Carlos Macoratti