Banco de Dados e Acesso a Dados

Slides:



Advertisements
Apresentações semelhantes
Ana Paula B. Barboza Ivana Xavier Rodrigues
Advertisements

Tópicos em Banco de Dados
Banco de Dados Prof. Antonio.
Banco de Dados I Aula 20.
SQL Renata Viegas.
ASP.NET e ADO.NET.
SQL Structured Query Language
Tecnologia de Programação BD em.Net: Conexão com SQL Server 1º Semestre 2009 > PUCPR > BSI Bruno C. de Paula.
Prof. Alessandro J. de Souza
Prof.: Bruno Rafael de Oliveira Rodrigues
Prof.: Bruno Rafael de Oliveira Rodrigues
Java Conexão com Banco de Dados
Banco de Dados SQL TRIGGERS (Gatilhos)
SISTEMAS DE INFORMAÇÃO
Sistemas de Informação Redes de Computadores
Maurício Edgar Stivanello
Motor de Armazenamento
SGBD.
Sistema Gerenciador de Banco de Dados SGBD
Sistema Gerenciador de Banco de Dados SGBD
Introdução à Engenharia da Computação
Material III-Bimestre Wagner Santos C. de Jesus
Edson Silva BD / ADO. NET Edson Silva
SQL Structured Query Language
Introdução a JDBC Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Bancos de Dados – SQL – parte 1
Banco de dados Profª Kelly Medeiros.
Administração de Sistemas de Informação Banco de Dados
Tecnologias Web ADO.NET
Rodrigo Cristiano Silva
ADO.NET Framework INE 5612 – DSOOII
XIV Jornada de Cursos .NET com C# Antônio Carlos Bruno Inojosa.
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Design Patterns / Acesso ao banco de dados (java.sql)
JSP / Servlets Avançado
Prof. Kelly E. Medeiros Bacharel em Sistemas de Informação
XIII Jornada de Cursos .NET com C# Lucas Mello Flávio Almeida.
Prof. Rodrigo de Matos Vargas
FaculdadePitágoras Curso Superior de Tecnologia: Banco de Dados Disciplina: Sistemas Gerenciadores de Banco de Dados Prof.: Fernando Hadad Zaidan.
A Linguagem SQL Por Hélio de Almeida Fonte: Wikipédia.
Banco de Dados Parte 04 Ceça. Ceça Moraes 2 Conteúdo  Os três níveis da arquitetura  Mapeamentos  Arquitetura cliente-servidor.
Banco de dados.
Linguagem de Definição de Dados
Programação Orientada à Objetos
A abordagem de banco de dados para gerenciamento de dados
Campus de Caraguatatuba Aula 2: Introdução a Tecnologia de BD
Projeto de Sistemas de Informação Prof. Schneider Oracle Object-Relational.
SCC Bancos de Dados e Suas Aplicações
Contatos Gladimir Catarino
SQLite Banco de Dados II.
Bruno Inojosa MCP.NET Framework.NET com C#. SQL Básico.
Java Conexão com Baco de dados Saulo Bazzi Oberderfer Fonte:
Banco de Dados I I Comandos SQL
IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho
Acesso a Bases de Dados ADO.NET. Namespace System.Data Modos de aceder à informação OLE DB – namespace System.Data.OleDb SQL - namespace System.Data.SqlClient.
Objetos em Bancos de Dados Relacionais Alcides Calsavara.
Daniel Paulo Introdução Neste capítulo trataremos a relação entre tabelas e FILEGROUPS, bem como a alocação interna de dados.
Daniel Paulo SQL Server 2014 Módulo II Daniel Paulo
Daniel Paulo SQL Server 2014 Módulo II Daniel Paulo
UCSal – Bacharelado em Informática
VBA – Visual Basic para Aplicativos
Linguagem de definição de dados - SQL
1 Database Systems, 8 th Edition Sistemas de Banco de Dados: Projeto, Implementação e gestão Oitava Edição Capítulo 2 Modelo de Dados.
Banco de Dados SQL (Structured Query Language) Hayslan Nicolas Colicheski Bucarth – IFRO / 2015 –
Fundamentos de Banco de Dados Prof. André Cypriano M. Costa
Banco de Dados -Aprendendo conceitos -Usando o SQL Conf para:
Prática de Banco de Dados Créditos: Prof. Jefferson Silva Adaptações: Prof. Nécio de Lima Veras.
Programação para Internet Aula 11 SQL (Introdução a linguagem, comandos de modificação: Create, Drop, Alter, Insert, Delete, Update)
Banco de Dados para Redes– Aula 03 Prof. Me. Ronnison Reges Vidal.
Modelagem de Banco de Dados: Conceitos
Transcrição da apresentação:

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

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.

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

Banco de Dados Evolução da Tecnologia Baseado em arquivos Hierárquico Rede Relacional (RDBMS) Orientado a Objetos XML (eXtensible Markup Language)

Bancos de Dados Relacionais Tabelas 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

Bancos de Dados Relacionais Relacionando Dados Banco de Dados - Prof. Antonio Geraldo da Rocha Vidal 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 Relational databases do NOT get there name because they can relate data. They get their name from set theory: a relation is the set-theoretic term for a table. Primary/foreign key relationships are THE way data is related in a relational database. FEA/USP - EAD-5881 - Tecnologia de Informática

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. Livro IDLivro IDAutor Título Gênero Autor IDAutor Nome Sobrenome 1 ∞ N Modelo de Dados

Bancos de Dados Relacionais Relacionando Dados Tabela Livro Chave-primária PK IDLivro IDAutor Título Gênero 1 2 Minha vida como DBA Autobiografia Database Handbook Referência PK/FK Relacionamento Chave-estrangeira FK IDAutor Nome Sobrenome 1 José Silva 2 Maria Santos Tabela Autor

Bancos de Dados Relacionais Tipos de Relacionamentos 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. Livro 1 Registro ISBN Editora 1 M Livro Autor M N Livro

Bancos de Dados Relacionais Relacionamento 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 Livro M Autoria 1

Bancos de Dados Relacionais Relacionamentos M:N Os dados são duplicados aqui

Bancos de Dados Relacionais Normalização/Desnormalizaçã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

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. Tabela Produto Tabela Distribuidor Produto Custo Distrib. Distrib. Estado Contato CD $10 Pontual Pontual SP Maria A. VHS $5 Pontual Anglo MG José P. Game $8 Anglo DVD $25 Anglo

Bancos de Dados Relacionais Junções O resultado de uma junção natural. Produto Custo Distrib. Estado Contato CD $10 Pontual SP Maria A. VHS $5 Pontual SP Maria A. Game $8 Anglo MG José P. DVD $25 Anglo MG José P.

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)

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 )

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

Bancos 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

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

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)

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

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 …

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

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

Bancos de Dados Relacionais Stored Procedure exec HistPedidos ‘ACNIELSEN' NomeProduto Total Papel A4 6 Cartucho HP 692C 21 ...

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

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.

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.

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

Acesso a Dados Introduçã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.

Acesso a Dados Introduçã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++.

ADO Tradicional Estrutura de Acesso Aplicação ADO OLE DB ODBC Provider Simple Provider Native Provider ODBC OLE DB Provider OLE DB Provider ODBC Driver Text File Mainframe Database Database

ADO Tradicional Caracterí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.

ADO.NET Metas 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.

ADO.NET Provedores 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 Provedores Gerenciáveis Aplicação ADO.NET SQL Managed Provider ADO Managed Provider OLE DB Provider SQL Server Database Database

ADO.NET Estilos de Acesso a Dados Banco de Dados - Prof. Antonio Geraldo da Rocha Vidal ADO.NET Estilos 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 The third main style is connected, scrollable cursor. ADO.NET does not currently support this style, though it may be supported in a future version. This can be implemented by using ADO. FEA/USP - EAD-5881 - Tecnologia de Informática

ADO.NET Ligações de Dados (Data Binding) Banco de Dados - Prof. Antonio Geraldo da Rocha Vidal ADO.NET Ligaçõ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. We will cover this when we discuss ASP.NET and Web Forms. <asp:Label runat=server Text='<%# Pedidos(0).Nome %>'/> FEA/USP - EAD-5881 - Tecnologia de Informática

Classes ADO.NET IDbConnection Interface Banco de Dados - Prof. Antonio Geraldo da Rocha Vidal 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. Very similar to ADO counterpart. Database access protocols tend to be chatty. FEA/USP - EAD-5881 - Tecnologia de Informática

Classes ADO.NET IDbCommand Interface Banco de Dados - Prof. Antonio Geraldo da Rocha Vidal 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. Very similar to ADO counterpart. Use ExecuteNonQuery whenever possible. FEA/USP - EAD-5881 - Tecnologia de Informática

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.

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 Demonstração DataReader

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

Classes ADO.NET Demonstração OleDb Data Access

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.

Classes ADO.NET Demonstração Stored Procedure

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

Classes ADO.NET System.Data Namespace (cont.) Contém classes usadas por ou derivadas de provedores gerenciados: IDbConnection IDbCommand IDbDataReader

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

Classes ADO.NET DataSet Banco de Dados - Prof. Antonio Geraldo da Rocha Vidal Classes ADO.NET DataSet DataSet DataTable DataColumn This is a simplified view of the containment relationships in a DataSet. There are actually many other collections and types of objects involved. DataRow DataRelation FEA/USP - EAD-5881 - Tecnologia de Informática

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

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

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

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.

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.

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.

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 Código Criação do DataSet Definição 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 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};

Classes ADO.NET Criando um DataSet via Código Adição das tabelas no DataSet dataset.Tables.Add (autor); dataset.Tables.Add (livro);

Classes 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(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 Demonstração DataSet

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 não tipados: Não possuem esquema de construção automático Tabelas, colunas, etc. são expostas como coleções DataSet.Tables[“Customers”].Rows[0][“FirstName”]

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

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

Classes ADO.NET Demonstração DataException

Referências Introdução ao ADO ADO.NET 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

Referências Reading Data Reader Secrets Database-like Data Containers 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

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

Apêndice ADO 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.

Apêndice ADO Tradicional vs. ADO.NET Banco de Dados - Prof. Antonio Geraldo da Rocha Vidal Apêndice ADO 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 KEY MESSAGE: SLIDE BUILDS: None SLIDE SCRIPT: SLIDE TRANSISTION: ADDITIONAL INFORMATION FOR PRESENTER: FEA/USP - EAD-5881 - Tecnologia de Informática

Apêndice ADO Tradicional vs. ADO.NET Banco de Dados - Prof. Antonio Geraldo da Rocha Vidal Apêndice ADO 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. KEY MESSAGE: SLIDE BUILDS: None SLIDE SCRIPT: SLIDE TRANSISTION: ADDITIONAL INFORMATION FOR PRESENTER: FEA/USP - EAD-5881 - Tecnologia de Informática