Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de...

73
Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP

Transcript of Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de...

Page 1: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Banco de Dados e Acesso a Dados

Prof.Dr. Antonio Geraldo da Rocha Vidal

EAD-5881 - Tecnologia de Informática

FEA/USP

Page 2: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados Databases

Virtualmente todos os aplicativos interessantes exigem um armazenamento de dados estruturado e persistente.

E-Commerce: registrar um pedido, entregar um pedido etc. Recursos Humanos: dados de pessoal, salários e benefícios. Vendas: pedidos, produtos, cobranças e pagamentos. CRM: dados de e sobre clientes. Pesquisas: dados primários, dados secundários, resultados etc.

As necessidades de armazenamento de dados variam de acordo com o tipo de aplicativo:

Processamento de Transações (Transaction Processing - OLTP) Processamento Analítico (Business Intelligence/Data Warehouse - OLAP Web Sites e Enterprise Portals Etc.

Page 3: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados Requisitos

Permitir armazenar, consultar e modificar dados Permitir mover, copiar e transformar dados Permitir executar backup e recuperação de dados Garantir a integridade dos dados Ser “escalável” e estar sempre disponível:

Atender a um grande número de usuários Armazenar e processar enormes volumes de dados Possuir alto desempenho com baixo tempo de resposta

Ser seguro Permitir o desenvolvimento de aplicativos

Page 4: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Baseado em arquivos Hierárquico Rede Relacional (RDBMS) Orientado a Objetos XML (eXtensible Markup Language)

Banco de DadosEvolução da Tecnologia

Page 5: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados RelacionaisTabelas

Tabela (relação, entidade) Uma coleção de dados sobre

uma coisa específica Organizada em linhas e colunas

Coluna (atributo, campo) Descreve parte de uma entidade (p.ex. Nome) Tem um tipo de dado (p.ex. integer, character, binary) Pode ser nulo

Linha (tupla, registro) Uma única instância de dados em uma tabela Cada linha é única

ID Nome SobreNome

1 José Silva

2 Maria Santos

Page 6: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados Relacionais Relacionando Dados

As tabelas podem ser relacionadas através de dados chave: chave-primária x chave-estrangeira (p.ex. um livro possui um autor) Chave-primária (primary-key ou PK)

Garante a unicidade de uma linha Pode ser composta por uma ou mais colunas Assegura a integridade da entidade

Chave-estrangeira (foreign-key ou FK) Estabelece um relacionamento lógico entre tabelas Uma ou mais colunas de uma tabela que coincidem com a

chave-primária de outra tabela Integridade referencial

Page 7: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados Relacionais Relacionando Dados

O diagrama, esquema ou modelo relacional mostra as tabelas, colunas, chaves-primárias, chaves-estrangeiras e relacionamentos de um Banco de Dados.

1

∞N

Modelo de Dados

Livro

IDLivro

IDAutor

Título

Gênero

Autor

IDAutor

Nome

Sobrenome

Page 8: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados Relacionais Relacionando Dados

Chave-primária PK

Chave-estrangeira FK

Tabela Livro

Tabela Autor

PK/FK Relacionamento

IDAutor Nome Sobrenome

1 José Silva

2 Maria Santos

IDLivro IDAutor Título Gênero

1 2 Minha vida como DBA Autobiografia

2 1 Database Handbook Referência

Page 9: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Um-para-Um (1:1) Uma linha da tabela X casa com uma linha da tabela Y Um Livro tem no máximo e no mínimo um Registro ISBN

Um-para-Muitos (1:M) Uma linha na tabela X casa com 0 ou + linhas na tabela Y Uma Editora publica um ou mais Livros

Muitos-para-Muitos (M:N) 1 ou + linhas na tabela X casam com 1 ou + linhas na tabela Y Um Autor escreve um ou mais Livros;

Um Livro é escrito por um ou mais Autores.

Bancos de Dados RelacionaisTipos de Relacionamentos

AutorM N

Livro

Editora1 M

Livro

Livro1 1

Registro ISBN

Page 10: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados RelacionaisRelacionamento M:N

Mais complexo Resulta em tabelas muito grandes ( com dados

repetidos) Difícil de assegurar a integridade de dados Solução: criar uma terceira tabela

A terceira tabela contém a chave-primária das duas tabelas originais em uma chave composta.

Os dados são repetidos na terceira tabela, mas não nas duas tabelas originais.

Autor LivroMM Autoria1 1

Page 11: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados Relacionais Relacionamentos M:N

Os dados são duplicados aqui

Page 12: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados Relacionais Normalização/Desnormalização

Normalização O processo de dividir poucas tabelas grandes em muitas tabelas

pequenas Meta: minimizar redundância de dados, maximizar precisão Melhora o desempenho para atualizações Desejável em aplicações transacionais

Desnormalização O processo de combinar muitas tabelas pequenas em poucas

tabelas grandes. Meta: melhorar o desempenho Introduz redundância de dados Melhora o desempenho para consultas Desejável em aplicações analíticas e data warehouse

Page 13: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados Relacionais Junções

Uma junção é um modo de combinar dados de múltiplas tabelas, normalmente utilizando os relacionamentos entre chaves-primárias e chaves-estrangeiras.

$25

$8

$5

$10

Custo

AngloDVD

Anglo

PontualVHS

Game

Pontual

Distrib.

CD

Produto

Tabela Produto

Anglo

Pontual

Distrib.

José P.

Maria A.

Contato

MG

SP

Estado

Tabela Distribuidor

Page 14: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados Relacionais Junções

O resultado de uma junção natural.

Maria A.SPPontual$10CD

Maria A.SPPontual$5VHS

Anglo

Anglo

Distrib.

MG

MG

Estado

José P.

José P.

Contato

$25

$8

Custo

DVD

Game

Produto

Page 15: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados Relacionais Structured Query Language - SQL

Linguagem padrão para acesso a um banco de dados relacional, padronizada pelo American National Standards Institute (ANSI); SQL-92

Aberta, mas não realmente: As funções mais comuns são geralmente as mesmas

entre os diversos produtos existentes. A maioria dos produtos têm extensões proprietárias.

Subconjuntos da SQL Data Definition Language (DDL) Data Manipulation Language (DML) Data Control Language (DCL)

Page 16: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados Relacionais DDL Exemplos

Usada para criar e modificar objetos de banco de dados.CREATE DATABASE Livraria

CREATE TABLE Livro( LivroID INT IDENTITY(1,1) PRIMARY KEY, Titulo VARCHAR(40) NOT NULL, DatPub DATE NOT NULL, Descricao VARCHAR(80), Genero INT NOT NULL)

Page 17: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados Relacionais DML Exemplos

Selecionar dados a serem consultados.SELECT * FROM Autor

SELECT AutorID, Nome, SobreNome FROM Autor

SELECT AutorID, Nome, SobreNome, Telefone FROM Autor WHERE Cidade = ‘São Paulo’

SELECT Nome, SobreNome, Telefone FROM Autor WHERE AutorID = 249

Page 18: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados Relacionais DML Exemplos

INSERT INTO Livro (Titulo, DatPub, Descricao, Genero)VALUES (‘Projeto de Banco de Dados’, GETDATE(), ‘Como construir um Banco de Dados’, 3)

UPDATE Autor SET Telefone = ‘3091-1234’ WHERE AutorID = 5

DELETE FROM Autor WHERE AutorID = 5

Inserir, atualizar e excluir dados.

Page 19: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados Relacionais DCL Exemplos

Configura opções de segurança em objetos de banco de dados.

GRANT INSERT, UPDATE, DELETE ON Autor TO Maria, José

REVOKE CREATE TABLE FROM José

DENY ALL ON Autor, Livro TO Salete

Page 20: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados Relacionais Views (Visões)

Uma view é uma tabela virtual. Abstrai as estruturas das tabelas relacionadas. Abstrai uma consulta possivelmente complexa. Fornece abstração quanto à segurança. No MS SQL Server, uma view pode ser:

Indexada Atualizada (alteração e inserção de dados)

Page 21: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados Relacionais Exemplo de Definição de View

CREATE VIEW Pedidos AS SELECT p.PedidoID, c.Nome FROM Cliente c INNER JOIN Pedido p

ON c.ClienteID = p.ClienteID ORDER BY p.PedidoID

Page 22: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados Relacionais Exemplo de Utilização de Views

SELECT * FROM Pedidos WHERE Nome = 'Meu Melhor Cliente'

PedidoID Nome

101 Meu Melhor Cliente

137 Meu Melhor Cliente

Page 23: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados Relacionais Stored Procedures(Procedimentos Armazenados)

Um grupo de comandos SQL que é armazenado e executado dentro do banco de dados.

Não faz parte do SQL padronizado. Fornece grande desempenho. Pode controlar acesso a dados. Pode aceitar parâmetros. Pode retornar diversos tipos de dados:

Parâmetros de saída Valores de retorno Conjuntos de dados de retorno

Page 24: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados Relacionais Stored Procedure

CREATE PROCEDURE HistPedidos @ClienteID nchar(5)AS SELECT NomeProduto, Total=SUM(Quantidade) FROM Produto P, [Itens Pedidos] IP, Pedido P, Cliente C WHERE C.ClienteID = @ClienteID AND C.ClienteID = P.ClienteID AND P.PedidoID = IP.PedidoID AND IP.ProdutoID = P.ProdutoID GROUP BY NomeProduto

Page 25: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados Relacionais Stored Procedure

exec HistPedidos ‘ACNIELSEN'

NomeProduto Total

Papel A4 6

Cartucho HP 692C 21... ...

Page 26: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados Relacionais Stored Procedure

Use o comando RETURN para retornar o status 0 é o padrão no MS SQL Server Só pode ser numérico

Use parâmetros OUTPUT para retornar resultados

RETURN 1

CREATE PROCEDURE MinhaProcedure @ValRetorno INT OUTPUT...SELECT @ValRetorno = NomeColuna FROM Tabela

Page 27: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados Relacionais Triggers (Gatilhos)

Como as stored procedures, triggers são conjuntos de comandos SQL que são armazenados e executados dentro do banco de dados.

Porém, não são diretamente chamados por um usuário. São executadas quando uma determinada modificação

de dados ocorrer (INSERT, UPDATE ou DELETE) Garante a execução de regras de negócio. FOR AFTER: a trigger é executada depois que a ação de

atualização especificada for completada. FOR INSTEAD OF: a trigger é executada no lugar da

ação de atualização especificada.

Page 28: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados Relacionais Transações

Transação: uma seqüência de comandos SQL que constitua uma unidade lógica de trabalho.

Deve aderir às propriedades ACID: Atômica: todos os comandos são executados com

sucesso ou todos falham. Consistente: deve deixar os dados em um estado

consistente quando completada. Isolada: não pode ver as modificações feitas por

outras transações simultâneas. Durável: deve ser permanente quando completada,

até no caso de queda do sistema.

Page 29: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bancos de Dados Relacionais Concorrência

Níveis de isolamento Read Uncommitted Read Committed Repeatable Read Serializable Tradeoffs (concorrência vs. integridade de dados)

Bloqueios Asseguram a integridade de transações e a

consistência do banco de dados. Evitam que os usuários vejam “dados fantasmas”. Podem resultar em deadlocks (paralisações).

Page 30: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Acesso a DadosIntrodução

ODBC (Open Database Connectivity) Interoperabilidade para vários sistemas gerenciadores de banco

de dados (DBMS). API largamente aceita. Usa SQL como linguagem de acesso a dados.

DAO (Data Access Objects) Interface de programação para bancos de dados JET/ISAM. Usa automação (ActiveX, OLE automation).

RDO (Remote Data Objects) Versão mais sofisticada e otimizada do ODBC. Desenvolvido especialmente para bancos de dados

cliente/servidor.

Page 31: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Acesso a DadosIntrodução

OLE DB Amplo acesso a dados, relacionais e outros. Construído através da tecnologia COM Não restrito à SQL para a recuperação de dados Pode utilizar drives ODBC. Interface de baixo-nível (C++).

ADO (ActiveX Data Objects) Interface simples, orientada a objetos e baseada em

componentes. Fornece um modelo de programação para o OLE DB

acessível fora do C++.

Page 32: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

ADO TradicionalEstrutura de Acesso

ADO

ODBC Provider Simple Provider Native Provider

OLE DB Provider

ODBC

ODBC Driver

TextFile

Database Database

OLE DB Provider

Mainframe

OLE DB

Aplicação

Page 33: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

ADO TradicionalCaracterísticas

ADO foi projetado através de um modelo conectado, firmemente acoplado. Apropriado para arquiteturas cliente/servidor.

Principalmente relacional (XML é hierárquico). Porém, o projeto dos objetos não foi bem

definido: Há muitas formas para se fazer a mesma coisa. Os objetos tentam fazer coisas demais.

Não foi originalmente projetado para trabalhar em ambiente distribuído, de múltiplas camadas.

Page 34: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

ADO.NETMetas do ADO.NET

Projeto mais bem acabado. Altamente escalável através de um modelo

desconectado e robusto. Rico suporte a XML (hierárquico além do

relacional). Acesso de dados sobre HTTP. Mantém o modelo de programação do ADO. Mantém o ADO disponível via interoperabilidade

.NET vs. COM.

Page 35: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

ADO.NETProvedores

Combina ADO e OLEDB em uma só camada. Cada provedor contém um conjunto de classes

que implementa interfaces comuns. Implementações de provimento gerenciável:

ADO: fornece acesso a qualquer fonte de dados compatível com OLE DB.

SQL Server: fornece desempenho otimizado quando for usado o MS SQL Server ou o Oracle.

Exchange: recupera e atualiza dados no Microsoft Exchange.

Page 36: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

SQL Managed Provider

SQL ServerDatabase

ADO.NETProvedores Gerenciáveis

ADO.NET

ADO Managed Provider

OLE DB Provider

Database

Aplicação

Page 37: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

ADO.NETEstilos de Acesso a Dados

Somente-para-frente, somente-leitura: A aplicação envia uma consulta e depois lê e

processa os resultados. Cursor tipo “mangueira” ou “duto” de comunicação Objeto DataReader

Desconectado: A aplicação envia uma consulta e depois recupera e

armazena os resultados para processamento. Minimiza tempo conectado ao banco de dados. Objeto DataSet

Page 38: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

ADO.NETLigações de Dados (Data Binding)

Componente chave de formulários Web. Uso flexível e fácil:

Liga ou anexa uma propriedade de um controle a uma informação em qualquer tipo de fonte de dados.

Fornece controle sobre como os dados vêm e voltam. Controles simples para exibir um único valor. Controles complexos para exibir estruturas de dados.

<asp:Label runat=server Text='<%# Pedidos(0).Nome %>'/>

Page 39: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET IDbConnection Interface

Cria uma conexão única com uma fonte de dados (data source).

Implementada pelas classes SqlDbConnection e OleDbConnection

Funcionalidade: Abre e fecha conexões Inicia transações

A classe IDbTransaction fornece métodos Commit e Rollback

Usada em conjunto com objetos IDbCommand e IDataAdapter.

Propriedades adicionais, métodos e coleções dependem do provedor de dados.

Page 40: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET IDbCommand Interface

Representa um comando a ser enviado para a fonte de dados (data source).

Normalmente, mas não necessariamente em SQL. Implementado pelas classes OleDbCommand e SqlCommand. Funcionalidade:

Define o comando a ser executado Executa o comando Passa e recupera parâmetros Cria uma versão compilada do comando ExecuteReader retorna linhas ExecuteNonQuery não retorna nada ExecuteScalar retorna um único valor

Propriedades adicionais, métodos e coleções dependem do provedor de dados.

Page 41: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET IDataReader Interface

Somente para frente (forward-only), somente leitura (read-only) acesso tipo “mangueira” ou “duto” a uma série de dados.

Implementado pelas classes SqlDataReader e OleDbDataReader.

Criado através do método ExecuteReader da classe IDbCommand.

Operações associadas com o objeto IDbConnection são desabilitadas até que o leitor seja fechado.

Page 42: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET DataReader Exemplo

string sConnString = “Provider=SQLOLEDB.1;” + “User ID=sa;Initial Catalog=MeuBanco;” + “Data Source=MeuServidor”;

OleDbConnection sqlCon = new OleDbConnection(sConnString);sqlCon.Open();string sQueryString = “SELECT NomeCliente FROM Cliente”;OleDbCommand sqlCmd = new OleDbCommand(sQueryString, sqlCcon);OleDbDataReader sqlReader = sqlCmd.ExecuteReader();while (sqlReader.Read()) { Console.WriteLine(sqlReader.GetString(0));}sqlReader.Close();sqlCon.Close();

Page 43: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET Demonstração DataReader

Page 44: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET System.Data.OleDb Namespace

Provedor gerenciado para uso com provedores de dados OLEDB SQLOLEDB (SQL Server) – usa System.Data.SQL MSDAORA (Oracle) JOLT (Jet) OLEDB para provedores ODBC

Classes OleDbConnection, OleDbCommand e OleDbDataReader

Classes para tratamento de erros Classes para pool de conexões

Page 45: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET Demonstração OleDb Data Access

Page 46: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET System.Data.SqlClient Namespace

Provedor gerenciado nativo para o SQL Server Construído com TDS (Tabular Data Stream)

para alto desempenho com o SQL Server Classes SqlConnection, SqlCommand e SqlDataReader.

Classes para : Tratamento de erros Pool de conexões (implicitamente habilitadas por

definição) System.Data.SqlTypes fornece classes para

tipos de dados nativos do SQL Server.

Page 47: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET Demonstração Stored Procedure

Page 48: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET System.Data Namespace

Contém os principais classes do ADO.NET. O DataSet desconectado é sua classe central. Suporta todos os tipos de aplicativos:

Internet ASP.NET (C#, VB.NET e JavaScript) XML

Windows C# VB.NET

Page 49: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET System.Data Namespace (cont.)

Contém classes usadas por ou derivadas de provedores gerenciados: IDbConnection IDbCommand IDbDataReader

Page 50: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET DataSet

Uma coleção de tabelas Não possui conhecimento da fonte de dados Mantém todos os relacionamentos entre as tabelas Modelo de programação rico (possui objetos para

tabelas, colunas, relacionamentos, e assim por diante) Lembra-se do estado original e atual dos dados Pode modificar dinamicamente dados e metadados O formato para serialização nativo é o XML Localizada no pacote System.Data

Page 51: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET DataSet

DataSet

DataTable

DataRelation

DataRow

DataColumn

Page 52: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET Demonstração Atualização via DataSet

Page 53: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET DataTable

Objeto na memória representando uma tabela Colunas Linhas

Esquema definido por coleção de colunas A integridade de dados é provida através de

objetos Constraint Eventos públicos:

Modificar / excluir linhas (registros) Modificar colunas

Page 54: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET DataColumn

Bloco de construção fundamental de um esquema DataTable (contido na coleção de colunas).

Define que tipo de dados pode ser aceito (via propriedade DataType).

Outras propriedades importantes incluem AllowNull, Unique, e ReadOnly.

Pode conter Constraints (coleção na DataTable).

Pode conter Relações (coleção no DataSet).

Page 55: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET DataRow

Representa dados em uma DataTable (contida em coleção de linhas).

Segue o esquema definido por objetos DataColumns.

Possui propriedades para determinar o estado das linhas (por exemplo, nova, alterada, excluída, e assim por diante).

Todas as adições e modificações são atualizadas (“committed”) através do método AcceptChanges do objeto DataTable.

Page 56: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET DataRelation

Relaciona duas DataTables via DataColumns.

O valor DataType de ambas DataColumns deve ser idêntico.

Atualizações podem ser cascateadas para DataTables filhas.

As modificações que invalidam a relação não são permitidas.

Page 57: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET IDataAdapter Interface

Popula ou envia atualizações para um DataSet Implementado por OleDbDataAdapter e SqlDataAdapter.

Não conectado. Representa uma abordagem assíncrona. Um super conjunto de um objeto command. Contém quatro objetos de comandos padrão

para: Select, Insert, Update, e Delete.

Page 58: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET DataSet Exemplo

string sConnString = “Persist Security Info=False;” + “User ID=sa;Initial Catalog=Northwind;” + “Data Source=MEUSERVIDOR”;

SqlConnection sqlCon = new SqlConnection(sConnString);sqlCon.Open();string sqlString = “SELECT NomeEmpresa FROM Cliente”;SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();DataSet sqlDataSet = new DataSet();sqlDataAdapter.SelectCommand = new SqlCommand(sqlString, sqlCon);sqlDataAdapter.Fill(sqlDataSet);slqCon.Close();

Page 59: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET Criando um DataSet via Código

DataSet dataset = new DataSet();dataset.DataSetName = “Autores”;

DataTable autor = new DataTable(“Autor”);DataTable livro = new DataTable(“Livro”);

Criação do DataSet Definição das tabelas

Page 60: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET Criando um DataSet via Código

Definição das colunas Definição das chaves

DataColumn id = autor.Columns.Add("ID", typeof(Int32));id.AutoIncrement = true;autor.PrimaryKey = new DataColumn[] {id};

DataColumn nome = new autor.Columns.Add("Nome",typeof(String));

DataColumn isbn = livro.Columns.Add("ISBN", typeof(String));livro.PrimaryKey = new DataColumn[] {isbn};

DataColumn titulo =livro.Columns.Add("Titulo",typeof(String));DataColumn idautor=livro.Columns.Add(“idAutor”,typeof(Int32));DataColumn[] foreignkey = new DataColumn[] {idautor};

Page 61: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET Criando um DataSet via Código

Adição das tabelas no DataSet

dataset.Tables.Add (autor);dataset.Tables.Add (livro);

Page 62: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET Criando um DataSet via Código

Adição de dados e gravação do DataSetDataRow vidal = autor.NewRow();vidal["Nome"] = “Antonio Geraldo da Rocha Vidal";autor.Rows.Add(vidal);

DataRelation autorlivro = new DataRelation(“AutorLivro",

autor.PrimaryKey, foreignkey);dataset.Relations.Add(autorlivro);

DataRow clipper = livro.NewRow();clipper[“idAutor"] = vidal["ID"];clipper["ISBN"] = "1000-XYZ";clipper["Titulo"] = “Clipper 5.0";livro.Rows.Add(clipper);

dataset.AcceptChanges();

Page 63: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET Demonstração DataSet

Page 64: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET DataSets Tipados

DataSet tipados: Derivados da classe DataSet Usam esquemas XML para gerar novas classes Tabelas, colunas, etc. compiladas em novas classes

DataSet não tipados: Não possuem esquema de construção automático Tabelas, colunas, etc. são expostas como coleções

DataSet.Customers.FirstName

DataSet.Tables[“Customers”].Rows[0][“FirstName”]

Page 65: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET Erros e Exceções

Classe Error Contém informações sobre um erro ou advertência

retornada por uma fonte de dados. Criada e administrada pelas classes Errors

Classe Errors Contém todos os erros gerados por um “adapter” Criada pela classe Exception

Classe Exception Criada sempre que um erro acontece Sempre contém pelo menos uma instância de Erro

Page 66: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET Exemplo de Erros e Exceções

try { DataTable minhaTabela = new DataTable(); minhaTabela.Columns.Add(“minhaColuna”); minhaTable.Columns.Add(“minhaColuna”); // Oops!!}catch (DataException myException) { Console.WriteLine ("Mensagem: " + minhaException.Message + "\n" + “Fonte: " + minhaException.Source + "\n" + “Rastreamento: " + minhaException.StackTrace + "\n");}

Page 67: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Classes ADO.NET Demonstração DataException

Page 68: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Referências

Introdução ao ADO http://msdn.microsoft.com/msdnmag/issues/1100/adoplus/

adoplus.asp ADO.NET

http://msdn.microsoft.com/library/default.asp?URL=/library/dotnet/cpguide/cpconaccessingdata.htm

ADO Guides the Evolution of the Data Species http://msdn.microsoft.com/library/techart/adoplus.htm

ADO.NET for the ADO Programmer http://msdn.microsoft.com/library/techart/adonetdev.htm

ADO Rocks and Rolls in .NET Applications http://msdn.microsoft.com/library/welcome/dsmsdn/

data02222001.htm Meditando sobre OLE DB e .NET

http://msdn.microsoft.com/library/welcome/dsmsdn/data03222001.htm

Page 69: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Referências

Reading Data Reader Secrets http://msdn.microsoft.com/library/welcome/dsmsdn/data04122001.htm

Database-like Data Containers http://msdn.microsoft.com/library/default.asp?URL=/library/welcome/dsmsdn/data04122001.htm

ADO http://msdn.microsoft.com/library/default.asp?URL=/library/psdk/dasdk/ados4piv.htm

Universal Data Access http://www.microsoft.com/data/

SQL Server http://www.microsoft.com/sql/default.asp

Page 70: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

Bibliografia

Profissional ADO.NET Programando, Paul Dickinson et all, Editora Alta Books, Rio de Janeiro, 2002

SQL Server 2000 Completo e Total, Jeffrey Shapiro, Makron Books, São Paulo, 2002

Page 71: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

ApêndiceADO vs. ADO.NET

ADO é uma camada de automação mais lenta sobre OLE DB para uso com Visual Basic, etc.

ADO.NET fornece acesso direto e rápido a dados a partir de qualquer linguagem.

ADO.NET essencialmente fundiu OLE DB e ADO em uma única camada.

Page 72: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

ApêndiceADO Tradicional vs. ADO.NET

Característica ADO ADO.NETRepresentação de dados residentes na memória

Usa RecordSet, que pode conter apenas uma tabela

Usa o DataSet, que pode conter uma ou mais tabelas representadas por DataTables

Relacionamento entre múltiplas tabelas

Requer executar JOINs com tabelas

Realiza através do objeto DataRelation

Acesso aos dados Percorre seqüencialmente as linhas de um RecordSet

Uma o paradigma de navegação para acesso não seqüêncial

Acesso disconectado Fornecido pelo RecordSet mas tipicamente suporta o acesso conectado

Comunica-se através de chamadas padronizadas com o DataAdapter

Page 73: Banco de Dados e Acesso a Dados Prof.Dr. Antonio Geraldo da Rocha Vidal EAD-5881 - Tecnologia de Informática FEA/USP.

ApêndiceADO Tradicional vs. ADO.NET

Característica ADO ADO.NETProgramação Usa o objeto Connection

para transmitir comandosUsa programação baseada em documentos XML

Compartilhamento de dados desconectados entre camadas e componentes

Usa objetos COM para transmitir um RecordSet desconectado

Transmite um DataSet através de um arquivo XML

Transmissão de dados através de Firewalls

Problemática pois os firewalls são tipicamente configurados para não permitir acesso a nível de sistema

Suportada através de objetos DataSet que usam arquivos XML, que podem passar através firewalls

Escalabilidade Manutenção de conexões com bancos de dados ativas por longos períodos.

Acesso desconectado a bancos de dados sem exigir bloqueios de dados.