Você está na página 1de 6

VB - Programao com Banco de dados : DAO, ADO, ODBC (reviso)

Eu sei que tem muita gente que ainda usa o Visual Basic 6 e que existem muitos sistemas desenvolvidos nesta linguagem que vo precisar de manuteno por muito tempo. Lembrar disso me faz no abandonar totalmente a essa verso anterior do VB .NET. No h como negar que o VB .NET muito superior em recursos alm de contar com uma ferramenta gratuita a disposio de quem desejar aprender a linguagem: basta baixar a verso Express do Visual Basic .NET. Se voc ainda no tem baixe neste link: http://www.microsoft.com/visualstudio/enus/products/2010-editions/visual-basic-express Se voc desejar porta a sua verso para a lingua portuguesa baixe o pacote aqui: http://www.microsoft.com/downloads/details.aspx?FamilyID=7ee0d8a7-32fb-407d-a010da3a7d93fc2f&displaylang=pt-br Se voc ainda usa ou pretende usar a linguagem Visual Basic pode consultar a seo Visual Basic do site Macoratti.net onde encontrar centenas de artigos que o ajudaro no seu dia a dia. Hoje eu vou mostrar novamente os conceitos bsicos para programao com banco de dados usando o Visual Basic 6. um resumo que mostra como se conectar e manipular um banco de dados usando o bom e velho Visual Basic ou VB. (Os exemplos mostrados aqui tambm funcionaro com a linguagem VBA com pequenos ajustes) Existem vrias maneiras de se conectar a um banco de dados (por exemplo, Access, SQL Server, etc.): atravs de controles de dados vinculados, DAO ou ADO. Em geral, se voc pretende ou gosta de ter mais controles sobre o que esta acontecendo o aconselhvel usar DAO ou ADO e no site voc tem dezenas de artigos que mostram como fazer isso. Vamos ento ao resumo...

Introduo
H vrias maneiras para abrir um objeto Connection da ADO: Definir a propriedade ConnectionString para string de conexo vlida e , a seguir, chamar o mtodo Open().(Este seqncia de conexo depende do provedor). Passar uma string de conexo vlida o primeiro argumento do mtodo Open(); Passar um objeto comando vlido para o primeiro argumento do mtodo Open do

Recordset; Passar o nome da fonte dados ODBC e, opcionalmente, a identificao de usurio e a senha para o mtodo Open() do objeto de conexo; H trs maneiras de abrir um objeto Recordset da ADO: Abrir o Recordset via mtodo Connection.Execute() Abrir o Recordset via mtodo Command.Execute() Abrir o objeto Recordset sem um objeto Connection ou Commad e passar uma cadeia de conexo vlida para o segundo argumento do mtodo Recordset.Open().

1- Definindo variveis bsicas


Para comear, voc precisa criar algumas variveis dos seguintes tipos : ADODB.Connection - Usada se voc estiver usando processos de transao; DataBase - Usada para se conectar ao banco de dados; ADODB.Recordset - Esta a varivel usada a nvel de tabela/consulta ADODB.Field - Isso nos permite obter informaes sobre os campos

2- Conexo com banco de dados


Usando o VB podemos nos conectar usando o Jet ou o ODBC. O recomendado usar o JET pois o ODBC mais lento. Podemos tambm escolher entre as tecnologias ADO ou DAO. Embora a primeira seja mais moderna a DAO em alguns casos tem um desempenho melhor. Dim ws as Workspace Dim db as Database Set ws=DBEngine.Workspaces(0) set db=ws.OpenDatabase((nome caminho do banco de dados)) Dim ws as Workspace dim db as database dim strConnection as string set ws=DBEngine.Workspaces(0) let strConnection= "ODBC;DSN=" & nomeBancoDados & ";UID=" & nomUsuario & ";PWD=" & senha set db=ws.OpenDatabase("", False, False, strConnection) Dim ad as ADODB.Connection set ad=New ADODB.Connection DAO ODBC

DAO JET

Let ad.ConnectionString= "ODBC;DSN=" & nomeBancoDados & ";UID=" & nomUsuario & ";PWD=" & senha ad.Open

ADO

3- Abrindo uma Tabela/Consulta ou Viso(View)


Dim rs as recordset set rs=db.openrecordset(nome da tabela ou comando SQL) do while not rs.eof 'Ponha aqui o cdigo para tratar a informao. 'A informao do campo pode ser acessado pelo nome do campo intID=rs!IDField 'Ou pelo nmero do ndice na relao de campos(iniciando com 0) intString=rs.Field(1) 'move-se para o prximo registro rs.movenext loop dim ar as ADODB.recordset set rs=new adodb.recordset rs.open (instruo SQL) do while not rs.EOF 'Ponha aqui o cdigo para tratar a informao. 'A informao do campo pode ser acessado pelo nome do campo intID=rs!IDField 'Ou pelo nmero do ndice na relao de campos(iniciando com 0) intString=rs.Field(1).value 'move-se para o prximo registro rs.movenext loop

DAO

ADO

4- Alterando um registro
- Para o editar/adicionar/excluir um registro podemos usar instrues SQL ou comandos diretos. - Tanto a tecnologia DAO como a ADO podem usar o mtodo Execute para fazer atualizaes via SQL. - Podemos ainda usar procedimentos armazenados ou stored procedures que tem um desempenho melhor.

a- Alterando um registro - Incluso usando SQL

Dim rs as recordset set rs=db.openrecordset((nome da tabela ou SQL)) rs.execute "INSERT INTO nome_da_tabela(ID,Nome) VALUES (10,'Macoratti')" dim rs as ADODB.recordset DAO

set rs=new adodb.recordset ADO rs.open (string de conexo com o banco de dados) rs.execute "INSERT INTO nome_da_tabela(ID,Nome) VALUES (10,'Macoratti')" Estamos incluindo os campos ID e Nome.

b- Alterando um registro - Incluso


Dim rs as recordset set rs=db.openrecordset((nome da tabela ou SQL)) rs.addnew DAO rs!ID=intID rs!Nome=strNome rs.update Dim ar as ADODB.recordset set ar=new adodb.recordset ar.open (string de conexo com o banco de dados) ADO ar.addnew ar!ID=intID ar!Nome=strNome ar.update Neste exemplos aps abrir um recordset verificamos se h um registro que satisfaz os critrios no SQL aberto. Se no ele existir criado um novo registro usando a instruo addnew e em seguida a instruo update.

c- Alterando um registro - Editar


Dim rs as recordset set rs=db.openrecordset("SELECT * FROM nome_da_tabela WHERE ID=10") if rs.eof then rs.addnew else DAO rs.edit end if rs!ID=intID

rs!Nome=strNome rs.update dim ar as ADODB.recordset set ar=new adodb.recordset ar.open "SELECT * FROM nome_da_tabela WHERE ID=10" if ar.eof then ar.addnew else ar.edit end if ar!ID=intID ar!Nome=strNome ar.update

ADO

d- Alterando um registro - Excluso


Dim rs as recordset set rs=db.openrecordset("SELECT * FROM nome_da_tabela WHERE ID=10") DAO if not rs.eof then rs.delete end if Dim ar as ADODB.recordset set ar=new adodb.recordset ar.open "SELECT * FROM nome_da_tabela WHERE ID=10" if not ar.eof then ar.delete end if Recomendao final : Ao abrir um objeto voc deve sempre fechar e liberar o recurso usado:

ADO

rs.close set rs=nothing 1Pedro 1:13 Portanto, cingindo os lombos do vosso entendimento, sede sbrios, e esperai inteiramente na graa que se vos oferece na revelao de Jesus Cristo. 1Pedro 1:14 Como filhos obedientes, no vos conformeis s concupiscncias que antes tnheis na vossa ignorncia; 1Pedro 1:15 mas, como santo aquele que vos chamou, sede vs tambm santos em todo o vosso procedimento;

Referncias: Seo VB .NET do Site Macoratti.net Super DVD .NET - A sua porta de entrada na plataforma .NET Super DVD Vdeo Aulas - Vdeo Aula sobre VB .NET, ASP .NET e C# Acessando uma base de dados Access 2000 com DAO. DAO x ADO tabela de referncia. ADO ou DAO - Tira-Teima Acesso a base de dados via D.A.O - Data Access ... - Macoratti.net Migrando da DAO para a ADO - Macoratti.net Recordsets - Macoratti.net ADO - introduo. - Macoratti.net ADO - Localizando informaes - Macoratti.net Usando ADO - 1) Conectando-se e Navegando em ... - Macoratti.net ADO - Objeto Connection - Macoratti.net ADO - Melhorando o desempenho de sua aplicao - Macoratti.net Apostila compilada com exemplos dos artigos do site Macoratti .net - (269 pginas) Apostila - Acessando um banco de dados via DAO - VB6
Jos Carlos Macoratti