Your SlideShare is downloading. ×
Desenvolvimento em .Net - Acesso a Dados
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Desenvolvimento em .Net - Acesso a Dados

2,591
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,591
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
52
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Desenvolvimento em .Net Acesso a Dados
  • 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
  • 6. ADO.NET
  • 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, ...
  • 8. Dataset e DataTable Mental Note: schema vs dados
  • 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
  • 17. Ligação a dados
  • 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
  • 20. Interfaces ● Connection => IDbConnection ● Command => IDbCommand ● DataReader => IDbDataReader ● DataAdapter => IDbDataAdapter
  • 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
  • 23. Exercicio ● Criar projecto 0306 ● testar DataReader
  • 24. Exercicio ● testar DataAdapter
  • 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
  • 32. Exercicio ● Acrescentar no projecto 0306 referencias para: – ProxySistemaBase.dll – Progress.Messages – Progress.o4glrt – Progress.ssl
  • 33. Exercicio
  • 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

×