Sie sind auf Seite 1von 13

Acesso a Dados (ADO .

NET)

1 Março 2005 Engenharia Software 2005 © 2004 Link Consulting

Agenda www.link.pt

™ 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 Março 2005 Engenharia Software 2005 © 2005 Link Consulting

© 2001 Link Consulting SA 1


Evolução www.link.pt

• Modelo objectos construido na tecnologia .NET


ADO .NET • Evolução natural do ADO
• Focado para arquitecturas N-Tier, Suporte XML, Ligações Fracas
• Componentes optimizadas para ambiente distribuido
ADO • Evolução baseada no provider OLE DB
• Dificuldades: Tecnologia COM
• Suporte BD não relacionais (flat-files, BD hierarquicas)
OLE DB • Modelos objectos construido na tecnologia COM
• Dificuldades: Provider escrito template C++ (ATL)
• Acesso optimizado para ODBC (SQL Server) : ODBCDirect
RDO • Dificuldades: Especifico para acesso ODBC

• 1º Interface orientado a objectos


DAO • Acesso directo BD locais (Access, Excel, DBF) : JET DB Engine
• Dificuldades: Pouco eficiente, requer excesso memória

• API standard escrita em C (baixo nivel)


ODBC • Dificuldades: Utilização em aplicações VB

3 Março 2005 Engenharia Software 2005 © 2005 Link Consulting

Arquitectura www.link.pt

4 Março 2005 Engenharia Software 2005 © 2005 Link Consulting

© 2001 Link Consulting SA 2


Data Provider www.link.pt

™ 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 Março 2005 Engenharia Software 2005 © 2005 Link Consulting

Connection www.link.pt

™ 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 Março 2005 Engenharia Software 2005 © 2005 Link Consulting

© 2001 Link Consulting SA 3


Command www.link.pt

™ 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 Março 2005 Engenharia Software 2005 © 2005 Link Consulting

DataReader www.link.pt

™ 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 Março 2005 Engenharia Software 2005 © 2005 Link Consulting

© 2001 Link Consulting SA 4


DataSet www.link.pt

™ 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 Março 2005 Engenharia Software 2005 © 2005 Link Consulting

DataAdapter www.link.pt

™ 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 Março 2005 Engenharia Software 2005 © 2005 Link Consulting

© 2001 Link Consulting SA 5


CommandBuilder www.link.pt

™ O DataAdapter necessita ter definido comandos de INSERT,


UPDATE, DELETE para actualizar (Update) a fonte dados
™ O Wizard cria automáticamente os comandos em design-
time 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 Março 2005 Engenharia Software 2005 © 2005 Link Consulting

Demonstração www.link.pt

(Demo 1)

12 Março 2005 Engenharia Software 2005 © 2005 Link Consulting

© 2001 Link Consulting SA 6


DataBinding www.link.pt

™ 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 Março 2005 Engenharia Software 2005 © 2005 Link Consulting

Transacção - Conceitos www.link.pt

™ 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-ou-
nada.

™ 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 Março 2005 Engenharia Software 2005 © 2005 Link Consulting

© 2001 Link Consulting SA 7


Transacção – Modelos www.link.pt

™ 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 Março 2005 Engenharia Software 2005 © 2005 Link Consulting

Transacção – Formas Implementação www.link.pt

™ 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 Março 2005 Engenharia Software 2005 © 2005 Link Consulting

© 2001 Link Consulting SA 8


Transacção – Formas Implementação www.link.pt

™ 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 Março 2005 Engenharia Software 2005 © 2005 Link Consulting

Transacção – Formas Implementação www.link.pt

™ 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 Março 2005 Engenharia Software 2005 © 2005 Link Consulting

© 2001 Link Consulting SA 9


Transacção – Formas Implementação www.link.pt

™ Enterprise Service Componentes


™ Requisitos
™ Importar o namespace System.Enterprises
™ Todos os componentes devem herdar 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 Março 2005 Engenharia Software 2005 © 2005 Link Consulting

Suporte XML www.link.pt

XSL/T, X-Path,
etc

DataSet XmlData-
Sync
Document

XmlReader
XmlText- XmlNode-
Reader Reader

20 Março 2005 Engenharia Software 2005 © 2005 Link Consulting

© 2001 Link Consulting SA 10


Suporte XML www.link.pt

™Visual Studio
™ Contem editor para XML e outro para esquemas XSD
™DataSet
™ Importar/Exportar dados XML (string, ficheiro,
XmlReader,XmlDataDocumento) para um DataSet e vice-
versa
™ 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 Março 2005 Engenharia Software 2005 © 2005 Link Consulting

Suporte XML - Exemplos www.link.pt

™ 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 Março 2005 Engenharia Software 2005 © 2005 Link Consulting

© 2001 Link Consulting SA 11


Suporte XML - Exemplos www.link.pt

™ 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 Março 2005 Engenharia Software 2005 © 2005 Link Consulting

Notas e Boas Práticas www.link.pt

™ 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 Março 2005 Engenharia Software 2005 © 2005 Link Consulting

© 2001 Link Consulting SA 12


Informação Util www.link.pt

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/en-
us/dnbda/html/bdadotnetarch031.asp

Questões ???

25 Março 2005 Engenharia Software 2005 © 2005 Link Consulting

© 2001 Link Consulting SA 13

Das könnte Ihnen auch gefallen