Escolar Documentos
Profissional Documentos
Cultura Documentos
INTRODUO
Introduo
Aplicativos web acessam com muita frequncia fontes de dados para o armazenamento e recuperao de informaes. Na plataforma .NET existem vrias formas de se fazer isso, veremos a seguir as tcnicas mais usadas:
DataSource Controls ADO.NET DataSet Tipado e TableAdapters Classes de Negcio
3
Introduo
#Sistemaco Desenv SISTEMACO_DESENV.WORLD = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.5.9.74)(PORT = 1521)) (CONNECT_DATA = (SID = CCD1OST1)) )
Introduo
Server Explorer
Permite visualizar o banco de dados
Criando uma Conexo 1. Clique com o boto direito em Data Connections e selecione opo Add Connection... 2. Ser exibida uma tela Choose Data Souce com uma lista de opes de fontes de dados, selecione Microsoft SQL Server. 3. Na dropdownList abaixo ser exibido as opes de Provides disponveis para a fonte de dados selecionada. Selecione .NET Framework Data Provider for SQL Server. Aperte Continue 4. Ser exibida a tela Add Connection. - Digite o nome ou IP do servidor: 192.168.0.1 - Selecione o tipo de autenticao: SQL Server - Digite o usurio do banco de dados: alunocurso - Digite a senha: alunocurso - Selecione o banco de dados: Northwind_br - Para finalizar aperte o boto para testar a conexo e depois OK. 5
Introduo
Exibindo as Propriedades 1.Expanda os itens da conexo e depois da tabela. 2.Ser exibido todas as tabelas. 3.Expanda os itens da tabela. Ser possvel ver todos os campos. 4.Para saber mais detalhes sobre o campo, clique com o boto direito do mouse e selecione propriedades.
DATASOURCE CONTROLS
DataSource Controls
Normalmente voc vai criar cdigos para acessar dados usando as classes do ADO.NET, porm o ASP.NET permite voc fazer isso declarativamente, sem a necessidade de criar cdigo nenhum. O ASP.NET possui dois tipos de Server Controls que permitem o uso do modelo de acesso a dados declarativo. Esses controles gerenciam internamente todas as tarefas necessrias para o acesso e exibio dos dados, so eles:
Data Souce Controls
Data-Bound Controls
8
DataSource Controls
DataSource Controls
Data-Bound Controls
Os Data-Bound Controls so responsveis por renderizar os dados no formato de tags html conforme a requisio do browser. Esses controles se ligam aos DataSource Controls e automaticamente buscam os dados no momento apropriado no ciclo de vida da pgina. Eles se conectam aos DataSources Controls atravs da propriedade DataSourceID. Os data-bound controls possuem tambm a propriedade DataSource para atribuio de colees de dados e o mtodo DataBind para vinculao dos dados em tempo de execuo. Veremos isso com mais detalhes adiante. O ASP.NET disponibiliza os seguintes Data-Bound Controls:
BulletedList, CheckBoxList, DropDownList, ListBox, RadioButtonList, Repeater, DataList, DetailsView, FormView, GridView, Menu e TreeView
10
DataSource Controls
11
DataSources
Configurando um SqlDataSource
1. Arraste um SqlDataSource, localizado na categoria Data, para dentro do webform 2. Ser exibido o controle na tela juntamente com seu SmartTag, clique em Configure Data Source
3. Na tela configure DataSource voc pode criar uma nova conexo ou usar uma existente. Vamos abrir a dropdownlist e selecionar a conexo que criamos anteriormente. Repare que ser exibido a String de Conexo com o banco de dados.
4. Aperte o boto Next
12
DataSources
Configurando um SqlDataSource
1. Ser exibida uma nova tela perguntando se deseja salvar a String de Conexo com o banco de dados no web.config. Marque que sim e d um nome a essa ConectionString. Isso ser importante para que sempre que precisarmos acessar o banco de dados termos essa informao guardada em um nico local. 2. D o nome: Treinamento 3. Aperte o boto Next. 4. Ser exibida uma tela para voc optar se vai usar uma instruo SQL customizadas, uma Stored Procedure ou se vai especificar direto o nome da tabela e campos que deseja exibir. 5. Selecione a segunda opo, escolha a tabela STATUS_REQUISICAO_SERVICO e selecione todos os campos. 6. Aperte Next 7. Para testar o select aperte o boto Test Query
8. Aperte Finish
13
DataSources
14
DataSources
1. Clique no SqlDataSource e defina sua propriedade ID com o nome SqlDataSourceStatus 2. Arraste para tela os seguintes controles: - DropDownList - RadioButtonList 3. Clique no SmartTag e escolha a opo Choose DataSource
15
DataSources
1. Arraste um GridView para o webform 2. Clique no SmartTag e na lista Choose DataSource selecione nosso SqlDataSourceStatus 3. Clique na opo Auto Format... e escolha o scheme Professional (ou qualquer outro) 4. Marque as opes: - Paging Paginao - Sorting Ordenao - Editing Edio - Deleting Excluso - Selection Seleo 5. Execute a pgina e veja o resultado.
16
DataSources
1. Crie acima do GridView os seguintes controles: - Label: text=Protudo - TextBox: id=txtProduto - Boto: text=Pesquisar 2. Clique no SmartTag do SqlDataSourceStatus e selecione a opo Configure DataSouce 3. Na configurao da instruo SQL aperte o boto para definirmos a clusula WHERE.
4. Na tela seguinte escolha as seguintes opes: - Column: Produto - Operator: Like - Source: Control - Control ID: txtProduto
5. Aperte o boto Add e depois OK
17
DataSources
Resultado
18
ADO.NET
19
ADO.NET
ADO.NET separou em classes distintas, componentes para acesso a dados e componentes para manipulao de dados Os componentes responsveis pelo acesso a dados so os Providers. Eles so encarregados pela conexo com uma fonte de dados, execuo de comandos e a recuperao das informaes. Uma vez que o Provider busca os dados, eles podem ser processados diretamente ou armazenados em um Dataset para a manipulao dos dados. O Dataset pode ser usado com um Provider, ou de forma independente, com informaes inseridas pelo aplicativo ou arquivos XML. As classes do ADO.NET so encontradas no namespace System.Data
ADO.NET
DataSet
O DataSet o componente central no cenrio dos dados desconectados do ADO.NET. Ele a representao em memria do banco de dados.
21
ADO.NET
22
ADO.NET
23
ADO.NET
Providers
Eles so encarregados pela conexo com uma fonte de dados, execuo de comandos e a recuperao das informaes. Existem 4 providers nativos do .Net Framework:
1. 2. 3. .NET Framework Data Provider for SQL Server Para o Microsoft SQL Server verso 7.0 ou superior. Usa o namespace System.Data.SqlClient .NET Framework Data Provider for OLE DB Para fontes de dados acessadas atravs de OLE DB. Usa o namespace System.Data.OleDb .NET Framework Data Provider for ODBC Para fontes de dados acessadas atravs de ODBC. Usa o namespace System.Data.Odbc .NET Framework Data Provider for Oracle Para o Oracle verso 8.1.7 ou superior. Usa o namespace System.Data.OracleClient
24
4.
ADO.NET
DataAdapter Responsvel em preencher um DataSet com informaes vindas de uma fonte de dados.
25
ADO.NET
Connection
Representa a conexo com a fonte de dados Classes de acordo com o tipo de Provider: OleDBConnection, OdbcConnection, SqlConnection e OracleConnection Principais propriedades e mtodos: ConnectionString String de conexo com o banco de dados. Utilize o ConfigurationManager.ConnectionStrings para recuperar essa informao do web.config. Open Abre a conexo com o banco de dados BeginTransaction Inicia uma transao Close Fecha a conexo com o banco de dados
26
ADO.NET
1. Arraste os seguintes controles para o webform: - Boto: id=btnConectar; text=Conectar - Label: id=lblStatus; text= 2. Abra o evento clique do boto
6. Crie uma linha comentada marcando o local onde ficar a codificao para efetuar os comandos na fonte de dados
7. Feche a conexo 8. Exiba na tela uma mensagem na tela de que os comandos foram concludos.
27
ADO.NET
Command
Representa um instruo SQL ou Stored Procedure para ser executada em uma fonte de dados Classes de acordo com o tipo de Provider: OleDBCommand,OdbcCommand,SqlCommand e OracleCommand Principais propriedades e mtodos: Connection Conexo com o banco que ser usada CommandType Tipo de Comando (Text, StoredProcedure ou TableDirect)
ADO.NET
Criando um Command
1. No local que separamos para codificao, instancie um OracleCommand 2. Atribua a conexo ativa a propriedade Connection do Command 3. Defina o CommandType como do tipo Text 4. Atribua a instruo SQL a propriedade CommandText 5. Execute o mtodo ExecuteReader 6. Atribua o resultado a um objeto OracleDataReader 7. Popule um GridView com o resulado desse objeto.
29
ADO.NET
DataReader
Armazena dados recuperados de uma fonte de dados. Muito veloz, mas somente para Leitura e navegao para frente (forward-only) Classes de acordo com o tipo de Provider: OleDBDataReader, OdbcDataReader, SqlDataReader e OracleDataReader
30
ADO.NET
DataAdapter
Responsvel em preencher um DataSet ou DataTable com informaes vindas de uma fonte de dados. O DataSet independente do DataSource e ele pode ter dados de mltiplos DataSources diferentes; esses DataSources so controlados atravs do DataAdapter. Classes de acordo com o tipo de Provider: OleDBDataAdapter, OdbcDataAdapter, SqlDataAdapter e OracleDataAdapter Principais propriedades e mtodos: SelectCommand Command que ser usado no mtodo Fill. Pode ser atribudo no contrutor da classe. Fill Preencho o DataSet ou DataTable que recebe por parmetro
31
ADO.NET
Usando o DataAdapter
1. Adapte o cdigo anterior para usar um DataSet em vez de um DataReader 2. Instancie DataSet com o nome de dsCargos 3. Instancie um OracleDataAdapter com o nome de meuDataAdapter passando como parmetro oOracleCommand que iremos usar para preencher o DataSet
4. Chame o mtdo Fill passando como parmetro o DataSet que queremos preencher.
5. Atribuia o DataSet ao GridView
32
ADO.NET
Parameter
Responsvel por armazenar os parmetros que sero usados nos Commands. So muito importantes para evitar SQL Injection. Classes de acordo com o tipo de Provider: OleDBParameter, OdbcParameter, SqlParameter e OracleParameter Os parmetros na instruo SQL do Command sero substitudos por ?, no caso do Provider for OLE DB e @nomeparamentro, no caso do SQL Server
ADO.NET
Usando o Parameter
1. Arraste um GridView para a pgina, altere o ID para GridViewClientes e arrume os controles para que fiquem posicionados conforme a imagem ao lado. 2. Altere a propriedade AutoPostback do ddlCargos para True 3. Altere o Load da pgina para carregar o cdigo inicial da ddlCargos somente se no for um postback. Verifique a propriedade da pgina usando o cdigo If not Page.IsPostBack 4. Abra o evento ddlCargo_SelectedIndexChanged clicando duas vezes sobre o dropdownlist. Iremos copiar o cdigo que inserimos no boto btnConectar para este evento e fazer as alteraes para efetuar uma pesquisa de clientes por cargo. 5. Altere o CommandText para a nova Instruo Sql: Select * from clientes where cod_cargo = @cod_cargo. Repare o nome do objeto parmetro que teremos que criar no Command. 6. Instancie um objeto OracleParameter para criar o parmetro e definas as seguintes propriedades: - Direction=Input; DbType=String - ParameterName=Cod_Cargo - Value=ddlCargo.SelectedValue 7. Adicione o Parameter a coleo de Parameters do objeto Command. 8. Execute a pgina
34
ADO.NET
Usando o Parameter
35
ADO.NET
Resultado
DATASET TIPADO
37
DataSet Tipado
DataSet Tipado
O DataSet Tipado uma classe que deriva da classe do DataSet, herda todos seus mtodos, eventos e propriedades. Adicionalmente o DataSet Tipado possui eventos, mtodos e propriedades fortemente tipadas, isso significa que voc pode acessar as tabelas e colunas diretamente pelos seus nomes, em vez de passar como parmetro por uma string. Alm de melhorar a leitura do cdigo, permite que o intellisense do Visual Studio complete o cdigo para voc ao referenci-lo, isso previne contra erros de digitao somente detectados em tempo de execuo.
38
DataSet Tipado
TableAdapters
Voc pode pensar no TableAdapter como um DataAdapter com seu prprio objeto de conexo e a habilidade de conter mltiplas queries. Cada query exposta ao aplicativo atravs de mtodos pblicos. Tipicamente contm os mtodos Fill e Update, para buscar e atualizar dados respectivamente. Enquanto o DataAdapter uma das principais classes dos .NET Framework Data Providers, o TableAdapeter uma classe gerada separadamente em tempo de desenho atravs do DataSet Designer. Voc pode cri-lo no mesmo momento que estiver criando os DataSets Tipados atravs do Configuration Wizard ou arrastando do DataBase Explorer para dentro do DataSet Designer.
39
DataSet Tipado
Criando um TableAdapter
1. Clique com o boto direito na raiz do seu projeto, clique em Add ASP.NET Folder e selecione App_Code 2. Clique com o direito do mouse em App_Code e selecione Add New Item 3. Selecione a opo DataSet e d o nome de DsStatus 4. Automaticamente abrir o TableAdapter Configuration Wizard 5. Ser apresentado a conexo que est armazenada no seu web.config, aceite-a e aperte ao boto Next 6. Ser perguntado como o TableAdapter acessar o banco de dados. Selecione Use SQL Statments e aperte Next 7. Na tela seguinte , na caixa de texte digite a instruo SQL: Select * from status_requisicao_servico 8. Aperte a opo Advanced Options e marque as opes: Generete Insert, Update e Delete; Refresh the data table. Aperte OK 9. Aperte Next 10. Nesta tela ser apresentado se deseja criar os mtodos de preencher um DataTable (Fill), Retornar um Datatable (GetData) e os de atualizao de dados. Aceite as sugestes e aperte Next e Finish
40
DataSet Tipado
Usando um ObjectDataSource
O ObjectDataSource permite ligar um Data-Bound Control a classes de negcio de forma declarativa.
1. Crie um novo webform chamado aula3.aspx 2. Arraste um ObjectDataSouce para a tela e clique em Configure DataSource 3. Selecione o TableAdapter que criamos anteriormente, ele estar com o nome de dsClientesTableAdapters.clientesTableAdapter. Aperte Next 4. Voc vai reparar que ele vai mapear as operaes de Select, Update, Insert e Delete aos mtodos do TableAdapter. 5. Aperte Finish 6. Arraste um GridView para o webform, escolha o estilo Professional no Autoformat e em Choose DataSource selecione o que acabamos de criar.
7. Voc vai perceber que ser disponibilizado todas as funcionalidades que vimos atravs do SQLDataSource. Selecione todas elas.
8. Execute a pgina
41
DataSet Tipado
6. Digite no campo a instruo SQL: SELECT * FROM status_requisicao_servico WHERE nm_descricao_status LIKE '%' + :nome + '% 7. Aperte Next 8. Digite o nome FillByNome para o mtodo de preenchimento de DataTable e GetDataByNome para o de retorno de um DataTable. 9. Aperte Finish 10. Selecione o novo mtodo, v a janela de propriedades e clique no boto .... Altere o tipo do parmetro para String
42
DataSet Tipado
43
DataSet Tipado
1. Arraste um boto para baixo da ltima GridView e altere as seguintes propriedades: - Boto: id=btnCriaDataSet; text=Cria DataSet Tipado - Label: id=lblResultado; text= 2. Crie um Sub com o nome de ProcessaDados que recebe como parmetro um DataRow tipado com o nome de RowProcessar. 3. Programe esta sub para atribuir ao label os dados do cliente. 4. Abra o evento btnPesquisa_Click 5. Instancie um objeto DataSetClientes do tipo dsClientes 6. Declare um DataRowClientes do tipo DsClietnes.clienteRow e instancie ele chamando o mtodo NewclientesRow 7. Preencha o DataRow com informaes do cliente e passe-o como parmetro para a sub ProcessaDados
44
DESENVOLVIMENTO EM CAMADAS
45
Classes de Negcio
Desenvolvimento em Camadas
Camadas Lgicas (Layers)
Separao Lgica do cdigo em diferentes camadas de acordo com responsabilidades
Camada de Apresentao Camada de Negcios
Fcil manuteno.
46
Classes de Negcio
Camada de Apresentao
Responsvel por receber as informaes externas e interagir com o usurio. Ex.: Pgina Web, Windows Form, Pgina Mobile, etc...
47
48
Os Application blocks so como guias de boas prticas de desenvolvimento recomendadas pela Microsoft, incluindo cdigo fonte e documentao. Como no poderia ser diferente, os desenvolvedores podem estender ou modificar o cdigo de acordo com a necessidade.
Documentao e Download: http://msdn.microsoft.com/en-us/library/cc467894.aspx
49
50
As funcionalidades do ADO.NET so encapsuladas em mtodos que tornam as suas classes muito fceis e produtivas de se usar.
51
52
53
Efetuando Incluso
54
Efetuando Update
Button ID = btnAtualizar
Efetuando Excluso
Button ID = btnExcluir
55
CLASSES DE NEGCIO
56
Classes de Negcio
Classe de Negcio
Propriedades
Campos da Tabela SGBD
Registros
DataSet
Mtodos
LimpaPropriedades()
InsertQuery()
ProxCod() UpdateQuery() DeleteQuery() SelectQuery() MontaWhere() AdicionarParamentrosWhere() NothingIfNull()
57
Dentro da pasta reservada App_code, colocaremos 3 subPastas (Controller/Data/Model). Essas SubPastas representam as diferentes camadas da aplicao. Segue um breve resumo dessas camadas:
Controller: Camada onde ficam os controladores das pginas. Cada pgina da aplicao dever ter um controller associado. Data: Onde ficam os DataSets tipados utilizados pela aplicao. Model: Essa camada representa o Negcio da aplicao, nela que ficaro as classes de negcio da aplicao
Classes de Negcio
59
Classes de Negcio
Mtodo Salvar no Controller chamando o Mtodo Inserir da Classe de Negcio Entrevista
60
Classes de Negcio
Mtodo Deletar.. no Controller chamando o Mtodo Apagar... da Classe de Negcio Entrevista. Observem que neste caso, o Mtodo Apagar.. No utiliza parmetros, ao invs disso ele concatena na query o valor passado pelo Controller. Essa tambm uma possibilidade, apesar de no ser a melhor escolha. Sempre que possvel, utilizem paramtros. mais seguro.
61
Classes de Negcio
Aproveitando o nosso exemplo, vamos criar o procedimento em camadas utilizando Controller e classe de Negcio. Faremos os mtodos Update e Delete. Primeiro, vamos adicionar as 3 pastas ( Data / Controller / Model) dentro da pasta App_Code. Criamos agora um Controle com o nome de cTreinamento e adicionamos na pasta Controller. Criamos agora uma Classe de Negcio nTreinamento e adicionamos na pasta Model.
62
Classes de Negcio
Negcio
Crie dois Mtodos na classe de Negcio nTreinamento.Alterar e Listar, conforme descrito ao lado.
63
Classes de Negcio
Controller
Adicione os NameSpaces
64
Classes de Negcio
Pgina
Na pgina: Carregue uma comboBox com os Status da Tabela. Crie dois botes: Alterar e Excluir
Adicione o Controlador da Pgina conforme descrito ao lado. No esquea da Instruo (if (!IsPostBack), que significa: Quando no for um PostBack. Carregue a Combo
65
Classes de Negcio
Pgina
Na pgina: D dois cliques no boto Alterar em modo Design, e o Visual Studio cria automaticamente o evento Click do boto no modo Server da pgina. Programeo conforme o cdigo abaixo.
66
PUBLICANDO O WEBSITE
Introduo ao C#
1 2
A esquerda: Arquivos de sua aplicao
3
A direita: Arquivos de destino
68
FIM
Muito Obrigado !
Dvidas: doria@brasilcenter.com.br
69