 ADO - Como usar o
objeto Connection ?
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 Facebook 
  
 Compartilhe no Twitter
  
Compartilhe no Twitter
 
Referências: