Title: Banco de Dados e Acesso a Dados
1Banco de Dados e Acesso a Dados
- Prof.Dr. Antonio Geraldo da Rocha Vidal
- EAD-5881 - Tecnologia de Informática
- FEA/USP
2Bancos 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.
3Bancos 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
4Banco de DadosEvolução da Tecnologia
- Baseado em arquivos
- Hierárquico
- Rede
- Relacional (RDBMS)
- Orientado a Objetos
- XML (eXtensible Markup Language)
5Bancos 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
6Bancos 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
7Bancos 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.
Livro
IDLivro
IDAutor
Título
Gênero
Autor
IDAutor
Nome
Sobrenome
1
8N
Modelo de Dados
8Bancos de Dados Relacionais Relacionando Dados
Tabela Livro
Chave-primária PK
IDLivro IDAutor Título Gênero
1 2 Minha vida como DBA Autobiografia
2 1 Database Handbook Referência
PK/FK Relacionamento
Chave-estrangeira FK
IDAutor Nome Sobrenome
1 José Silva
2 Maria Santos
Tabela Autor
9Bancos de Dados RelacionaisTipos de
Relacionamentos
- Um-para-Um (11)
- 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 (1M)
- Uma linha na tabela X casa com 0 ou linhas na
tabela Y - Uma Editora publica um ou mais Livros
- Muitos-para-Muitos (MN)
- 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.
10Bancos de Dados RelacionaisRelacionamento MN
- 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.
11Bancos de Dados Relacionais Relacionamentos MN
Os dados são duplicados aqui
12Bancos de Dados Relacionais Normalização/Desnorma
lizaçã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
13Bancos 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.
Tabela Distribuidor
Tabela Produto
Distrib.
Contato
Estado
Custo
Distrib.
Produto
Pontual
Maria A.
SP
10
Pontual
CD
Anglo
José P.
MG
5
Pontual
VHS
8
Anglo
Game
25
Anglo
DVD
14Bancos de Dados Relacionais Junções
- O resultado de uma junção natural.
Distrib.
Estado
Contato
Custo
Produto
Maria A.
SP
Pontual
10
CD
Maria A.
SP
Pontual
5
VHS
Anglo
MG
José P.
8
Game
Anglo
MG
José P.
25
DVD
15Bancos 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)
16Bancos 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 )
17Bancos 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
18Bancos de Dados Relacionais DML Exemplos
- Inserir, atualizar e excluir dados.
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
19Bancos 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
20Bancos 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)
21Bancos 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
22Bancos 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
23Bancos 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
24Bancos de Dados Relacionais Stored Procedure
CREATE PROCEDURE HistPedidos _at_ClienteID
nchar(5) AS SELECT NomeProduto,
TotalSUM(Quantidade) FROM Produto P, Itens
Pedidos IP, Pedido P, Cliente C WHERE
C.ClienteID _at_ClienteID AND C.ClienteID
P.ClienteID AND P.PedidoID IP.PedidoID AND
IP.ProdutoID P.ProdutoID GROUP BY NomeProduto
25Bancos de Dados Relacionais Stored Procedure
exec HistPedidos ACNIELSEN'
NomeProduto Total
Papel A4 6
Cartucho HP 692C 21
... ...
26Bancos 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 _at_ValRetorno INT
OUTPUT ... SELECT _at_ValRetorno NomeColuna FROM
Tabela
27Bancos 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.
28Bancos 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.
29Bancos 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).
30Acesso 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.
31Acesso 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.
32ADO TradicionalEstrutura de Acesso
Aplicação
ADO
OLE DB
ODBC Provider
Simple Provider
Native Provider
OLE DB Provider
ODBC
OLE DB Provider
ODBC Driver
TextFile
Mainframe
Database
Database
33ADO 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.
34ADO.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.
35ADO.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.
36ADO.NETProvedores Gerenciáveis
Aplicação
ADO.NET
SQL Managed Provider
ADO Managed Provider
OLE DB Provider
SQL ServerDatabase
Database
37ADO.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
38ADO.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.
ltaspLabel runatserver Text'lt Pedidos(0).Nome
gt'/gt
39Classes 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.
40Classes 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.
41Classes 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.
42Classes ADO.NET DataReader Exemplo
string sConnString ProviderSQLOLEDB.1
User IDsaInitial CatalogMeuBanco
Data SourceMeuServidor OleDbConnection
sqlCon new OleDbConnection(sConnString) sqlCon.
Open() string sQueryString SELECT NomeCliente
FROM Cliente OleDbCommand sqlCmd new
OleDbCommand(sQueryString, sqlCcon) OleDbDataRead
er sqlReader sqlCmd.ExecuteReader() while
(sqlReader.Read()) Console.WriteLine(sqlReade
r.GetString(0)) sqlReader.Close() sqlCon.Close
()
43Classes ADO.NET Demonstração DataReader
44Classes 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
45Classes ADO.NET Demonstração OleDb Data Access
46Classes 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.
47Classes ADO.NET Demonstração Stored Procedure
48Classes 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
49Classes ADO.NET System.Data Namespace (cont.)
- Contém classes usadas por ou derivadas de
provedores gerenciados - IDbConnection
- IDbCommand
- IDbDataReader
50Classes 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
51Classes ADO.NET DataSet
DataSet
DataTable
DataColumn
DataRow
DataRelation
52Classes ADO.NET Demonstração Atualização via
DataSet
53Classes 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
54Classes 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).
55Classes 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.
56Classes 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.
57Classes 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.
58Classes ADO.NET DataSet Exemplo
string sConnString Persist Security
InfoFalse User IDsaInitial
CatalogNorthwind Data
SourceMEUSERVIDOR 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()
59Classes ADO.NET Criando um DataSet via Código
- Criação do DataSet
- Definição das tabelas
DataSet dataset new DataSet() dataset.DataSetNa
me Autores DataTable autor new
DataTable(Autor) DataTable livro new
DataTable(Livro)
60Classes 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)) DataCol
umn isbn livro.Columns.Add("ISBN",
typeof(String)) livro.PrimaryKey new
DataColumn isbn DataColumn titulo
livro.Columns.Add("Titulo",typeof(String)) DataC
olumn idautorlivro.Columns.Add(idAutor,typeof(I
nt32)) DataColumn foreignkey new
DataColumn idautor
61Classes ADO.NET Criando um DataSet via Código
- Adição das tabelas no DataSet
dataset.Tables.Add (autor) dataset.Tables.Add
(livro)
62Classes ADO.NET Criando um DataSet via Código
- Adição de dados e gravação do DataSet
DataRow vidal autor.NewRow() vidal"Nome"
Antonio Geraldo da Rocha Vidal" autor.Rows.Add(v
idal) DataRelation autorlivro new
DataRelation(AutorLivro",
autor.PrimaryKey, foreignkey) dataset.Relati
ons.Add(autorlivro) DataRow clipper
livro.NewRow() clipperidAutor"
vidal"ID" clipper"ISBN" "1000-XYZ" clipper
"Titulo" Clipper 5.0" livro.Rows.Add(clipper
) dataset.AcceptChanges()
63Classes ADO.NET Demonstração DataSet
64Classes 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.Customers.FirstName
- DataSet não tipados
- Não possuem esquema de construção automático
- Tabelas, colunas, etc. são expostas como coleções
DataSet.TablesCustomers.Rows0FirstName
65Classes 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
66Classes 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")
67Classes ADO.NET Demonstração DataException
68Referências
- Introdução ao ADO
- http//msdn.microsoft.com/msdnmag/issues/1100/adop
lus/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/adonetde
v.htm - ADO Rocks and Rolls in .NET Applications
- http//msdn.microsoft.com/library/welcome/dsmsdn/d
ata02222001.htm - Meditando sobre OLE DB e .NET
- http//msdn.microsoft.com/library/welcome/dsmsdn/d
ata03222001.htm
69Referências
- Reading Data Reader Secrets
- http//msdn.microsoft.com/library/welcome/dsmsdn/d
ata04122001.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
70Bibliografia
- 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
71Apê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.
72ApêndiceADO Tradicional vs. ADO.NET
Característica ADO ADO.NET
Representaçã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
73ApêndiceADO Tradicional vs. ADO.NET
Característica ADO ADO.NET
Programação Usa o objeto Connection para transmitir comandos Usa 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.