Buscar

Aula 07 ADO.NET

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 62 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 62 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 62 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Desenvolvimento de Software
Acesso a Dados – ADO.NET
Prof. Henrique Mota
mota.henrique@gmail.com
http://www.henriquemota.com.br
 
Banco de Dados
 
Banco de Dados
• A maioria das aplicações 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.
• Essas necessidades de armazenamento 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
 
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
Banco de Dados
 
Evolução da Tecnologia
• Baseado em arquivos
• Hierárquico
• Rede
• Relacional
• Orientado a Objetos
• XML (eXtensible Markup Language)
Banco de Dados
 
• 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
Tabelas
 
• 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
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
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
Relacionando dados
 
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.
Autor
M N
Livro
Editora
1 M
Livro
Livro
1 1
Registro ISBN
Tipos de relacionamentos
 
• 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
Relacionamento M:N
 
Relacionamento M:N
Os dados são duplicados aqui
 
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
Normalização
 
• 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
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
Junções
 
• 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)
Structured Query Language
 
• 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
)
DDL 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
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.
DML 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
DCL Exemplos
 
• 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)
Visões
 
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
Exemplo de View
 
SELECT * 
FROM Pedidos 
WHERE Nome = 'Meu Melhor Cliente'
PedidoID Nome
101 Meu Melhor Cliente
137 Meu Melhor Cliente
…
Exemplo de View
 
• Um grupo de comandos SQL que é armazenado e 
executado dentro do banco de dados.
• Não faz parte do SQL padrão.
• 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
Stored Procedures
 
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
Stored Procedure
 
exec HistPedidos ‘ACNIELSEN'
NomeProduto Total
Papel A4 6
Cartucho HP 692C 21
... ...
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
Stored Procedure
 
• 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.
Triggers
 
• 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.
Transações
 
• 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).
Concorrência
 
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.
Acesso a Dados
 
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++.
Acesso a Dados
 
ADO
ODBC Provider Simple Provider Native Provider
OLE DB 
Provider
ODBC
ODBC Driver
Text
File
Database Database
OLE DB 
Provider
Mainframe
OLE DB
Aplicação
ADO Tradicional
 
• 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.
ADO Tradicional
 
• 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.
ADO.NET
 
• 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.
ADO.NET - Providers
 
SQL Managed Provider
SQL Server
Database
ADO.NET
ADO Managed Provider
OLE DB 
Provider
Database
Aplicação
ADO.NET – Providers
 
Estilo 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
 
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.
Ligações de Dados
 
• 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.
IDbConnection 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.
IDBCommand Interface
 
• Representa um conjunto de comandos SQL e uma 
conexão de banco de dados que são usados para 
Preenchimento o DataSet
• 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.
IDbDataReader Interface
 
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();
DataReader Exemplo
 
• 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
System.Data.OleDb
 
• 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.
System.Data.SqlClient
 
• 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
System.Data
 
• Contém classes usadas por ou derivadas de 
provedores gerenciados:
– IDbConnection
– IDbCommand
– IDbDataReader
System.Data
 
• 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
DataSet
 
DataSet
DataTable
DataRelation
DataRow
DataColumn
DataSet
 
• Objeto na memória representando uma tabela
– Colunas
– Linhas
• Esquema definido por coleção de colunas
• A integridade de dados é providaatravés de objetos 
Constraint
• Eventos públicos:
– Modificar / excluir linhas (registros)
– Modificar colunas
DataTable
 
• 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).
DataColumn
 
• 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.
DataRow
 
• 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.
DataRelation
 
• 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.
IDataAdapter Interface
 
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();
DataSet Exemplo
 
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
Criando um DataSet
 
• 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};
Criando um DataSet
 
• Adição das tabelas no DataSet
dataset.Tables.Add (autor);
dataset.Tables.Add (livro);
Criando um DataSet
 
• Adição de dados e gravação 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 
Criando um DataSet via Código
 
• 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”]
DataSets Tipados
 
• 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
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");
} 
Exemplo de Exceções
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31
	Slide 32
	Slide 33
	Slide 34
	Slide 35
	Slide 36
	Slide 37
	Slide 38
	Slide 39
	Slide 40
	Slide 41
	Slide 42
	Slide 43
	Slide 44
	Slide 45
	Slide 46
	Slide 47
	Slide 48
	Slide 49
	Slide 50
	Slide 51
	Slide 52
	Slide 53
	Slide 54
	Slide 55
	Slide 56
	Slide 57
	Slide 58
	Slide 59
	Slide 60
	Slide 61
	Slide 62

Outros materiais