Desenvolvimento em .Net - Acesso a Dados

3.032 visualizações

Publicada em

  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Desenvolvimento em .Net - Acesso a Dados

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

×