SlideShare uma empresa Scribd logo
1 de 35
Baixar para ler offline
Desenvolvimento em .Net




      Acesso a Dados
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
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
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
ADO.NET
●   Infraestrutura para acesso a dados
●   Independente da base de dados
●   “Disconnected architecture”
●   Convertivel para xml
ADO.NET
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, ...
Dataset e DataTable


                Mental Note: schema vs
                dados
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
Operações básicas com datasets e
            tabelas
●   dataset.ReadXml
●   dataset.WriteXml
●   datatable.Select
Exercicio
●   Usando o projecto 0305 criar o seguinte
    interface e testar o código apresentado
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...
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
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....
Exercicio
●   No último projecto...
●   Project / Add New Item / XML Schema
    –   mudar nome para tabela.xsd
Exercicio
●   compilar projecto
●   acrescentar form com seguinte código
Ligação a dados
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
Data Providers
●   Disponiveis com a framework
    –   MS SQL Server => System.Data.SqlClient
    –   ODBC => System.Data.OdbcClient
    –   OLEDB => System.Data.OleDbClient
Interfaces
●   Connection => IDbConnection
●   Command => IDbCommand
●   DataReader => IDbDataReader
●   DataAdapter => IDbDataAdapter
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
Conjuntos de Dados
●   Command
    –   ExecuteReader
         ●   devolve um datareader
               –    forward only, read only
    –   DataAdapter
         ●   Fill
               –    cria um dataset
Exercicio
●   Criar projecto
    0306
●   testar
    DataReader
Exercicio
●   testar
    DataAdapter
Parametros
●   Um comando pode ter parametros
    –   cada parametro tem um tipo, direcção e valor




●   Acrescentar esta opção no projecto 0306
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
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
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
Integração Progress / ADO.Net
●   E ainda:
    –   como parte do MultiITV
         ●   1 DLL muito interessante=> ProxySistemaBase.dll
         ●   3 Programas Progress
ProxySistemaBase.dll
●   sb221.p
    –   Executa uma sql para a tabela e condição
        definidas, devolvendo os campos especificados.
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
Exercicio
●   Acrescentar no projecto 0306 referencias para:
    –   ProxySistemaBase.dll
    –   Progress.Messages
    –   Progress.o4glrt
    –   Progress.ssl
Exercicio
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
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

Mais conteúdo relacionado

Semelhante a Desenvolvimento em .Net - Acesso a Dados

Semelhante a Desenvolvimento em .Net - Acesso a Dados (20)

2006 - ADONET.ppt
2006 - ADONET.ppt2006 - ADONET.ppt
2006 - ADONET.ppt
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
 
Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01
 
ADO.ppt
ADO.pptADO.ppt
ADO.ppt
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Instalando e usando o odbc ...
Instalando e usando o odbc ...Instalando e usando o odbc ...
Instalando e usando o odbc ...
 
Jdbc
JdbcJdbc
Jdbc
 
Desenvolvimento Delphi
Desenvolvimento DelphiDesenvolvimento Delphi
Desenvolvimento Delphi
 
Vb
VbVb
Vb
 
CURSO JAVA 01
CURSO JAVA 01CURSO JAVA 01
CURSO JAVA 01
 
Desenvolvimento em .Net - Databinding
Desenvolvimento em .Net - DatabindingDesenvolvimento em .Net - Databinding
Desenvolvimento em .Net - Databinding
 
ODI Series - Exportar Tabelas para Arquivo Texto
ODI Series -  Exportar Tabelas para Arquivo TextoODI Series -  Exportar Tabelas para Arquivo Texto
ODI Series - Exportar Tabelas para Arquivo Texto
 
Workshop Ruby on Rails dia 2 ruby-pt
Workshop Ruby on Rails dia 2  ruby-ptWorkshop Ruby on Rails dia 2  ruby-pt
Workshop Ruby on Rails dia 2 ruby-pt
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Acessando Dados com ADO .NET
Acessando Dados com ADO .NETAcessando Dados com ADO .NET
Acessando Dados com ADO .NET
 
Apostila sql
Apostila sqlApostila sql
Apostila sql
 
Apostila: Curso de java III
Apostila: Curso de java IIIApostila: Curso de java III
Apostila: Curso de java III
 
Palestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopPalestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl Workshop
 
Ado.net
Ado.netAdo.net
Ado.net
 

Mais de Vitor Silva

Forum Onde Vais Cidade - Habitação No Porto
Forum Onde Vais Cidade - Habitação No PortoForum Onde Vais Cidade - Habitação No Porto
Forum Onde Vais Cidade - Habitação No PortoVitor Silva
 
Desenvolvimento em .Net - Deployment
Desenvolvimento em .Net - DeploymentDesenvolvimento em .Net - Deployment
Desenvolvimento em .Net - DeploymentVitor Silva
 
Desenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosDesenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosVitor Silva
 
Desenvolvimento em .Net - nHibernate
Desenvolvimento em .Net - nHibernateDesenvolvimento em .Net - nHibernate
Desenvolvimento em .Net - nHibernateVitor Silva
 
Desenvolvimento em .Net - Dados vs Objectos
Desenvolvimento em .Net - Dados vs ObjectosDesenvolvimento em .Net - Dados vs Objectos
Desenvolvimento em .Net - Dados vs ObjectosVitor Silva
 
Desenvolvimento em .Net - Reflection
Desenvolvimento em .Net - ReflectionDesenvolvimento em .Net - Reflection
Desenvolvimento em .Net - ReflectionVitor Silva
 
Desenvolvimento em .Net - Eventos
Desenvolvimento em .Net - EventosDesenvolvimento em .Net - Eventos
Desenvolvimento em .Net - EventosVitor Silva
 
Desenvolvimento em .Net - Excepções
Desenvolvimento em .Net - ExcepçõesDesenvolvimento em .Net - Excepções
Desenvolvimento em .Net - ExcepçõesVitor Silva
 
Desenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User InterfaceDesenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User InterfaceVitor Silva
 
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoDesenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoVitor Silva
 
Desenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a ObjectosDesenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a ObjectosVitor Silva
 
Desenvolvimento em .Net - Herança e Interfaces
Desenvolvimento em .Net - Herança e InterfacesDesenvolvimento em .Net - Herança e Interfaces
Desenvolvimento em .Net - Herança e InterfacesVitor Silva
 
Desenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual StudioDesenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual StudioVitor Silva
 
Desenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas BasicasDesenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas BasicasVitor Silva
 
Desenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkDesenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkVitor Silva
 

Mais de Vitor Silva (16)

Cidadania20
Cidadania20Cidadania20
Cidadania20
 
Forum Onde Vais Cidade - Habitação No Porto
Forum Onde Vais Cidade - Habitação No PortoForum Onde Vais Cidade - Habitação No Porto
Forum Onde Vais Cidade - Habitação No Porto
 
Desenvolvimento em .Net - Deployment
Desenvolvimento em .Net - DeploymentDesenvolvimento em .Net - Deployment
Desenvolvimento em .Net - Deployment
 
Desenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosDesenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes Unitários
 
Desenvolvimento em .Net - nHibernate
Desenvolvimento em .Net - nHibernateDesenvolvimento em .Net - nHibernate
Desenvolvimento em .Net - nHibernate
 
Desenvolvimento em .Net - Dados vs Objectos
Desenvolvimento em .Net - Dados vs ObjectosDesenvolvimento em .Net - Dados vs Objectos
Desenvolvimento em .Net - Dados vs Objectos
 
Desenvolvimento em .Net - Reflection
Desenvolvimento em .Net - ReflectionDesenvolvimento em .Net - Reflection
Desenvolvimento em .Net - Reflection
 
Desenvolvimento em .Net - Eventos
Desenvolvimento em .Net - EventosDesenvolvimento em .Net - Eventos
Desenvolvimento em .Net - Eventos
 
Desenvolvimento em .Net - Excepções
Desenvolvimento em .Net - ExcepçõesDesenvolvimento em .Net - Excepções
Desenvolvimento em .Net - Excepções
 
Desenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User InterfaceDesenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User Interface
 
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoDesenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
 
Desenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a ObjectosDesenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a Objectos
 
Desenvolvimento em .Net - Herança e Interfaces
Desenvolvimento em .Net - Herança e InterfacesDesenvolvimento em .Net - Herança e Interfaces
Desenvolvimento em .Net - Herança e Interfaces
 
Desenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual StudioDesenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual Studio
 
Desenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas BasicasDesenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas Basicas
 
Desenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkDesenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A Framework
 

Desenvolvimento em .Net - Acesso a Dados

  • 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
  • 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
  • 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
  • 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