O documento discute acesso a bases de dados no VB 6.0, cobrindo tópicos como objetos de dados DAO e ADO, motores de banco de dados como Jet e ODBC, e componentes como controles de dados e bibliotecas ADO. Ele também explica conceitos como conexões, conjuntos de registros e campos, além de fornecer exemplos de código para abrir conexões e conjuntos de registros e acessar dados.
1. Módulo 14- Acesso a Bases de Dados no VB 6.0
Conceição Maroco / Rui Inácio 1
2. Front-end – Aplicação que operamos e que
interage com o back-end (user-friendly).
Back-end – Base de dados, local onde a
informação fica armazenada.
Gestão Base de dados
Back-end
Front-end
Aplicação Aplicação Aplicação
Cliente Cliente Cliente
Utilizador A Utilizador B Utilizador C
Conceição Maroco / Rui Inácio 2
3. 2 aproximações com Objectos de Dados.
◦ DAO (Data Access Objects)
Estratégia de acesso original (até ao VB 6.0)
Extremamente ligado ao MS Access
◦ ADO (ActiveX Data Objects)
Uma nova aproximação (a partir do VB 6.0)
Mais genérica
Também utilizada com ASP (VB Script active server
pages)
Conceição Maroco / Rui Inácio 3
4. Jet Database Engine: Motor de base de dados do VB
para MS Access e bases de dados ISAM (Indexed
Sequential Access Method)
ODBC (Open Database Connectivity): Interface para
bases de dados relacionais SQL.
RDO (Remote Data Objects): Componente original
para aceder a bases de dados numa rede
OLE DB (Object Linking & Embedding Databases):
nova interface de acesso a bases de dados SQL e
não-SQL.
Conceição Maroco / Rui Inácio 4
5. Motores de bases de dados: Executam as
operações de criação, inserção, alteração,
eliminação, … nas bases de dados.
Conceição Maroco / Rui Inácio 5
6. Aplicação VB
ADO
OLE DB
ODBC
Dados SQL Dados não-SQL
ex: MS Access ex: ficheiros de
(JET) , SQL texto, folhas de
Server,.. cálculo,..
Conceição Maroco / Rui Inácio 6
7. Baseados em Controlos de dados
◦ Nenhuma programação (ou pouca)
◦ Associada a algumas formas de controlos (como
DataGrid, DataList, etc)
◦ Visão dos dados é limitada
Baseada na programação
◦ Utiliza o objecto Connection (ADO)
◦ Permite um melhor controlo dos dados
Conceição Maroco / Rui Inácio 7
8. Componentes (Project/Components)
◦ Microsoft ADO Data Control 6.0 (OLEDB)
◦ Microsoft Data Grid Control 6.0 (OLEDB)
◦ Microsoft Data List Controls 6.0 (OLEDB)
DataList
DataCombo
Bibliotecas (Project/References)
◦ Microsoft ActiveX Data Objects 2.0 Library (ou mais
recente possível)
Conceição Maroco / Rui Inácio 8
11. Data Control Object (Adodc1)
◦ Connection String: Carregar botão Build, indicar o
motor da base de dados (JET) e escolher a localização
da base de dados. Testar a ligação.
◦ Record Source: escrever um expressão SQL (SELECT *
FROM Fornecedores;) ou escolher a tabela
Fornecedores
◦ Command Type: 1-adCmdText para expressão SQL
query ou 2-adCmdTable para tabela/consulta
Textbox (Text1)
◦ Data Source - Adodc1
◦ Data Field - NomeForn
Conceição Maroco / Rui Inácio 11
12. Requer o objecto ADO library
(Project|References)
Requer a criação, configuração e iniciação
das variáveis:
◦ Objecto Connection (Connection String)
◦ Objecto Recordset (Expressão/Tabela SQL)
Processamento do objecto Recordset
Término de Recordset e Connection
Conceição Maroco / Rui Inácio 12
16. Connection String
◦ Provider (exemplo de Provider =
Microsoft.Jet.OLEDB.4.0;)
◦ Data Source (ex. de Data Source =
C:dbprojemp.mdb;)
◦ Username & Password (ex. de User ID = Admin;
Password = ;)
Dim <connection variable> As ADODB.Connection
Set <connection variable> = New ADODB.Connection
<connection variable>.Open ConnectionString
Conceição Maroco / Rui Inácio 16
17. Connection Object Methods Descrição
Open Abre uma ligação à base de dados
Close Fecha a ligação à base de dados
Execute Executa uma instrução SQL
BeginTrans Começa uma transacção de dados
CommitTrans Faz o commit da transacção
RollBackTrans Cancela todas as operações durante
uma transacção
Conceição Maroco / Rui Inácio 17
18. Connection Object Descrição
Properties
ConnectionString Contêm a informação necessária à ligação
ConnectionTimeOut Tempo máximo da ligação
CommandTimeOut Tempo máximo para execução de uma
instrução.
State Indica o estado da ligação: ligado ou desligado
Provider Indica o fornecedor do serviço.
Version Versão
CursorLocation Localização do cursor
Conceição Maroco / Rui Inácio 18
19. Array bidimensional que contêm uma tabela/resultado de SQL
ADO permite a utilização de 4 tipos diferentes de cursores:
◦ Dynamic Cursor (CursorType = adOpenDynamic)
Percorre livremente um RecordSet (avanços, recúos, BOF, EOF)
◦ Keyset Cursor (CursorType = adOpenKeyset)
Semelhante ao Dynamic Cursor, mas não permite alterações
em registos utilizados por outros utilizadores (lento)
◦ Static Cursor (CursorType = adOpenStatic)
Não permite visualizar as alterações introduzidas por outros
utilizadores (mais rápido)
◦ Forward Only Cursor (CursorType = adOpenForwardOnly)
Como o static cursor mas não autoriza recúos no recordset (o
mais rápido)
Conceição Maroco / Rui Inácio 19
20. Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
Os métodos principais do RecordSet:
◦ AddNew, Delete, Update
◦ Open, Close, Cancel
rst.Open <SQL query/Table>, <connection variable>, <LockType>
Exemplo: rst.Open “Fornecedores”, adoconn
◦ Move, MoveFirst, MoveNext, MovePrevious, MoveLast
◦ Seek – procura o índice introduzido e desloca-se para a linha
pretendida
◦ Find – procura a linha com o valor pedido (o seek é mais rápido
mas implica a utilização de um índice)
Conceição Maroco / Rui Inácio 20
21. O objecto Fields é um Collection – significa que
possui um conjunto de valores (neste caso,
Field)
Exemplos:
Dim fld As Field
rst.Open “Forncedores” devolve todos os registos da tabela
Fornecedores para o rst
Set fld = rst.Fields(1) atribui o 2º recordset field (NomeForn) para fld
Debug.Print fld.Name faz print do nome do Campo na janela Immediate
Debug.Print rst.Fields.(“CodForn”) faz print do registo actual do
recordSet para o campo CodForn
Debug.Print rst.Fields.Count Faz print do número de campos presentes
no RecordSet rst
Conceição Maroco / Rui Inácio 21
22. rst.Open “SELECT * FROM Fornecedores;”, conn
Print “CodForn”, “NomeForn”, “Endereço”,
“Telefone”
Do Until rst.EOF
Print rst(0), rst(1), rst(2), rst(3)
rst.MoveNext
Loop
rst.Close
conn.Close
Conceição Maroco / Rui Inácio 22