LDP mod 14 - Acesso a bases de dados

23
Módulo 14- Acesso a Bases de Dados no VB 6.0 Conceição Maroco / Rui Inácio 1

Transcript of LDP mod 14 - Acesso a bases de dados

Page 1: LDP   mod 14 - Acesso a bases de dados

Módulo 14- Acesso a Bases de Dados no VB 6.0

Conceição Maroco / Rui Inácio 1

Page 2: LDP   mod 14 - Acesso a bases de dados

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

Page 3: LDP   mod 14 - Acesso a bases de dados

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)

Page 4: LDP   mod 14 - Acesso a bases de dados

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.

Page 5: LDP   mod 14 - Acesso a bases de dados

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

Page 6: LDP   mod 14 - Acesso a bases de dados

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,..

Page 7: LDP   mod 14 - Acesso a bases de dados

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

Page 8: LDP   mod 14 - Acesso a bases de dados

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

Page 9: LDP   mod 14 - Acesso a bases de dados

Conceição Maroco / Rui Inácio 9

Page 10: LDP   mod 14 - Acesso a bases de dados

Conceição Maroco / Rui Inácio 10

Page 11: LDP   mod 14 - Acesso a bases de dados

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

Page 12: LDP   mod 14 - Acesso a bases de dados

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

Page 13: LDP   mod 14 - Acesso a bases de dados

Conceição Maroco / Rui Inácio 13

Page 14: LDP   mod 14 - Acesso a bases de dados

Connection Object

Recordset Object

Field Object

Command Object

Parameter Object

Error Object

Conceição Maroco / Rui Inácio 14

Page 15: LDP   mod 14 - Acesso a bases de dados

Conceição Maroco / Rui Inácio 15

Connection

RecordSet

Command

Field

Conexão activa

Ligação

Fields Collection

Page 16: LDP   mod 14 - Acesso a bases de dados

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

Page 17: LDP   mod 14 - Acesso a bases de dados

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

Page 18: LDP   mod 14 - Acesso a bases de dados

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

Page 19: LDP   mod 14 - Acesso a bases de dados

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

Page 20: LDP   mod 14 - Acesso a bases de dados

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

Page 21: LDP   mod 14 - Acesso a bases de dados

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

Page 22: LDP   mod 14 - Acesso a bases de dados

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

Page 23: LDP   mod 14 - Acesso a bases de dados

rst.Open “SELECT * FROM Fornecedores;”, conn

rst.Find = “CodForn = 1 ”

Print rst.Fields(2), rst.Fields(3)

Conceição Maroco / Rui Inácio 23