Download - Desenvolvimento em .Net - Acesso a Dados
![Page 1: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/1.jpg)
Desenvolvimento em .Net
Acesso a Dados
![Page 2: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/2.jpg)
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
![Page 3: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/3.jpg)
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
![Page 4: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/4.jpg)
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
![Page 5: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/5.jpg)
ADO.NET● Infraestrutura para acesso a dados● Independente da base de dados● “Disconnected architecture”● Convertivel para xml
![Page 6: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/6.jpg)
ADO.NET
![Page 7: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/7.jpg)
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, ...
![Page 8: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/8.jpg)
Dataset e DataTable
Mental Note: schema vs dados
![Page 9: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/9.jpg)
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
![Page 10: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/10.jpg)
Operações básicas com datasets e tabelas
● dataset.ReadXml● dataset.WriteXml● datatable.Select
![Page 11: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/11.jpg)
Exercicio● Usando o projecto 0305 criar o seguinte
interface e testar o código apresentado
![Page 12: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/12.jpg)
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...
![Page 13: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/13.jpg)
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
![Page 14: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/14.jpg)
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....
![Page 15: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/15.jpg)
Exercicio● No último projecto...● Project / Add New Item / XML Schema
– mudar nome para tabela.xsd
![Page 16: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/16.jpg)
Exercicio● compilar projecto● acrescentar form com seguinte código
![Page 17: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/17.jpg)
Ligação a dados
![Page 18: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/18.jpg)
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
![Page 19: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/19.jpg)
Data Providers● Disponiveis com a framework
– MS SQL Server => System.Data.SqlClient– ODBC => System.Data.OdbcClient– OLEDB => System.Data.OleDbClient
![Page 20: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/20.jpg)
Interfaces● Connection => IDbConnection● Command => IDbCommand● DataReader => IDbDataReader● DataAdapter => IDbDataAdapter
![Page 21: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/21.jpg)
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
![Page 22: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/22.jpg)
Conjuntos de Dados● Command
– ExecuteReader● devolve um datareader
– forward only, read only– DataAdapter
● Fill– cria um dataset
![Page 23: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/23.jpg)
Exercicio● Criar projecto
0306● testar
DataReader
![Page 24: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/24.jpg)
Exercicio● testar
DataAdapter
![Page 25: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/25.jpg)
Parametros● Um comando pode ter parametros
– cada parametro tem um tipo, direcção e valor
● Acrescentar esta opção no projecto 0306
![Page 26: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/26.jpg)
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
![Page 27: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/27.jpg)
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
![Page 28: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/28.jpg)
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
![Page 29: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/29.jpg)
Integração Progress / ADO.Net● E ainda:
– como parte do MultiITV● 1 DLL muito interessante=> ProxySistemaBase.dll● 3 Programas Progress
![Page 30: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/30.jpg)
ProxySistemaBase.dll● sb221.p
– Executa uma sql para a tabela e condição definidas, devolvendo os campos especificados.
![Page 31: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/31.jpg)
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
![Page 32: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/32.jpg)
Exercicio● Acrescentar no projecto 0306 referencias para:
– ProxySistemaBase.dll– Progress.Messages– Progress.o4glrt– Progress.ssl
![Page 33: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/33.jpg)
Exercicio
![Page 34: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/34.jpg)
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
![Page 35: Desenvolvimento em .Net - Acesso a Dados](https://reader033.vdocuments.site/reader033/viewer/2022060112/556ee0e9d8b42a5f2e8b4fa6/html5/thumbnails/35.jpg)
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