Agenda. Acesso a Dados (ADO.NET) www.link.pt. Março 2005 Engenharia Software 2005 2004 Link Consulting



Documentos relacionados
Integração de Aplicações e Sistemas Abordagem Táctica da Integração

INTRODUÇÃO AO MODELO ADO.NET (DESCONECTADO)

ADO.NET - Roteiro básico e Boas Práticas

Acesso a Banco de Dados usando C#

Acessando Dados com ADO.NET

Departamento de Engenharia Informática Instituto Superior de Engenharia do Porto Instituto Politécnico do Porto ADO.NET.

Iniciar o Data Adapter Configuration Wizard. Toolbox Data Duplo clique em OleDbDataAdapter. Botão next na caixa de diálogo

BD SQL Server. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04

using System; using System.Collections.Generic; using System.Text; namespace Estudo { public class PessoaJuridica : Pessoa { private string cnpj;

O dono de uma livraria cuja base de dados é administrada por si pediu-lhe para efectuar as seguintes alterações ao preço dos livros:

COMPETÊNCIAS ESPECÍFICAS Compreender e utilizar a linguagem SQL, na construção e manutenção de uma base de dados.

trigger insert, delete, update

Acesso a Banco de Dados usando C# (MySql Provider)

A interface IDataSource retorna dados em formato tabular e disponibiliza apenas dois métodos: GetView e GetViewNames. O primeiro,

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF)

Banco de Dados. Maurício Edgar Stivanello

Hugo Pedro Proença, 2007

BD Oracle. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04

Introdução ao ASP.NET

Banco de Dados. Sérgio Luiz Ruivace Cerqueira

Construindo Aplicações com ASP.NET MVC 2.0 Aula 03 Luiz Alberto Ferreira Gomes. Ciência da Computação da PUC Minas

Tarefa Orientada 2 Aplic. Manutenção de Produtos - DataGridView

Consistem num conjunto de apontadores para instâncias especificas de cada relação.

Função dos Sistemas de Bases de Dados Visão dos dados Modelos de dados Linguagem de Definição de Dados Linguagem de Manipulação de Dados Gestão de

DSS 08/09. Camada de Dados - JDBC. Aula 1. António Nestor Ribeiro /António Ramires Fernandes/ José Creissac Campos {anr,arf,jfc}@di.uminho.

Tutorial C# - ADO.NET

Acesso a Dados ADO.NET

VBA e Access Modo de interacção

Aplicabilidade: visão geral

Gestão de projectos na Web

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO. SISTEMAS DE GESTÃO DE BASE DE DADOS Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO

MÓDULO 1 - Folha de Cálculo

Programação com Acesso a Banco de Dados

Desenvolvimento Cliente-Servidor 1

Escola Secundária de Camarate

MySQL. Transacções em MySQL

Bases de Dados 2007/2008. Aula 9

O que são Bancos de Dados?

Administração e Optimização de BDs

Sumário Introdução Breve História da Linguagem SQL l 0.3 Características da Linguagem SQL A Composição deste Livro 3

Prof.: Clayton Maciel Costa

Programação com ODBC 3

TIC Tecnologias da Informação e Comunicação 10º Ano

Ficha prática nº 7. SGBD Microsoft Access e SQL Server

Banco de Dados. Prof. Antonio

DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS (GRUPO INFORMÁTICA) Ano Letivo de 2014/2015 MÓDULO 1 FOLHA DE CÁLCULO

Módulo 6: Linguagem de Programação IV 6.1. Introdução 6.2. Bases de Dados Visão Estrutural SGBD: Sistema de Gestão de Bases de Dados

Ferramentas de Engª de Requisitos

Persistência e Banco de Dados em Jogos Digitais

EMML Enterprise Mashup Markup Language. Jesús Martín Talavera Portocarrero

Reconhecer alguns dos objectos VBA Automatizar bases de dados recorrendo à programação VBA e scripts SQL

Forms Authentication em ASP.NET

08/04/2013. Agenda. O Sistema CACHÉ. O Sistema CACHÉ. O Sistema CACHÉ. O Sistema CACHÉ

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Índice. Introdução às bases de dados. Parte 1 ÍNDICE DE FIGURAS E QUADROS 11 CONVENÇÕES USADAS NESTE MANUAL 15 PREFÁCIO 17

Worldwide Online TechDay Outubro

JPA: Persistência padronizada em Java

DSS 09/10. DSS 09/10 Que métodos é que fazem parte de cada camada? Aplicações Multi-camada JDBC. Aula 3 DSS 09/10

Introdução às funções e procedimentos. SQL suporta funções e procedimentos úteis com tipos de dados específicos

Aplicação ReadWriteData

Tarefa Orientada 16 Vistas

Trabalhando com XML RENATO CORREIA DE MATOS

Formação Inicial em Programação. Sobre o curso. Destinatários. Programação e Bases de Dados. Nível: Iniciado Duração: 217h

P L A N I F I C A Ç Ã O A N U A L

Oracle SQL Developer

17/10/2008. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Redes de Computadores

Tarefa Orientada 19 Triggers

Portfólio do Aluno 2012 / º Ano Linguagem de Programação Módulo n.º Fábio Oliveira

Tarefa Orientada 5 Aplic. Manutenção de Facturas de Clientes

LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados

? O SQL SERVER é um sistema de gerenciamento de banco de dados relacional que foi desenvolvido inicialmente pela Microsoft em parceria com a Sybase.

Banco de Dados. Aula 1 - Prof. Bruno Moreno 16/08/2011

Visual Basic.NET ADO.NET. Professor: Danilo Giacobo. Página pessoal:

Computação Móvel. Nuno Flores, Departamento de Engenharia Informática Faculdade de Engenharia da Universidade do Porto

Apostila Delphi V 1.0

Direcção Regional de Educação do Algarve

Programação Orientada a Objetos JDBC Java Database Connectivity

Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores


Tarefa Orientada 2 Criar uma base de dados

Execução de Instruções SQL

Solutions for Information Technologies. BIS-Navegador. Manual de Instalação para Microsoft SQL Server

Bases de Dados 2007/2008. Aula 8

Pi Personnel Information

10. Acessando o Banco de Dados através do Visual Basic

Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas.

Integrando Java com Banco de Dados

Banco de Dados Oracle 10g: Introdução à Linguagem SQL

Android e Bancos de Dados

Uma Base de Dados é uma colecção de dados partilhados, interrelacionados e usados para múltiplos objectivos.

Hoje é inegável que a sobrevivência das organizações depende de dados precisos e atualizados.

Controle de transações em SQL

Então vamos ao que interessa. 1. Introdução

Solutions for Information Technologies. BIS-Navegador. Oracle

PLANIFICAÇÃO MODULAR ANO LECTIVO 2015 / 2016

Introdução aos Sistemas Operativos

Transcrição:

Acesso a Dados (ADO.NET) 1 Março 2005 Engenharia Software 2005 2004 Link Consulting Agenda Introdução Evolução Arquitectura Data Providers Connections e Commands DataReaders DataSets e DataAdapters Databinding Transacções Suporte XML Notas e boas práticas 2

Evolução ADO.NET ADO OLE DB RDO DAO ODBC Modelo objectos construido na tecnologia.net Evolução natural do ADO Focado para arquitecturas N-Tier, Suporte XML, Ligações Fracas Componentes optimizadas para ambiente distribuido Evolução baseada no provider OLE DB Dificuldades: Tecnologia COM Suporte BD não relacionais (flat-files, BD hierarquicas) Modelos objectos construido na tecnologia COM Dificuldades: Provider escrito template C++ (ATL) Acesso optimizado para ODBC (SQL Server) : ODBCDirect Dificuldades: Especifico para acesso ODBC 1º Interface orientado a objectos Acesso directo BD locais (Access, Excel, DBF) : JET DB Engine Dificuldades: Pouco eficiente, requer excesso memória API standard escrita em C (baixo nivel) Dificuldades: Utilização em aplicações VB 3 Arquitectura 4

Data Provider Conjunto de componentes desenhados para manipulação e leitura de dados de uma fonte dados especifica Providers existentes: SQL Server - System.Data.SqlCliente.dll (TDS Tabular Data Stream) OLEDB Data Provider - System.Data.OleDb.dll ODBC Data Provider System.Data.Odbc.dll Custom Data Provider conjunto interfaces de acesso a dados Outros - Oracle, Exchange, etc 5 Connection Componente que serve de ligação à fonte de dados Parâmetros necessários: ConnectionString Contém atributos que definem o modo de acesso: Provider = SQLOLEDB; Data Source = servidor; Initial Catalog = BD; User ID = utilizador; Password = Pwd; Trusted Security = Yes; Exemplo: Dim connstring as String = Data Source=localhost;Initial Catalog=NorthWind Dim connection as SqlConnection = New SqlConnection(connString) connection.open()... connection.close() NOTA: As ligações têm de ser explicitamente fechadas 6

Command Componente que permite executar um comando na fonte de dados e possibilita: Retorno de informação (script SQL - SELECT) Modificar informação (script SQL INSERT, UPDATE, DELETE) Executar procedimentos (stored procedures), com e sem parameterização (Parameters Collection) Tipos Comando CommandType.StoredProcedure - Stored Procedure CommandType.TableDirect Tabela (OLEDB Provider) CommandType.Text - Script SQL (por defeito) Métodos ExecuteNonQuery (Execução script para alteração) ExecuteScalar (Retorno de cálculo de um valor: COUNT, MAX, MIN) ExecuteReader (Retorno de um resultado para DataReader) ExecuteXmlReader (Retorno de um resultado para XmlReader: SQL Server 2000 FOR XML ) 7 DataReader Componente que permite o acesso para leitura sequencial do resultado de um comando Forward Only e Read Only (lógica de cursor) Um único registo em memória de cada vez Necessáriamente ligada á fonte de dados Apropriado para consulta de grande volume dados Exemplo: SqlCommand command = connection.createcommand(); command.commandtext = "select nome, numero from alunos"; conn.open(); SqlDataReader reader = command.executereader(); while (reader.read()) s += reader.getstring(0); 8

DataSet Componente que permite aceder e manipular dados de forma desligada da fonte de dados Representação relacional, em memória, composta por tabelas, relações, chaves primárias, chaves primárias Representação de dados (XML) e estruturas (Schema) Combina e relaciona dados de fontes heterógeneas Facilita o transporte de dados em sistemas distribuidos, através de componentes.net, Web Services,.NET Remoting Permite aplicar o mecanismo de DataBinding a nivel gráfico 9 DataAdapter Componente que permite transferir dados e estrutura entre a fonte dados e o DataSet Métodos Fill Preenche o DataSet com o resultado do comando intrínseco ao DataAdapter (SelectCommand) Update Reconciliação de dados entre o DataSet e a fonte dados, recorrendo aos comandos intrínsecos do DataAdapter (InsertCommand, UpdateCommand, DeleteCommand) conforme o estado de cada registo (Added, ModifiedCurrent Deleted) 10

CommandBuilder O DataAdapter necessita ter definido comandos de INSERT, UPDATE, DELETE para actualizar (Update) a fonte dados O Wizard cria automáticamente os comandos em designtime através de uma ligação definida Em run-time o CommandBuilder pode ser utilizado para gerar comandos de actualização de uma única tabela com base no comando intríseco SELECT Exemplo: SqlDataAdapter dataadapter = new SqlDataAdapter("SELECT * FROM Customers", connection); SqlCommandBuilder cmdbuilder = new SqlCommandBuilder(dataAdapter); dataadapter.fill(dataset, "Customers"); // sem o SqlCommandBuilder, esta linha falharia custda.update(custds, "Customers"); connection.close(); 11 Demonstração (Demo 1) 12

DataBinding Mecanismo que permite associar componentes dados a objectos gráficos Fontes Dados: DataSet, DataTable, DataView, DataReader, HashTable, Listas, Arrays, Colecções Objectos Gráficos: Valores Simples: TextBox, Label Multiplos Registos: Repeater, DataList, DataGrid, ListBox, ComboBox Existe um wizard que facilita o DataBinding (design-time) List1.DataSource = dstitles1; List1.DataMember = titles ; List1.DataBind(); 13 Transacção - Conceitos Mecanismo que permite de uma forma isolada e consistente executar uma série de acções como uma unica operação atómica. Execução tudo-ounada. Quem são os players? Um Cliente requisita uma transacção e utiliza-a para executar tarefas (ex: componente.net, ASP.NET, web service) O Gestor Transaccional fornece transacções e coordena a confirmação (commit) transaccional no(s) gestor(es) recurso(s) O Gestor Recursos garante a consistência e o isolamento dos dados numa alteração e repõe a situação inicial dos mesmos em caso de erro (ex: Sql Server, Oracle) 14

Transacção Modelos Manual Gestão explicita de transacções pelo cliente Permite encadeamento explicito transacções Gestor Recursos é responsável por cada transacção. (GR + Gestor Transacional = 1) Não permite coordenação entre multiplos GR Automático As transacções são controladas pelo GT, mediante os atributos definidos no cliente. GT está separado do GR (ex: MS-DTC) Encadeamento implicito transacções Suporta partilha transacções entre componentes Nalguns casos permite coordenação entre multiplos GR e lógica transaccional two-phase commit 15 Transacção Formas Implementação SQL Statements BEGIN TRANS Vantagens Toda a lógica transaccional numa chamada única Modo mais eficiente de correr uma transacção É independente do sistema aplicacional Limitações Contexto transaccional apenas numa fonte dados Scripting especifico da fonte dados Exemplo : (T-SQL : Sql Server) BEGIN TRANSACTION UPDATE... IF @@Error!= 0 GOTO ERROR_HANDLER INSERT... IF @@Error!= 0 GOTO ERROR_HANDLER COMMIT TRANSACTION RETURN ERROR_HANDLER: ROLLBACK TRANSACTION RETURN 0 GO 16

Transacção Formas Implementação ADO.NET Transaction Vantagens Utiliza o modelo classes ADO.NET (Connection, Transaction, Command) Quase tão rápido como o mecanismo (Sql Statement) Numa transacção multiplas chamadas à mesma fonte dados Independente do scripting especifico da fonte dados Limitações Requer gestão ao nível da transacção/ligação SqlTransaction tx = con.begintransaction(); SqlCommand command = con.createcommand(); command.transaction = tx; Try{... tx.commit(); } Catch(Exception ex) { tx.rollback(); } 17 Transacção Formas Implementação Web Forms (ASP.NET) Vantagens Simples implementação, não requer gestão transaccional Limitações Todo o processamento da página numa unica transacção Implementação transaccional na camada apresentação Exemplo: <%@ Page Transaction= Required %> Web Service As mesmas vantagens e limitações dos Web Forms mas aplicadas ao serviço Exemplo: [WebMethod(TransactionOption=TransactionOption.Required)] 18

Transacção Formas Implementação Enterprise Service Componentes Requisitos Importar o namespace System.Enterprises Todososcomponentesdevemherdar a classe ServicedComponent Todos os contrutores devem ser publicos e definidos Assinar a aplicação (strong-name sn.exe k App.dll ) Na AssemblyInfo deve-se definir os seguintes atributos: [assembly: ApplicationName( YourApplicationName )] [assembly: ApplicationActivation(ActivationOption.Library)] [assembly: ApplicationKeyFile(..\\..\\App.snk )] Vantagens Possibilita transacções distribuidas Tira vantagem dos serviços COM+: instanciação, object pooling Desvantagens Perda performance na utilização do Enterprise Services 19 Suporte XML XSL/T, X-Path, etc DataSet Sync XmlData- Document XmlReader XmlText- Reader XmlNode- Reader 20

Suporte XML Visual Studio Contem editor para XML e outro para esquemas XSD DataSet Importar/Exportar dados XML (string, ficheiro, XmlReader,XmlDataDocumento) para um DataSet e viceversa Esquema pode ser deduzido de um DataSet XmlDataDocument Mecanismo sincronização com o DataSet Permite efecutar perguntas XPath num DataSet Efectuar transformações XSLT num DataSet 21 Suporte XML - Exemplos Sincronização entre XmlDataDocument e DataSet connection = new SqlConnection(... ); ordersadapter = new SqlDataAdapter( select...,connection); dataset = new DataSet(); ordersadapter.fillschema(dataset); xmldoc = new XmlDataDocument(dataSet); xmldoc.load( C:\Orders.xml ); Efectuar perguntas XPath num XmlDataDocument nodes = xmldoc.selectnodes( \\OrderID ); foreach(xmlnode node in nodes){ Console.WriteLine(node.InnerText); } 22

Suporte XML - Exemplos Efectuar transformações XSLT num DataSet xmldoc = new Xml.XmlDataDocumento(dataSet); xsldoc = new Xml.Xsl.XslTransform(); xsldoc.load( Order.xsl ); xpathnav = xmldoc.createnavigator(); xsldoc.transform(xpathnav,null); 23 Notas e Boas Práticas Na necessidade do uso de joins criem views e usem como tabelas Em regra geral todas as tabelas devem ter uma chave primária (autogerada) Na necessidade de executar multiplas operações (INSERT, UPDATE, DELETE) em mais que uma tabela utilizem transacções Recorrer a parâmetros em vez de concatenação de sql (Command) Regra geral, filtros e ordenações devem ser feitos directamente no SQL (usando WHERE, ORDER e GROUP) e não em componentes dados As licações devem ser abertas o mais tarde possível e fechadas o mais cedo possível para diminuir a utilização de recursos 24

Informação Util MSDN Web Site.NET Data Access Architecture: msdn.microsoft.com/library/default.asp?url=/nhp/defa ult.asp?contentid=28000519 Data Access Application Block: msdn.microsoft.com/library/default.asp?url=/library/en -us/dnbda/html/daab-rm.asp Performance: http://msdn.microsoft.com/library/enus/dnbda/html/bdadotnetarch031.asp Questões??? 25