Você está na página 1de 36

Plataforma .

Net
VB.NET

C#.NET

C++.NET

Perl.NET

XML Web Services

User Interface

ADO.NET: Data and XML

Base Class Library

Common Language Runtime

Visual Studio .NET

ASP.NET

Acesso a Dados
Introduo

ODBC (Open Database Connectivity)

Interoperabilidade para vrios sistemas gerenciadores de


banco de dados (DBMS).

API largamente aceita.

Usa SQL como linguagem de acesso a dados.

DAO (Data Access Objects)

Interface de programao para bancos de dados JET/ISAM.

Usa automao (ActiveX, OLE automation).

RDO (Remote Data Objects)

Verso mais sofisticada e otimizada do ODBC.

Desenvolvido especialmente para bancos de dados


cliente/servidor.

Acesso a Dados
Introduo

OLE DB

Amplo acesso a dados, relacionais e outros.

No restrito SQL para a recuperao de dados

Pode utilizar drives ODBC.

Interface de baixo-nvel (C++).

ADO (ActiveX Data Objects)

Interface simples, orientada a objetos e baseada


em componentes.

Fornece um modelo de programao para o OLE


DB acessvel fora do C++.

ADO Tradicional
Estrutura de Acesso
Aplicao
ADO
OLE DB
ODBC

OLE DB
Provider

OLE DB
Provider

ODBC Driver

Database
ODBC Provider

Text
File

Mainframe

Simple Provider

Database
Native Provider

ADO Tradicional
Caractersticas

ADO foi projetado atravs de um modelo


conectado, firmemente acoplado.

Apropriado para arquiteturas cliente/servidor.

Principalmente relacional (XML hierrquico).

Porm, o projeto dos objetos no foi bem


definido:

H muitas formas para se fazer a mesma coisa.

Os objetos tentam fazer coisas demais.

No foi originalmente projetado para trabalhar


em ambiente distribudo, de mltiplas camadas.

ADO.NET
Metas do ADO.NET

Projeto mais bem acabado.

Altamente escalvel atravs de um modelo


desconectado e robusto.

Rico suporte a XML (hierrquico alm do


relacional).

Acesso de dados sobre HTTP.

Mantm o modelo de programao do ADO.

Mantm o ADO disponvel via interoperabilidade


.NET vs. COM.

ADO.NET
Provedores

Combina ADO e OLEDB em uma s camada.

Cada provedor contm um conjunto de classes


que implementa interfaces comuns.

ADO.NET
Provedores Gerenciveis
Aplicao
ADO.NET

OLE DB
Provider
SQL Server
Database

SQL Managed Provider

Database
ADO Managed Provider

ADO.NET
Estilos de Acesso a Dados

Somente-para-frente, somente-leitura:

A aplicao envia uma consulta e depois l e


processa os resultados.

Cursor tipo mangueira ou duto de


comunicao

Objeto DataReader

Desconectado:

A aplicao envia uma consulta e depois recupera


e armazena os resultados para processamento.

Minimiza tempo conectado ao banco de dados.

Objeto DataSet

ADO.NET
Ligaes de Dados (Data
Binding)

Componente chave de formulrios Web.

Uso flexvel e fcil:

Liga ou anexa uma propriedade de um controle a


uma informao em qualquer tipo de fonte de
dados.

Fornece controle sobre como os dados vm e


voltam.

Controles simples para exibir um nico valor.

Controles complexos para exibir estruturas de


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

Classes ADO.NET
IDbConnection Interface
Cria uma conexo nica com uma fonte de
dados (data source).
Implementada pelas classes
SqlDbConnection e OleDbConnection
Funcionalidade:

Abre e fecha conexes


Inicia transaes

A classe IDbTransaction fornece mtodos


Commit e Rollback

Usada em conjunto com objetos


IDbCommand e IDataAdapter.
Propriedades adicionais, mtodos e
colees dependem do provedor de dados.

Classes ADO.NET
IDbCommand Interface

Representa um comando a ser enviado para a fonte de dados


(data source).

Normalmente, mas no necessariamente em SQL.

Implementado pelas classes OleDbCommand e SqlCommand.


Funcionalidade:

Define o comando a ser executado

Executa o comando

Passa e recupera parmetros

Cria uma verso compilada do comando

ExecuteReader retorna linhas

ExecuteNonQuery no retorna nada

ExecuteScalar retorna um nico valor

Propriedades adicionais, mtodos e colees dependem do


provedor de dados.

Classes ADO.NET
IDataReader Interface

Somente para frente (forward-only), somente


leitura (read-only) acesso tipo mangueira ou
duto a uma srie de dados.

Implementado pelas classes SqlDataReader e


OleDbDataReader.

Criado atravs do mtodo ExecuteReader da


classe IDbCommand.

Operaes associadas com o objeto


IDbConnection so desabilitadas at que o
leitor seja fechado.

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();

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 conexes

Classes ADO.NET
System.Data.SqlClient
Namespace

Provedor gerenciado nativo para o SQL Server

Construdo com TDS (Tabular Data Stream) para alto


desempenho com o SQL Server

Classes SqlConnection, SqlCommand e SqlDataReader.

Classes para :

Tratamento de erros

Pool de conexes (implicitamente habilitadas por definio)

System.Data.SqlTypes fornece classes para tipos de


dados nativos do SQL Server.

Classes ADO.NET
System.Data Namespace

Contm 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

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

Contm classes usadas por ou derivadas de


provedores gerenciados:

IDbConnection

IDbCommand

IDbDataReader

Classes ADO.NET
DataSet

Uma coleo de tabelas


No possui conhecimento da fonte de dados
Mantm todos os relacionamentos entre as
tabelas
Modelo de programao 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 serializao nativo o XML
Localizada no pacote System.Data

Classes ADO.NET
DataSet
DataSet
DataTable
DataColumn
DataRow
DataRelation

Classes ADO.NET
DataTable

Objeto na memria representando uma tabela

Colunas

Linhas

Esquema definido por coleo de colunas

A integridade de dados provida atravs de


objetos Constraint

Eventos pblicos:

Modificar / excluir linhas (registros)

Modificar colunas

Classes ADO.NET
DataColumn

Bloco de construo fundamental de um esquema


DataTable (contido na coleo de colunas).

Define que tipo de dados pode ser aceito (via propriedade


DataType).

Outras propriedades importantes incluem AllowNull,


Unique, e ReadOnly.

Pode conter Constraints (coleo na DataTable).

Pode conter Relaes (coleo no DataSet).

Classes ADO.NET
DataRow

Representa dados em uma DataTable (contida


em coleo de linhas).

Segue o esquema definido por objetos


DataColumns.

Possui propriedades para determinar o estado


das linhas (por exemplo, nova, alterada,
excluda, e assim por diante).

Todas as adies e modificaes so


atualizadas (committed) atravs do mtodo
AcceptChanges do objeto DataTable.

Classes ADO.NET
DataRelation

Relaciona duas DataTables via DataColumns.

O valor DataType de ambas DataColumns deve


ser idntico.

Atualizaes podem ser cascateadas para


DataTables filhas.

As modificaes que invalidam a relao no


so permitidas.

Classes ADO.NET
IDataAdapter Interface

Popula ou envia atualizaes para um DataSet

Implementado por OleDbDataAdapter e


SqlDataAdapter.

No conectado.

Representa uma abordagem assncrona.

Um super conjunto de um objeto command.

Contm quatro objetos de comandos padro


para: Select, Insert, Update, e Delete.

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();

Classes ADO.NET
Criando um DataSet via Cdigo

Criao do DataSet

Definio das tabelas

DataSet dataset = new DataSet();


dataset.DataSetName = Autores;
DataTable autor = new DataTable(Autor);
DataTable livro = new DataTable(Livro);

Classes ADO.NET
Criando um DataSet via Cdigo

Definio das colunas

Definio 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};

Classes ADO.NET
Criando um DataSet via Cdigo

Adio das tabelas no DataSet


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

Classes ADO.NET
Criando um DataSet via Cdigo

Adio de dados e gravao do DataSet

DataRow 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();

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.Customers.FirstName

DataSet no tipados:
No possuem esquema de construo automtico
Tabelas, colunas, etc. so expostas como colees

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

Classes ADO.NET
Erros e Excees

Classe Error

Contm informaes sobre um erro ou


advertncia retornada por uma fonte de dados.

Criada e administrada pelas classes Errors

Classe Errors

Contm todos os erros gerados por um adapter

Criada pela classe Exception

Classe Exception

Criada sempre que um erro acontece

Sempre contm pelo menos uma instncia de


Erro

Classes ADO.NET
Exemplo de Erros e Excees
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");
}

Apndice
ADO vs. ADO.NET

ADO uma camada de automao mais lenta


sobre OLE DB para uso com Visual Basic, etc.

ADO.NET fornece acesso direto e rpido a dados


a partir de qualquer linguagem.

ADO.NET essencialmente fundiu OLE DB e ADO


em uma nica camada.

Apndice
ADO Tradicional vs. ADO.NET
Caracterstica

ADO

ADO.NET

Representao de dados
residentes na memria

Usa RecordSet, que pode


conter apenas uma tabela

Usa o DataSet, que pode


conter uma ou mais tabelas
representadas por
DataTables

Relacionamento entre
mltiplas tabelas

Requer executar JOINs


com tabelas

Realiza atravs do objeto


DataRelation

Acesso aos dados

Percorre seqencialmente
as linhas de um RecordSet

Uma o paradigma de
navegao para acesso no
seqncial

Acesso disconectado

Fornecido pelo RecordSet


mas tipicamente suporta o
acesso conectado

Comunica-se atravs de
chamadas padronizadas
com o DataAdapter

Apndice
ADO Tradicional vs. ADO.NET
Caracterstica

ADO

ADO.NET

Programao

Usa o objeto Connection


para transmitir comandos

Usa programao
baseada em documentos
XML

Compartilhamento de
dados desconectados
entre camadas e
componentes

Usa objetos COM para


transmitir um RecordSet
desconectado

Transmite um DataSet
atravs de um arquivo
XML

Transmisso de dados
atravs de Firewalls

Problemtica pois os
firewalls so tipicamente
configurados para no
permitir acesso a nvel de
sistema

Suportada atravs de
objetos DataSet que usam
arquivos XML, que podem
passar atravs firewalls

Escalabilidade

Manuteno de conexes
com bancos de dados
ativas por longos
perodos.

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

Você também pode gostar