Post on 25-Jun-2015
Módulo 14- Acesso a Bases de Dados no VB 6.0
Conceição Maroco / Rui Inácio 1
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.
Conceição Maroco / Rui Inácio 2
Aplicação Cliente
Utilizador A
Aplicação Cliente
Utilizador B
Aplicação Cliente
Utilizador C
Gestão Base de dados
Front-end
Back-end
Conceição Maroco / Rui Inácio 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 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.
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
Conceição Maroco / Rui Inácio 6
Aplicação VB
ADO
OLE DB
ODBC
Dados SQLex: MS Access
(JET) , SQL Server,..
Dados não-SQLex: ficheiros de texto, folhas de
cálculo,..
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
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
Conceição Maroco / Rui Inácio 9
Conceição Maroco / Rui Inácio 10
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
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
Conceição Maroco / Rui Inácio 13
Connection Object
Recordset Object
Field Object
Command Object
Parameter Object
Error Object
Conceição Maroco / Rui Inácio 14
Conceição Maroco / Rui Inácio 15
Connection
RecordSet
Command
Field
Conexão activa
Ligação
Fields Collection
Connection String
◦ Provider (exemplo de Provider = Microsoft.Jet.OLEDB.4.0;)
◦ Data Source (ex. de Data Source = C:\db\projemp.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
Conceição Maroco / Rui Inácio 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 duranteuma transacção
Conceição Maroco / Rui Inácio 18
Connection Object Properties
Descrição
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 umainstruçã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
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
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
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
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
rst.Open “SELECT * FROM Fornecedores;”, conn
rst.Find = “CodForn = 1 ”
Print rst.Fields(2), rst.Fields(3)
Conceição Maroco / Rui Inácio 23