2. Objectivos
● perceber objectivos do ADO.NET
● conhecer arquitectura do ADO.net
● saber o que são Datasets
● saber o que são Datatables
● saber o que são typed datasets
● saber criar datasets e datatables
dinamicamente
3. Objectivos
● conhecer operações básicas com datasets e
tabelas
● perceber conceito de serialização de dados
● identificar objectos relativos a ligações fisicas à
base de dados
● conhecer interfaces que têm que ser
implementados por dataproviders
4. Objectivos
● perceber como tirar vantagem de “programação
de dados” usando interfaces
● saber utilizar connection, command,
datareader, dataadapter
● perceber como é conseguida a integração entre
progress e .net
● saber como é feita a integração progress .net
no MultiITV
5. ADO.NET
● Infraestrutura para acesso a dados
● Independente da base de dados
● “Disconnected architecture”
● Convertivel para xml
7. Dataset
● base de dados em memória
● tabelas + relações
– >1 tabela
● desligado da base de dados
– depois de carregado
● desconhece completamente a base dados
– tanto pode reter dados vindos de SQL Server,
Progress, XML, ...
9. Dados sem acesso a dados
● Criar definição de dataset
● Criar definição de datatable
● Criar definição de datarow
● Criar definição de
datacolumn
● Inserir dados
● Criar Projecto 0305
10. Operações básicas com datasets e
tabelas
● dataset.ReadXml
● dataset.WriteXml
● datatable.Select
11. Exercicio
● Usando o projecto 0305 criar o seguinte
interface e testar o código apresentado
12. Serializar
● “Magia” que transforma um objecto em texto
– exemplo Xml referente a Dataset
– mas pode ser aplicado a todo o tipo de objectos
● Também existe o inverso
– deserializar
● Interessante para enviarmos objectos entre
sistemas ou processos...
13. Typed Dataset
● Typed => que tem indicação do tipo de dados
● Ao acedermos a uma coluna de uma linha
numa tabela de um dataset
– Ds.Tables(0).Rows(0).Item(0)
– não fazemos ideia do que está lá dentro (string,
numero, data, ...)
● Typed Dataset resolve essa questão e ainda:
– Ds.Tables(0).Rows(0).NomeColumn
– fornece uma sintaxe mais amigavel
14. Typed Dataset
● Se tivermos a definição da tabela/dataset em
XSD
● podemos usar o utilitário xsd.exe
– typed dataset não é mais do que um dataset com
mais propriedades
● herança....
15. Exercicio
● No último projecto...
● Project / Add New Item / XML Schema
– mudar nome para tabela.xsd
16. Exercicio
● compilar projecto
● acrescentar form com seguinte código
18. Data Providers
● Implementam a ligação fisica à base de dados
● objectos principais
– connection => ligação fisica à base de dados
– command => comando para ser executado na base
de dados
– datareader => resultado do comando num formato
forwardonly, readonly
– dataadapter => resultado do comando em formato
dataset
19. Data Providers
● Disponiveis com a framework
– MS SQL Server => System.Data.SqlClient
– ODBC => System.Data.OdbcClient
– OLEDB => System.Data.OleDbClient
21. Command
● Execute
– devolve só o número de linhas afectadas com o
comando.
– ideal para inserts / updates / deletes
● ExecuteScalar
– devolve somente o valor da primeira coluna da
primeira linha
– ideal para calculos. exemplo: comando que calcula
um saldo
22. Conjuntos de Dados
● Command
– ExecuteReader
● devolve um datareader
– forward only, read only
– DataAdapter
● Fill
– cria um dataset
25. Parametros
● Um comando pode ter parametros
– cada parametro tem um tipo, direcção e valor
● Acrescentar esta opção no projecto 0306
26. Integração Progress / ADO.Net
● ADO Datasets => Progress DataSets
● ADO DataTables => Progress Table / Temp-
Tables
● Progress 9.1D e superior inclui
– ProxyGenerator
● gera uma DLL que permite o acesso via Application
Server a programas Progress
● esses Programas podem (entre outras coisas) devolver
– ADO.Net DataTables, ADO.Net DataSets, ADO.Net Typed
DataSets
27. Integração Progress / ADO.Net
● Vantagens
– 0 ligações ODBC
– Triggers OK
● Implica que o programa esteja bem estruturado
– Dados de Entrada e Dados de saída perfeitamente
definidos
● Bonus
– qualquer programa Progress fica (quase) logo
disponivel nas 2 plataformas
● e com esforço minimo fica disponivel via webservices
28. Integração Progress / ADO.Net
● Mais uma razão para nos programas Progress:
– separar acesso a dados, visualização dos mesmos
– não escrever directamente nas tabelas.
– nunca usar variaveis globais, reduzir em 99% a
utilização de variaveis com um ambito maior do que
o procedimento onde são defindas
29. Integração Progress / ADO.Net
● E ainda:
– como parte do MultiITV
● 1 DLL muito interessante=> ProxySistemaBase.dll
● 3 Programas Progress
30. ProxySistemaBase.dll
● sb221.p
– Executa uma sql para a tabela e condição
definidas, devolvendo os campos especificados.
31. ProxySistemaBase.dll
● sb250-01.p
– Executa um programa progress e devolve uma
tabela.
● inspirado no Command.ExecuteReader / DataAdapter.Fill
● sb250-02.p
– Executa um programa progress e devolve um valor.
● inspirado no Command.ExecuteScalar
34. Objectivos
● perceber objectivos do ADO.NET
● conhecer arquitectura do ADO.net
● saber o que são Datasets
● saber o que são Datatables
● saber o que são typed datasets
● saber criar datasets e datatables
dinamicamente
35. Objectivos
● conhecer operações básicas com datasets e
tabelas
● perceber conceito de serialização de dados
● identificar objectos relativos a ligações fisicas à
base de dados
● conhecer interfaces que têm que ser
implementados por dataproviders