Documente Academic
Documente Profesional
Documente Cultură
Neste material, você encontrará também noções sobre os principais recursos do ambiente de desenvolvimento proposto
– o Microsoft Visual Studio. Entre eles, podemos destacar a estrutura de criação de projetos e soluções, os componentes
visuais e as ferramentas para depuração de código.
ACOMPANHENAWEB Você poderá observar ainda a criação de um projeto que, apesar de simples, servirá como base para utilização do
Pág. 28 Pág. 29
ambiente de desenvolvimento para projetos de qualquer tamanho ou necessidade.
Pág. 32 Pág. 32
PORDENTRODOTEMA
Recursos do Ambiente de Desenvolvimento. Inovações na Linguagem e Sintaxe. Utilizando Windows
Forms e Respectivos Controles
Tema 01
Recursos do Ambiente de Desenvolvimento. Inovações O .NET Framework foi desenvolvido pela Microsoft com o objetivo de criar um mecanismo único de desenvolvimento,
Pág. 33 Pág. 33
compilação, construção e execução de aplicações. O .NET Framework se sustenta em dois pilares: o da CLR e o da
na Linguagem e Sintaxe. Utilizando Windows Forms e $QKDQJXHUD (GXFDFLRQDO 3URLELGD D UHSURGXomR ¿QDO RX SDUFLDO SRU TXDOTXHU PHLR GH LPSUHVVmR HP IRUPD LGrQWLFD UHVXPLGD RX PRGL¿FDGD HP OtQJXD
FCL.
Respectivos Controles SRUWXJXHVDRXTXDOTXHURXWURLGLRPD
A CLR tem capacidade de interagir com várias linguagens, tais como Visual C++, Visual C#, Visual Basic, JavaScript e
Visual F#. Este curso será fundamentado em Visual C#, pois, por ser baseado em C / Java, possui uma rápida curva de
aprendizagem graças aos conteúdos anteriores. No entanto, todo conteúdo referente ao ambiente de desenvolvimento
e seus componentes se comporta da mesma forma caso você queira experimentar outras linguagens.
A FCL (Framework Class Library) detalha um conjunto padrão de bibliotecas, no qual armazenam-se classes, interfaces
e tipos de dados. Nela se encontram as classes primordiais ao desenvolvimento, dentro dos namespaces System,
System.Data, System.Collections, etc.
Neste curso, será utilizada a versão 2010 do Microsoft Visual Studio, o qual tem sua tela inicial reproduzida na Figura
1.1.
Existem vários tipos de projetos, conforme demonstrado na Figura 1.3. Dentre eles, os mais utilizados são:
Windows Application: projeto para criação de aplicativos que serão executados diretamente no computador do
XVXiULRVHPKDYHUDQHFHVVLGDGHGDLQVWDODomRHPVHUYLGRUHV2SURGXWR¿QDOGHVWHWLSRGHSURMHWRpXPDUTXLYR
com extensão .exe.
PORDENTRODOTEMA PORDENTRODOTEMA PORDENTRODOTEMA
Console Application: programas criados neste tipo de projeto também geram arquivos com extensão .exe, tal como Repare que, ao criar o projeto, é apresentada a opção da criação de uma Solution. Esse recurso é utilizado para que using System.IO;
o Windows Application. No entanto, seu resultado é uma tela de Prompt de Comando que, por ser mais simples, sejam agrupados vários projetos que, embora de tipos diferentes, fazem parte da mesma solução. Por exemplo, uma
exige menos recurso do computador que está executando o programa. Em contrapartida, a interface com o usuário é solução pode conter um projeto ASP.NET Web Application responsável por uma loja virtual, um projeto Windows Forms
diminuída, sendo utilizadas somente entradas via teclado. Application para que os funcionários internos gerenciem a operação da empresa e um projeto Console Application para namespace TADSConsoleApp
automação do controle do estoque com utilização de leitores de código de barras.
ASP.NET Web Application: este projeto cria uma série de páginas que serão interpretadas por um servidor de {
aplicação web, tal como o IIS (Internet Information Services) da própria Microsoft. O cliente acessa a aplicação via A Figura 1.5 mostra o resultado da criação da aplicação, bem como o primeiro código-fonte já iniciado pelo próprio
ambiente de desenvolvimento. class Program
browser e todo o processamento é realizado pelo servidor.
{
O primeiro projeto que será utilizado como base neste tema será um Console Application, conforme mostrado na Figura
1.4. static void Main(string[ ] args)
(VVH SURJUDPD HVWi VHQGR FULDGR FRP R QDPHVSDFH7$'6&RQVROH$SS ,VVR VLJQL¿FD TXH RXWURV SURJUDPDV SRGHP
utilizar funções criadas neste programa, desde que este mesmo namespace seja referenciado.
O programa segue com a declaração de classe, a qual contém métodos e atributos que serão consumidos e utilizados
pela aplicação. O primeiro método da classe Program, que foi criado automaticamente, é o método Main, obrigatório
para toda classe.
Figura 1.5 Projeto TADSConsoleApp e o código fonte Program.cs O primeiro programa executado neste tema será o clássico Hello World. Para isso, será utilizada a classe Console, que
está contida no namespace System. O método Writeline será utilizado para que a informação seja escrita no prompt.
O programa se inicia com a declaração de namespace, e, para utilizar as bibliotecas, emprega-se a diretiva Using.
Depois disso, o método ReadKey faz com que seja aguardado o pressionar de qualquer tecla. O código-fonte e a sua
Sendo assim, caso o programa utilize arquivos externos, tais como arquivos .CSV1, deverá ser declarado o namespace
Figura 1.4 Criação do projeto TADSConsoleApp 6\VWHP,2TXHSRVVXLFODVVHVHVSHFt¿FDVSDUDOHLWXUDHHVFULWDGHDUTXLYRVFRQIRUPHPRVWUDD)LJXUD execução podem ser respectivamente vistos na Figura 1.7.
1 A extensão .CSV (Comma Separated Values) refere-se a arquivos mais robustos compostos por dados tabelados, o que se também conhece como sendo using System;
uma implementação de arquivos do tipo . txt. Esses arquivos são descritos em forma de registros separados por caracteres como vírgulas, ponto e vírgulas,
tabulações e aspas (“ ”). Permitem fácil manipulação de dados. (GDAL- Geospatial Data Abstraction Library. Disponível em: <http://www.gdal.org/drv_csv.html>.
Acesso em: 12.09.2014)
using System.IO;
}
Figura 1.8 ReadLine e WriteLine com container para a variável nome
Figura 1.7 Fonte Hello World e Execução do Programa em Prompt
}
PORDENTRODOTEMA PORDENTRODOTEMA PORDENTRODOTEMA
As próximas estruturas a serem utilizadas serão explanadas através de um projeto em que seja possível a utilização de
uma interface mais amigável. Para isso, será criado um novo projeto que faz parte da mesma solução anterior (TADSApps),
PDVDJRUDFRP:LQGRZV)RUPV$SSOLFDWLRQ9RFrSRGHYHUQD)LJXUDTXHQRFDPSR6ROXWLRQHVSHFL¿FRXVH³$GGWR
solution” (acrescentar à solução).
Figura 1.10 Solution Explorer com os dois projetos Figura 1.11 Toolbox
Figura 1.9 Criação do Projeto Windows Form
Será criado um novo Windows Form com o nome HelloWorld, no projeto TADSWinFormApp. Para este formulário, alguns Para utilizar qualquer um desses componentes, basta arrastá-los para a área desejada no Windows Form. A maioria
2UHÀH[RGHVVDFULDomRHPXPDVROXomRMiH[LVWHQWHSRGHVHUYLVWRQD)LJXUDTXHGHPRQVWUDRGRFN6ROXWLRQ GHOHV WHUi XPD UHSUHVHQWDomR JUi¿FD QR SUySULR IRUP 1R HQWDQWR DOJXQV FRPSRQHQWHV FRPR 7LPHU TXH H[HFXWD
componentes visuais serão utilizados, tais como Button, TextBox e Label, que se encontram, todos, no dock Toolbox,
Explorer, no qual é possível visualizar todas as estruturas criadas até o momento no projeto. operações de tempo em tempo), OpenFileDialog (que abre uma caixa de diálogo para solicitar a abertura de um arquivo)
que pode ser visto na Figura 1.11.
ou BackgroundWorker (que implementa várias tarefas sendo processadas simultaneamente) são exibidos em uma área
abaixo do Windows Form.
Ao clicar em Edit Items, o Visual Studio apresenta o recurso String Collection Editor, no qual as opções que poderão ser
selecionadas no ComboBox podem ser inseridas, como pode ser visto na Figura 1.15.
sentido, facilitando o trabalho. Para renomeá-los, basta alterar a propriedade Name de cada um dos componentes, o que 3DUDLGHQWL¿FDUTXDOpRFRPSRQHQWHFRVWXPDVHXWLOL]DUDVGXDVRXWUrVSULPHLUDVOHWUDVGRVHXQRPHSRUH[HPSOR
pode ser feito através do dock Properties, como demonstrado na Figura 1.13, em que são mostradas as propriedades
para o ComboBox, utilizou-se “cbx”.
do objeto ComboBox.
1RGRFN3URSULHGDGHVSRGHPVHUGH¿QLGRVDWULEXWRVFRPRWH[WRDVHUH[LELGRWDPDQKRIRQWHVHYLVLELOLGDGH
Todos os componentes que recebem uma lista de dados, tais como ComboBox, ListBox ou DataGridView, possuem um
atalho em cima do componente visual, quando este está selecionado. Esse atalho é chamado de action tag e auxilia na
criação dos itens que serão inseridos na lista. Essa opção pode ser vista no objeto ComboBox na Figura 1.14.
PORDENTRODOTEMA PORDENTRODOTEMA PORDENTRODOTEMA
Cada um dos componentes visuais que recebem uma lista de dados possui uma resposta diferente ao action tag. Para using System; Repare que existe uma grande lista de namespaces importados automaticamente. Para remover os que não são
o caso de componentes complexos como o DataGridView, são dadas opções para criar o nome de cada coluna, bem necessários, clique com o botão direito no código e utilize a opção Organize Usings > Remove Unused Usings.
using System.Collections.Generic;
como o tipo que será armazenado. Também é dada a opção de criar cada um dos registros que serão exibidos.
O objetivo desse código é mostrar no Label lblResultado uma mensagem de boas-vindas. Para isso, deve-se utilizar o
using System.ComponentModel;
$SyVLQVHULUWRGRVRVLWHQVQDOLVWDVHUiLQLFLDGDDFRGL¿FDomRGRSURJUDPD3DUDLVVRVHUiXWLOL]DGRRHYHQWRGRREMHWR código mostrado na Figura 1.18.
Button que acontecerá ao clicar no botão. A lista de eventos pode ser acessada no dock Properties, clicando-se no ícone using System.Data;
(YHQWVQDSDUWHVXSHULRUUHSUHVHQWDGRSRUXPUDLRFRPRSRGHVHUYLVWRQD)LJXUD using System;
using System.Drawing;
using System.Windows.Forms;
using System.Linq;
namespace TADSWinFormApp
using System.Text;
{
using System.Windows.Forms;
namespace TADSWinFormApp public partial class HelloWorld : Form
{ {
{ {
PORDENTRODOTEMA PORDENTRODOTEMA PORDENTRODOTEMA
Para auxiliar nos testes e nas depurações necessárias durante a programação, o Visual Studio possui uma excelente
IHUUDPHQWDGHGHEXJ2SULPHLURUHFXUVRTXHSRGHVHUXWLOL]DGRSDUDHVVH¿PpR%UHDNSRLQWDWLYDGRSHODWHFOD)RX
então pela opção Debug > Toggle Breakpoint. Sua ativação é indicada por uma marca vermelha ao lado do código, como
se pode ver na Figura 1.21.
Para passar à próxima linha logo abaixo, deve ser utilizado o atalho F10, ou então o comando Debug > Step Over. Para
continuar a execução sem que seja necessário passar linha a linha, deve ser utilizado o atalho F5, ou então o comando
Figura 1.23 Watch
Debug > Continue.
Para uma visualização de conteúdo pontual, a ferramenta disponibiliza um recurso que possibilita a visualização sem
Outra opção para depuração do código é o uso do Watch. Esse recurso possibilita ver o conteúdo das variáveis ou
Figura 1.21 Breakpoint utilizar o Watch. Para isso, posicione o mouse em cima do objeto para que, então, uma janela seja aberta com as
então de comparação lógicas em tempo de execução, sem necessidade de que o resultado seja impresso em tela ou LQIRUPDo}HVHVSHFt¿FDVGRREMHWRQDTXHOHWHPSRGHH[HFXomRFRPRPRVWUDGRQD)LJXUD
2UHVXOWDGRGHVVDIHUUDPHQWDpRGHTXHGXUDQWHDRSHUDomRGHGHEXJDH[HFXomRpLQWHUURPSLGDHRÀX[RTXHHVWi no console. Para isso, basta selecionar o trecho de código que deseja visualizar no recurso Watch, clicar com o botão
sendo seguido pode ser acompanhado pelo programador. Durante a operação de debug, a linha de código que está direito e escolher a opção Add Watch. Na Figura 1.23, tanto essa opção como o dock Watch 1 (que exibe as informações
sendo executada naquele momento é indicada pela cor amarela, bem como por uma seta amarela ao lado do código,
de cada linha solicitada) podem ser vistos.
como se pode ver na Figura 1.22.
Instruções: a) %XLඇG
Agora, chegou a sua vez de exercitar seu aprendizado. A seguir, você encontrará algumas questões de múltipla b) 7RRඇER[
escolha e dissertativas. Leia cuidadosamente os enunciados e atente-se para o que está sendo pedido. c) ( ) Breakpoint.
Questão 1 d) ( ) Watch.
Utilizando o conceito de solução e projeto visto neste caderno, dê um exemplo completo de uma solução indicando qual e) ( ) TextBox.
Figura 1.24 Visualização rápida de conteúdo
é o tipo de cada projeto, para um cliente que seja um parque de diversões.
Questão 4
Questão 2
Crie um projeto em Console Application que receba o nome completo de um funcionário, seu cargo, o seu salário, uma
Assinale a(s) alternativa(s) correta(s). taxa percentual para aumento do salário e uma entrada que indique se esse funcionário receberá um bônus de R$
ACOMPANHENAWEB 230,00 em seu salário.
São os pilares do .NET Framework:
Regras:
MSDN – Visual Studio 2013 a) ( ) CRL – Commom Language Runtime.
O nome do funcionário deve conter ao menos um nome e um sobrenome.
Portal disponibilizado pela Microsoft com os principais links para uso da ferramenta e o b) 20)ආ±2SHQ0HGLD)DPHZRUNਝQWHUFKDQJH
aprendizado das linguagens de programação suportadas pelo .NET Framework. c) ( ) AFDW – $FWLYHY)UDPHZRUNIRU'DWD:DUHKRXVLQJ A taxa percentual não deve ser maior que 27,8% e não deve ser inferior a 7,4%.
Disponível em: <http://msdn.microsoft.com/pt-br/library/dd831853.aspx>. Acesso em: 2 set. 2014. Se for aplicado o bônus, ele deverá ser aplicado após a taxa percentual.
d) ( ) FCL –)UDPHZRUN&ਞDVV/LEUDU\
MSDN – .NET Framework 4.5 e) ( ) LFA –/RJLFDਞ)UDPHZRUN$SSURDFK Imprimir em tela o nome completo do funcionário, seu cargo e seu novo salário. Caso seja encontrado algum erro,
este deve ser mostrado e o programa deve ser abortado.
Portal contendo todas as informações sobre o .NET Framework, incluindo as últimas
atualizações realizadas, contempladas na versão 4.5.
Disponível em: KWWSPVGQPLFURVRIWFRPSWEUOLEUDU\Z[FY YVDVS[!. Acesso em: 2 set. 2014.
AGORAÉASUAVEZ
Questão 5
FINALIZANDO GLOSSÁRIO
Faça a portabilidade do programa da Questão 4 para um projeto Windows Form, adicionando os seguintes recursos:
Embora o projeto mostrado neste caderno tenha sido simples, agora chegou a vez de, com sua bagagem em Classe: estrutura composta de métodos e atributos, a qual representa um conjunto de objetos com as mesmas carac-
&RPER%R[FRPRSo}HVGHFDUJRSUHGH¿QLGRV
linguagens de programação, utilizar o Visual Studio 2010 para criar excelentes projetos e soluções. terísticas.
&KHFNER[SDUDGH¿QLomRGRE{QXV
Essa incrível ferramenta pode ser utilizada para a criação de softwares baseados em desktop, como vimos neste caderno. Objeto: é a instância de uma classe.
ListBox para mostrar os erros gerados durante o processamento. Além disso, pode ser base para desenvolvimento de aplicativos baseados em soluções-web através do ASP.NET ou
então soluções de mobilidade com Windows 8, Windows Phone. Atributos: características de um objeto.
Embora não seja necessário utilizar este padrão, segue sugestão de formulário:
Graças ao aproveitamento de conceitos de outras linguagens, como Java, C ou Visual Basic, utilizar o .NET Framework Método: funcionalidades de um objeto.
torna-se mais fácil para alguém que, como você, já possui experiências anteriores.
Um especialista em .NET pode estar inserido em diversas áreas do mercado de trabalho, visto que essa ferramenta
atende desde pequenos programas isolados até grandes soluções integradas, desde sua interface básica via console
até complexos portais web.
GABARITO
Questão 1
Resposta: A solução seguinte é um exemplo de resposta, sendo a intenção desta pergunta a de analisar se você
REFERÊNCIAS entendeu o conceito de solução/projeto.
GDAL (Geospatial Data Abstraction Library). Comma Separated Values (.csv). Disponível em: <http://www.gdal.org/drv_csv. Solução – Parque de Diversões
html>. Acesso em: 12 set. 2014.
- Projeto – Windows Form – Venda de ingressos.
LOTAR, Alfredo. Como Melhorar a Performance de Websites .NET. Os segredos dos sites de alto desempenho. 1. ed. São
Paulo: Novatec, 2013. - Projeto – Windows Form – Controle de chamados de manutenção.
MSDN. Visual Studio. 2013. Disponível em: <http://msdn.microsoft.com/pt-br/library/dd831853.aspx>. Acesso em 02.09.2014. - Projeto – Console Application – Controle de catraca.
________. .NET Framework 4.5. Disponível em: KWWSPVGQPLFURVRIWFRPSWEUOLEUDU\Z[FY YVDVS[!. Acesso em - Projeto – WebForm – Site de vendas.
02.09.2014.
- Projeto – WebForm – Site institucional.
Questão 2 { }
Resposta: Alternativa A e D. Boolean tudoOk = true; if (percentual < 7.4 | percentual > 27.8)
São as duas opções corretas, já citadas no texto. As demais são apenas siglas que possuem a palavra framework Console.WriteLine(“Exercicio 04”); {
integrando o seu nome. Console.WriteLine(“=================”); Console.WriteLine(“ - Percentual deve estar entre 7.4% e 27.8%”);
Questão 3 Console.Write(“Nome: “); tudoOk = false;
São os dois recursos abordados no decorrer do caderno como opções para executar depuração. Console.Write(“Sobrenome: “); if ((bonus != “S”) & (bonus != “N”))
string sobrenome = Console.ReadLine(); {
Os demais são:
Console.Write(“Cargo: “); Console.WriteLine(“ - Bonus deve ser registrado como S ou N”);
Build: comando para compilar e gerar executável do projeto.
string cargo = Console.ReadLine(); tudoOk = false;
Toolbox: dock no qual são armazenados todos os objetos visuais a serem utilizados em um projeto Windows Form
Application. Console.Write(“Salário Atual: “); }
double salAtual = Convert.ToDouble(Console.ReadLine()); if (tudoOk)
TextBox: objeto visual que cria uma caixa de textos em um formulário do Windows Form Application ou de um
WebForm. Console.Write(“Taxa percentual: “); {
} } }
Console.WriteLine(“=================”); if (tudoOk)
Console.WriteLine(“{0} {1}, {2} - Novo Salário: {3}”, nome, sobrenome, cargo, novoSalario ); private void btnProcessar_Click(object sender, EventArgs e) {
} {
/LQJXDJHPGH3URJUDPDomR&RPHUFLDO
Autoria: Douglas Fugita de Oliveira Cesar
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Ex05());
}
}
}
Clique aqui para retornar na sessão Agora é Sua Vez
Tema 02
Conexão a Sistemas de Banco de Dados: Utilização do ADO .Net. Objetos
Connection, DataReader e DataAdapter. Data Form Wizard: Vinculando
Dados no Windows Forms e Web Forms. Comandos ASP.NET
7HPD PORDENTRODOTEMA
Conexão a Sistemas de Banco de Dados: Utilização do ADO .Net. Objetos Connection, DataReader e DataAdapter.
Data Form Wizard: Vinculando Dados no Windows Forms e Web Forms. Comandos ASP.NET 2$'21(7pHQFRQWUDGRQRQDPHVSDFH6\VWHP'DWDHSRVVXLXPDVpULHGHFRQHFWRUHVHVSHFt¿FRVTXHSRVVLELOLWDP
Autoria: Douglas Fugita de Oliveira Cesar CONVITEÀLEITURA a conexão com diversas bases de dados diferentes. Os principais provedores de dados são:
Como citar esse documento:
CEZAR, Douglas Fugita de Oliveira. Linguagem de Programação Comercial: Conexão a Sistemas de Banco de Dados: Utilização do ADO .Net.
System.Data.SQLClient: Provedor de dados para SQL Server.
Este Caderno de Atividades foi elaborado com base no livro Políticas Públicas – Conceitos, esquemas de análise,
Objetos Connection, DataReader e DataAdapter. Data Form Wizard: Vinculando Dados no Windows Forms e Web Forms. Comandos ASP.NET.
Valinhos: Anhanguera Educacional, 2014. casos práticos, do autor Leonardo Secchi, editora Cengage Learning, 2011. Livro-Texto 405. System.Data.OracleClient: Provedor de dados para Oracle.
Índice Neste caderno você terá o conceito básico de um dos principais recursos do .NET Framework: o ADO.NET. System.Data.OleDb: Provedor de dados para OLE DB.
Essa excelente ferramenta facilita a conexão e o acesso às mais importantes fontes de dados, sejam elas bancos de System.Data.Odbc: Provedor de dados para conexões ODBC.
dados, arquivos CSV, sejam planilhas eletrônicas etc. Esse grande conjunto de classes pode ser dividido em outros dois
&DGDXPGRVSURYHGRUHVSRVVXLFDUDFWHUtVWLFDVHVSHFt¿FDVGHSHQGHQGRGRWLSRGHFRQH[mRDVHUHIHWXDGDYLVWRTXH
grandes grupos: os provedores de dados e o DataSet com seus DataTables e DataAdapters.
CONVITEÀLEITURA PORDENTRODOTEMA eles se conectam com sistemas diferentes. No entanto, do ponto de vista de implementação, todos eles possuem
Pág. 3 Pág. 3 Num primeiro momento, você estudará o modo como deve ser feita uma conexão com uma fonte de dados e as ferramentas semelhanças, facilitando assim o uso.
necessárias para que sejam extraídas ou atualizadas as informações contidas nas fontes.
3DUDDFRQH[mRGRSURJUDPDDXPDIRQWHGHGDGRVpXWLOL]DGRRREMHWR&RQQHFWLRQ$VVLPFRPRRVSUy[LPRVREMHWRVTXH
'HSRLVGH¿[DGRHVVHFRQFHLWRYRFrFRPSUHHQGHUiRXVRGR'DWD6HWREMHWRTXHDUPD]HQDQDPHPyULDXPDHVWUXWXUD serão abordados neste caderno, este está implementado em todos os provedores disponibilizados pelo namespasce
similar ao banco de dados, facilitando a manipulação destes pelo desenvolvedor. System.Data.
ACOMPANHENAWEB A única informação necessária para se criar um objeto Connection é uma Connection String (ou String de Conexão).
Pág. 21 Pág. 22
Essa string possui dados sobre qual tipo de arquivo será lido, onde esse arquivo se encontra, quais opções de segurança
serão utilizadas: usuário, senha etc. Em virtude de cada um dos sistemas ter necessidades diferentes, para cada tipo
diferente de acesso haverá diferentes Strings de Conexão.
PORDENTRODOTEMA Para o caso que pode ser visto na Figura 2.1, será utilizada uma String baseada em OLE DB, para acessar um arquivo
criado no Microsoft Access – o template Northwind. Detalhes para a obtenção desse template podem ser obtidos ao
Pág. 24 Pág. 24 Conexão a Sistemas de Banco de Dados – Utilização do ADO.NET. Objetos Connection, acessar o link sugerido na seção “Acompanhe na Web”.
DataReader e DataAdapter. Data Form Wizard: Vinculando Dados no Windows Forms e Web
Form. Comandos ASP.NET
21(7)UDPHZRUNSRVVXLXPFRQMXQWRGHFODVVHVHVSHFt¿FDVSDUDDPDQLSXODomRGHGDGRVHPEDVHVGHGDGRV
ou arquivos como XML, CSV, etc. Este conjunto é conhecido como ADO.NET, uma versão atualizada do antigo ADO
Pág. 25 Pág. 25 (ActiveX Data Objects).
$QKDQJXHUD (GXFDFLRQDO 3URLELGD D UHSURGXomR ¿QDO RX SDUFLDO SRU TXDOTXHU PHLR GH LPSUHVVmR HP IRUPD LGrQWLFD UHVXPLGD RX PRGL¿FDGD HP OtQJXD
SRUWXJXHVDRXTXDOTXHURXWURLGLRPD
{ using System.Windows.Forms; }
{ namespace TADSWinFormApp }
public ConexADO() { }
using System.Data.OleDb; cmd.Parameters.Add(new OleDbParameter(“@nome”, OleDbType.VarChar)).Value = “Douglas”; public partial class ConexADO : Form
public ConexADO()
InitializeComponent();
PORDENTRODOTEMA PORDENTRODOTEMA PORDENTRODOTEMA
O processo de funcionamento do DataAdapter é criar um link entre o DataSet e a base de dados e, através do método Fill, OleDbDataAdapter adapter = new OleDbDataAdapter(query, strConnString);
atualizar os dados do DataSet. O método Fill age através de um objeto DataReader, que realiza consultas diretamente
na base de dados. Os objetos Command também são utilizados pelo DataAdapter para fazer o caminho inverso do Fill, DataSet dsNorthWind = new DataSet();
TXDQGRIRUQHFHVViULRDWXDOL]DURVGDGRVQDIRQWHGHGDGRV8PH[HPSORGHFULDomRGRFyGLJRGHXP'DWD$GDSWHU adapter.Fill(dsNorthWind, “TabFuncionarios”);
alimentando um DataSet pode ser visto na Figura 2.6.
dgvFuncionarios.DataSource = dsNorthWind;
using System;
dgvFuncionarios.DataMember = “TabFuncionarios”;
using System.Windows.Forms;
dgvFuncionarios.Refresh();
using System.Data.OleDb;
}
using System.Data;
}
namespace TADSWinFormApp
}
{
public ConexADO()
InitializeComponent();
Dessa forma, pode-se criar um DataSet manualmente e, então, incluir vários objetos DataTable também de forma manual. private void ConexADO_Load(object sender, EventArgs e)
No entanto, existe um objeto que pode auxiliar no processo de alimentação de um DataSet, que é o DataAdapter.
{
O processo de funcionamento do DataAdapter é criar um link entre o DataSet e a base de dados e, através do método Fill,
string strConnString = @”Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\DB\Northwind.
atualizar os dados do DataSet. O método Fill age através de um objeto DataReader, que realiza consultas diretamente
accdb;Persist Security Info=False;”;
na base de dados. Os objetos Command também são utilizados pelo DataAdapter para fazer o caminho inverso do Fill,
Figura 2.6 DataAdapter alimentando um DataSet e resultado mostrado em um DataGridView
TXDQGRIRUQHFHVViULRDWXDOL]DURVGDGRVQDIRQWHGHGDGRV8PH[HPSORGHFULDomRGRFyGLJRGHXP'DWD$GDSWHU string query = “SELECT * FROM Funcionários”;
$ )LJXUD PRVWUD R FyGLJR FRPSOHPHQWDU DR DQWHULRU FRP D RSomR GH VDOYDU RV GDGRV DOWHUDGRV QD WDEHOD { }
³7DE)XQFLRQDULRV´ GD IRQWH GH GDGRV &RP LVVR QmR VHUi QHFHVViULR GH¿QLU PDQXDOPHQWH R REMHWR &RPPDQG (P VWULQJTXHU\ ³6(/(&7,GHQWL¿FDomR(PSUHVD6REUHQRPH1RPH>(QGHUHoRGH(PDLO@)520)XQFLRQiULRV´ }
seguida, a Figura 2.8 mostra a execução do programa e o carregamento dos dados. A Figura 2.9, por sua vez, demonstra
o resultado do método Update() do objeto DataAdapter. adapter = new OleDbDataAdapter(query, strConnString); Figura 2.7 Método Update do objeto DataAdapter
namespace TADSWinFormApp }
public partial class ConexADO : Form private void btnSalvar_Click(object sender, EventArgs e)
{ {
PORDENTRODOTEMA
ACOMPANHENAWEB AGORAÉASUAVEZ
MSDN – ADO.NET Instruções:
Este portal conta com o material mais completo e atualizado sobre a tecnologia ADO.NET, Agora, chegou a sua vez de exercitar seu aprendizado. A seguir, você encontrará algumas questões de múltipla
demonstrando o uso de cada uma das classes que compõem esta biblioteca. Além disso, todos escolha e dissertativas. Leia cuidadosamente os enunciados e atente-se para o que está sendo pedido.
os conceitos e todas as alterações realizadas em cada versão estão disponíveis neste portal.
Questão 1
Disponível em: <http://msdn.microsoft.com/pt-br/library/e80y5yhx(v=vs.110).aspx>. Acesso em: 5 set. 2014.
4XDLVVmRDVYDQWDJHQVQRXVRGHSDUkPHWURVGXUDQWHDH[HFXomRGRREMHWR&RPPDQG"
SQL Injection – Evitando brechas na segurança
Questão 2
SQL Injection é um grande problema para querys criadas dinamicamente, durante a execução
do programa. Como essa é uma prática muito comum, saber como este ataque funciona e como Marque a seguir apenas as alternativas que indicam provedores de dados:
evitá-lo é primordial para qualquer programa comercial.
a) ( ) System.Data.SQLServer
Figura 2.9 Alteração do e-mail do segundo registro e operação de Update() Disponível em: <http://technet.microsoft.com/en-us/library/ms161953(v=sql.105).aspx>. Acesso em: 15 set.
2014. b) 6\VWHP'DWD2ඇH'%
&RP D DOWHUDomR GR UHJLVWUR PRVWUDGD QD )LJXUD R 'DWD6HW UHVSRQViYHO SHOR DUPD]HQDPHQWR LGHQWL¿FD TXDLV
foram os registros que sofreram alterações e os atualiza na base de dados. Graças ao uso do método Update(), não foi c) ( ) System.Data.DataAdapter
Strings de Conexão
QHFHVViULRFULDUXPFRPDQGRHVSHFt¿FRSDUDDWXDOL]DomRGRVGDGRV
d) ( ) System.Data.DataSet
Portal que disponibiliza strings de conexão para um grande número de fontes de dados.
e) 6\VWHP'DWD2UDFඇH&ඇLHQW
Disponível em: <http://www.connectionstrings.com>. Acesso em: 5 set. 2014.
Este site mostra o processo para a instalação da base de dados Northwind, da Microsoft. Este
complexo exemplo simula a operação de uma empresa de vendas de produtos alimentícios.
Disponível em: <http://msdn.microsoft.com/pt-br/library/8b6y4c7s.aspx>. Acesso em: 5 set. 2014.
AGORAÉASUAVEZ
Questão 3
________. Como instalar bancos de dados de exemplo. (Template Northwind). Disponível em: <http://msdn.microsoft.com/pt-br/ Resposta: (PERUD VHMDP QHFHVViULDV PDLV OLQKDV GH FyGLJR DR SURJUDPD RV SDUkPHWURV VmR HVVHQFLDLV SDUD D
library/8b6y4c7s.aspx>. Acesso em: 5 set. 2014. VHJXUDQoDHRPHOKRUHQWHQGLPHQWRGRFyGLJR(VVHUHFXUVRDX[LOLDDYHUL¿FDURWLSRTXHHVWiVHQGRSDVVDGRSDUDTXHU\
e garante que nenhum comando será embutido na query sem ser desejado.
/LQJXDJHPGH3URJUDPDomR&RPHUFLDO
Autoria: Douglas Fugita de Oliveira Cezar
Questão 2
Resposta: Alternativa “B” e “E”. São provedores de dados mostrados neste caderno.
Para os demais:
System.Data.SQLServer – este provedor não existe. O acesso ao SQL Server é feito pelo System.Data.SQLCLient.
6\VWHP'DWD'DWD$GDSWHU±FODVVHTXHGH¿QHR'DWD$GDSWHUTXHUHDOL]DWRGDVFRQH[}HVHQWUH'DWD6HWHIRQWHV
de dados. Utiliza-se de um provedor de dados, mas não é um deles.
6\VWHP'DWD'DWD6HW±FODVVHTXHGH¿QHR'DWD6HWFRPSRQHQWHLPSRUWDQWHGR$'21(7(QWUHWDQWRQmRpXP
provedor de dados.
Questão 3
Resposta: Alternativa “B” e “D”. Conforme visto neste caderno, caso sejam necessárias manipulações nos dados
recuperados, é indicado o uso de DataSet em conjunto com DataAdapter. Para casos de ligações com DataSet, o
DataReader é utilizado, mas seu uso é feito implicitamente por um DataAdapter.
Questão 4
Resposta:2UHVXOWDGRVHUiSDUHFLGRFRPRFyGLJRIRQWHGD)LJXUD
Ou então:
7HPD PORDENTRODOTEMA
Melhoria do Desempenho das Aplicações Web com Páginas e Controles do ASP.NET. Código Gerenciado 2 :HE )RUP HVWi HQWUH HVWHV GRLV FRQFHLWRV &RP HOH DV UHJUDV GH QHJyFLR RX D SURJUDPDomR SRGH VHU JHUDGD
Autoria: Douglas Fugita de Oliveira Cezar
CONVITEÀLEITURA separadamente dos arquivos de tags HTML. As funções que possibilitam arrastar e soltar controles estão presentes
Como citar esse documento: WDPEpPSDUDHVWHWLSRGHGHVHQYROYLPHQWRPDQWHQGRDVIDFLOLGDGHVMiDSUHQGLGDVQDIHUUDPHQWD9LVXDO6WXGLR
CEZAR, Douglas Fugita de Oliveira. Linguagem de Programação Comercial: Melhoria do Desempenho das Aplicações Web com Páginas e
Controles do ASP.NET. Código Gerenciado. Caderno de Atividades. Valinhos: Anhanguera Educacional, 2014.
O Visual Studio pode ser utilizado também para a criação de aplicações web e esse será o tema deste caderno. 3DUDLQLFLDUXPSURMHWRGHXPDDSOLFDomR:(%GHYHVHUFULDGRXPQRYRSURMHWRFRPRWHPSODWH$631(7:HE$SSOLFDWLRQ
Através da tecnologia ASP.NET, o desenvolvedor ganha um enorme poder de controle sobre a aplicação WEB, e aqui como mostrado na Figura 3.1.
Índice você encontrará uma série de recursos que o auxiliarão durante a tarefa de desenvolvimento.
Será mostrada uma forma mais estruturada de programar para aplicações web, na qual cada camada tem seu local
WRWDOPHQWHGH¿QLGRVHMDHODDFDPDGDGHDSUHVHQWDomRGHUHJUDGHQHJyFLRRXGHGDGRV&RPLVVRDOpPGHPDLRU
RUJDQL]DomRH[LVWHWDPEpPPDLRUVHJXUDQoDQRPRPHQWRGDSXEOLFDomRYLVWRTXHDUHJUDGHQHJyFLRV¿FDSURWHJLGD
CONVITEÀLEITURA PORDENTRODOTEMA do arquivo que é responsável por carregar o HTML que será interpretado pelo servidor.
Pág. 3 Pág. 3
ACOMPANHENAWEB PORDENTRODOTEMA
Pág. 23 Pág. 23
Melhoria do Desempenho das Aplicações WEB com Páginas e controles do ASP.NET. Código
Gerenciado
O ASP.NET surgiu como uma evolução da tecnologia ASP (Active Server Pages), sendo uma implementação do
.net Framework para aplicações web. Assim como visto no caderno referente às aplicações desktop, o ASP.NET também
Pág. 25 Pág. 25
VHXWLOL]DGD&/5&RPPRQ/DQJXDJH5XQWLPHHGD)&/)UDPHZRUN&ODVV/LEUDU\2:HE)RUPHVWiSDUDDVSiJLQDV
web como o Windows Form está para os aplicativos Desktop.
Além do Web Form, que será utilizado como base para este caderno, o ASP.NET também conta com outras formas de
JHUDUSiJLQDVZHETXHVmRDV:HE3DJHVHR09&
Pág. 26 Pág. 26
$V:HE3DJHVVmRXWLOL]DGDVGDPHVPDIRUPDTXHR3+3RX$63FOiVVLFRRXVHMDFRPDVOLQKDVGHFRPDQGRH
as tags HTMLMXQWDVQRPHVPRDUTXLYR-iR09&0RGHO9LHZ&RQWUROOHUYLVDVHSDUDUDVUHJUDVGHQHJyFLRGD Figura 3.1 &ULDomRGHXPQRYRSURMHWR
$QKDQJXHUD (GXFDFLRQDO 3URLELGD D UHSURGXomR ¿QDO RX SDUFLDO SRU TXDOTXHU PHLR GH LPSUHVVmR HP IRUPD LGrQWLFD UHVXPLGD RX PRGL¿FDGD HP OtQJXD DSUHVHQWDomRFRPFRQWUROHWRWDOGR+70/JHUDGRHPDLRUIDFLOLGDGHDRXWLOL]DU-DYDVFULSWHPVXDVSiJLQDV $)LJXUDPRVWUDDHVWUXWXUDGHDUTXLYRVHSDVWDVFULDGDDXWRPDWLFDPHQWHSDUDHVWHQRYRSURMHWR
SRUWXJXHVDRXTXDOTXHURXWURLGLRPD
PORDENTRODOTEMA PORDENTRODOTEMA PORDENTRODOTEMA
6LWHPDVWHUSiJLQDXWLOL]DGDSDUDDUPD]HQDUROD\RXWEiVLFRGHXPVLWHVHQGRTXHSRGHPVHUGH¿QLGDVSiJLQDV 1D)LJXUDpH[LELGRRFyGLJRGDSiJLQD'HIDXOWDVS[TXHJHURXDVDtGDPRVWUDGDQD)LJXUD
³¿OKDV´TXHFDUUHJDUmRWRGDDGH¿QLomRFULDGDQR6LWHPDVWHU
#3DJH7LWOH ´+RPH3DJH´/DQJXDJH ´&´0DVWHU3DJH)LOH ´a6LWHPDVWHU´$XWR(YHQW:LUHXS ´WUXH´
Default.aspx: ao entrar na aplicação, por padrão, esta é a primeira página a ser executada ou acessada.
&RGH%HKLQG ´'HIDXOWDVS[FV´,QKHULWV ´7$'6:HE$SSB'HIDXOW´!
6W\OHV?6LWHFVVDUTXLYRTXHDUPD]HQDDIROKDGHHVWLOR&DVFDGH6W\OH6KHHWXWLOL]DGDQRDUTXLYR'HIDXOWDVS[
3URSHUWLHV?$VVHPEO\,QIRFVDUPD]HQDLQIRUPDo}HVGHDVVHPEO\WDLVFRPRYHUVmRQRPHGDDSOLFDomRQRPHGR
produto, empresa criadora etc. DVS&RQWHQW,' ´+HDGHU&RQWHQW´UXQDW ´VHUYHU´&RQWHQW3ODFH+ROGHU,' ´+HDG&RQWHQW´!
3DUD H[HFXWDU H YHU R UHVXOWDGR GR SURMHWR TXH IRL FULDGR SHOR WHPSODWH$631(7 :HE$SSOLFDWLRQ EDVWD VHOHFLRQDU DVS&RQWHQW!
'HEXJ!6WDUW'HEXJJLQJRXHQWmRXVDURDWDOKR)&RPLVVRR9LVXDO6WXGLRIRUQHFHXPVHUYLGRUZHEORFDOSDUDTXH
DVS&RQWHQW,' ´%RG\&RQWHQW´UXQDW ´VHUYHU´&RQWHQW3ODFH+ROGHU,' ´0DLQ&RQWHQW´!
a página possa ser visualizada, como mostra a Figura 3.3.
<h2>
Welcome to ASP.NET!
K!
<p>
S!
<p>
:HEFRQ¿JDUTXLYR;0/TXHDUPD]HQDWRGDVDVLQIRUPDo}HVUHIHUHQWHVDRSURMHWRWDLVFRPRUHIHUrQFLDVVWULQJV S!
de conexão, formas de login etc. DVS&RQWHQW!
*OREDODVD[GH¿QHRTXHVHUiH[HFXWDGRQRQtYHOGHDSOLFDomRSRUH[HPSORTXDQGRIRULQLFLDGDRXHQFHUUDGD Figura 3.4 &yGLJRIRQWH'HIDXOWDVS[
uma aplicação ou sessão.
Figura 3.3 'HEXJHYLVXDOL]DomRGRSURMHWR
DVS&RQWHQW3ODFH+ROGHU! /RJJHG,Q7HPSODWH!
GLY!
DVS/RJLQ9LHZ!
KHDG!
IRUP!
GLY!
ERG\!
ERG\!
GLYFODVV ´FOHDUKLGH6NLSOLQN´!
IRUPUXQDW ´VHUYHU´!
KWPO!
DVS0HQX ,' ´1DYLJDWLRQ0HQX´ UXQDW ´VHUYHU´ &VV&ODVV ´PHQX´ (QDEOH9LHZ6WDWH ´IDOVH´
GLYFODVV ´SDJH´!
,QFOXGH6W\OH%ORFN ´IDOVH´2ULHQWDWLRQ ´+RUL]RQWDO´! Figura 3.5 &yGLJRIRQWH6LWHPDVWHU
GLYFODVV ´KHDGHU´!
,WHPV!
PORDENTRODOTEMA PORDENTRODOTEMA PORDENTRODOTEMA
1HVWD¿JXUDSRGHVHUQRWDGRRFRPSRQHQWH&RQWHQW3ODFH+ROGHUTXHQDGDPDLVpTXHXPORFDOUHVHUYDGRSDUDDV GLYFODVV ´SDJH´! $RFULDUXPDQRYDSiJLQDXWLOL]DQGRRWHPSODWH6LWHPDVWHUFRPRSiJLQDPHVWUHpFULDGDDHVWUXWXUDH[LELGDQD)LJXUD
páginas que utilizarão o Site.master como página mestre. Ele pode ser mais bem observado no modo Design, que pode
VHUYLVWRQD)LJXUD GLYFODVV ´KHDGHU´! #3DJH7LWOH ´´/DQJXDJH ´&´0DVWHU3DJH)LOH ´a6LWH0DVWHU´$XWR(YHQW:LUHXS ´WUXH´&RGH%HKLQG ´:HE)RUP
DVS[FV´,QKHULWV ´7$'6:HE$SS:HE)RUP´!
....
DVS&RQWHQW,' ´&RQWHQW´&RQWHQW3ODFH+ROGHU,' ´+HDG&RQWHQW´UXQDW ´VHUYHU´!
GLY!
DVS&RQWHQW!
GLYFODVV ´PDLQ´!
DVS&RQWHQW,' ´&RQWHQW´&RQWHQW3ODFH+ROGHU,' ´0DLQ&RQWHQW´UXQDW ´VHUYHU´!
<h2>
DVS&RQWHQW!
Welcome to ASP.NET!
Figura 3.8 Nova página
K!
&RP LVVR TXDOTXHU LQIRUPDomR D VHU H[LELGD QD SiJLQD GHYHU VHU FRORFDGD GHQWUR GR &RQWHQW TXH ID] UHIHUrQFLD j
<p> ³0DLQ&RQWHQW´$)LJXUDPRVWUDFRPR¿FDUiRPHVPRFyGLJRDSyVDLQVHUomRGRVREMHWRVEXWWRQHODEHOFDGDXP
GHQWURGHXPSDUiJUDIR3DUDLQVHULUFRPSRQHQWHVYLVXDLVEDVWDFOLFDUHDUUDVWDUSDUDRORFDOGRFyGLJRRXGDWHODGH
7ROHDUQPRUHDERXW$631(7YLVLWDKUHI ´KWWSZZZDVSQHW´WLWOH ´$631(7:HEVLWH´!ZZZDVSQHWD! GHVLJQRQGHGHYH¿FDURFRPSRQHQWH
S!
<p>
WLWOH ´06'1$631(7'RFV´!GRFXPHQWDWLRQRQ$631(7DW06'1D!
Figura 3.6 Detalhe do Site.master, no modo Design
S!
2HVSDoRHPGHVWDTXHPRVWUDDiUHDTXHVHUiDEUDQJLGDSHOR&RQWHQ3ODFH+ROGHUGH¿QLGRFRPDLG³0DLQ&RQWHQW´
GLY!
6XD UHODomR SRGH VHU SHUFHELGD FRP RV FRPSRQHQWHV &RQWHQW GD )LJXUD 2 FRPSRQHQWH DVS&RQWHQW
GLYFODVV ´IRRWHU´!
&RQWHQW3ODFH+ROGHU,' ´0DLQ&RQWHQW´! GD )LJXUD LQGLFD TXH WXGR R TXH HVWLYHU FRQWLGR QHOH VHUi H[LELGR QR
&RQWHQW3ODFH+ROGHU³0DLQ&RQWHQW´GRVLWHPHVWUHRFDPSRHPGHVWDTXHGD)LJXUD$RWUDGX]LUSDUDR+70/TXH GLY!
VHUiH[LELGRDRXVXiULR¿QDORFyGLJR¿FDFRPRRPRVWUDGRQD)LJXUD1RWHTXHIRLVHOHFLRQDGRVRPHQWHXPWUHFKR
GRFyGLJRHRFRQWH~GRGRGLY³KHDGHU´IRLVXSULPLGR GLY!
Figura 3.7 Trecho do HTML gerado para exibição no cliente
SURWHFWHGYRLGEWQ3URFHVVDUB&OLFNREMHFWVHQGHU(YHQW$UJVH
PORDENTRODOTEMA PORDENTRODOTEMA PORDENTRODOTEMA
1RHQWDQWRTXDQGRSDVVDSDUDRSUy[LPRHYHQWRRSDJHB/RDGDVYDULiYHLVHRVFRPSRQHQWHVTXHIRUDPLQLFLDGRV $ERROHDQD,V3RVW%DFNGDLQVWkQFLDGDSiJLQDDWXDO3DJHFRQVHJXHLGHQWL¿FDUVHDH[HFXomRDWXDOpGHYLGDDXP
neste evento podem ser reiniciados, perdendo assim as informações que foram enviadas no postback. Para isso, é evento de postback ou não. A execução pode ser vista nas Figuras 3.12 e 3.13, respectivamente antes e depois do click
recomendado um simples controle durante a execução do Load, que é mostrado na Figura 3.11. do botão.
XVLQJ6\VWHP
namespace TADSWebApp
{
SXEOLFSDUWLDOFODVV:HE)RUP6\VWHP:HE8,3DJH
{
SURWHFWHGYRLG3DJHB/RDGREMHFWVHQGHU(YHQW$UJVH
{
LI3DJH,V3RVW%DFN^
OEO3DJH/RDG7H[W ³&DUUHJDGRQR3DJH/RDG6HP3RVW%DFN´
}else{
OEO3DJH/RDG7H[W ³&DUUHJDGRQR3DJH/RDG&RP3RVW%DFN´
}
} Figura 3.13 ([HFXomRDSyVRHYHQWRFOLFNGRERWmR
3DUDSXEOLFDUHPXPVHUYLGRU:HEEDVWDFRSLDURFRQWH~GRGHVWDSDVWDSDUDRVHUYLGRUTXHDH[HFXWDUiFRPRQHW
)UDPHZRUN1D)LJXUDSRGHPVHUREVHUYDGDVDHVWUXWXUDGDSDVWDGHGHVHQYROYLPHQWRHDSDVWDTXHIRLJHUDGD Figura 3.16 Quadro comparativo entre a estrutura de desenvolvimento e a de publicação
para publicação.
eQRWiYHOTXHDSDVWDGHSXEOLFDomRpEDVWDQWHHQ[XWDHTXHRFyGLJRIRQWHFRPDVUHJUDVGHQHJyFLR¿FDSURWHJLGRHP
arquivos .dll, o que aumenta a segurança da aplicação.
AGORAÉASUAVEZ
Questão 2
ACOMPANHENAWEB FINALIZANDO
6HOHFLRQHDVHJXLURVREMHWRVTXHSRUSDGUmRH[HFXWDPSRVWEDFN
ASP.NET.
S a) ( ) Button. (PERUDRVH[HPSORVGHPRQVWUDGRVQHVWHFDGHUQRVHMDPVLPSOHVYRFrSRGHUiPHVFODURFRQKHFLPHQWRDGTXLULGR
( E O G G G M L O r G i O K L G L LG
neste tema com os temas anteriores, visto que a forma de utilização dos componentes e a forma de programação são
b) /DEHඇ
3RUWDOGHVHQYROYLGRSHOD0LFURVRIWFRPXPJUDQGHQ~PHURGHUHFXUVRVSDUDTXHPTXHUREWHU idênticas.
PDLVLQIRUPDo}HVVREUHRXVRGDSODWDIRUPDQHWSDUDZHE&RQWDWDPEpPFRPXPIyUXPQR c) ( ) Textbox.
2XWURVPyGXORVWDPEpPFRPSOHPHQWDPRFRQKHFLPHQWRSDUDDXWLOL]DomRGHVWDIHUUDPHQWDWDOTXDORXVRGR+70/H
qual pessoas do mundo todo trocam informações sobre a utilização de recursos do ASP.NET. d) &KHFN%R[ &66YLVWRVDQWHULRUPHQWH
'LVSRQtYHOHPKWWSZZZDVSQHW!$FHVVRHPVHW
e) ( ) LinkButton.
Universo .net.
Questão 3
6LWHFULDGRSHOREUDVLOHLUR-RVp&DUORV0DFRUDWWLFRQVLVWHHPXPSRUWDOFRPPXLWDLQIRUPDomR
VREUH GLYHUVDV WHFQRORJLDV TXH FHUFDP R XQLYHUVR QHW 8PD JUDQGH YDQWDJHP GD XWLOL]DomR 6HOHFLRQHRVDUTXLYRVTXHID]HPSDUWHGDJHUDomRSDGUmRGHXPSURMHWR:HE REFERÊNCIAS
deste portal é que ele está todo em português. a) ( ) WebForm1.aspx
/27$5$OIUHGRComo Melhorar a Performance de Websites .NET. Os segredos dos sites de alto desempenho. 1. ed. São
'LVSRQtYHOHPKWWSZZZPDFRUDWWLQHW!$FHVVRHPVHW b) *ඇREDඇDVS[ 3DXOR129$7(&
c) 'HIDXඇWDVS[ 0,&5262)7$VSQHW'LVSRQtYHOHPKWWSZZZDVSQHW!$FHVVRHPVHW
d) ( ) Site.Master.aspx 0DFRUDWWLQHW'LVSRQtYHOHPKWWSZZZPDFRUDWWLQHW!$FHVVRHPVHW
AGORAÉASUAVEZ Questão 4
&ULHXPDSiJLQDTXHXWLOL]HXPREMHWR&DOHQGDUSDUDLPSULPLUHPXPREMHWR/DEHODGDWDHRGLDGDVHPDQDTXHHVWiVHOHFLRQDGR
Instruções: QRREMHWR2FDOHQGiULRGHYHVHULQLFLDOL]DGRGXUDQWHRHYHQWRGH/RDGWRPDQGRFXLGDGRFRPDXWLOL]DomRGRSRVWEDFN
$JRUDFKHJRXDVXDYH]GHH[HUFLWDUVHXDSUHQGL]DGR$VHJXLUYRFrHQFRQWUDUiDOJXPDVTXHVW}HVGHP~OWLSOD
HVFROKDHGLVVHUWDWLYDV/HLDFXLGDGRVDPHQWHRVHQXQFLDGRVHDWHQWHVHSDUDRTXHHVWiVHQGRSHGLGR
Questão 5
Questão 1
4XDLVVmRDVYDQWDJHQVGHXWLOL]DUDURWLQDGHSXEOLFDomRGRSURMHWR"
4XDOYDQWDJHPDSUHVHQWDRXVRGDHVWUXWXUDGHVLWHPHVWUH6LWHPDVWHUHPUHODomRDXPDSiJLQD+70/QRUPDO"
/LQJXDJHPGH3URJUDPDomR&RPHUFLDO
Autoria: Douglas Fugita de Oliveira Cezar
Questão 5
Resposta: As vantagens apresentadas foram: o menor volume de arquivos e a segurança dos arquivos que contêm
FyGLJRIRQWH
Tema 04
Otimização do ADO.NET com SGBD
7HPD PORDENTRODOTEMA
Otimização do ADO.NET com SGBD
Autoria: Douglas Fugita de Oliveira Cezar FRQ¿JXUDWLRQ!
CONVITEÀLEITURA FRQQHFWLRQ6WULQJV!
Como citar esse documento:
CEZAR, Douglas Fugita de Oliveira. Linguagem de Programação Comercial: Otimização do ADO.NET com SGBD. Caderno de Atividades. Valinhos: <add name=”BDLocal”
Anhanguera Educacional, 2014.
Este é o último tema da disciplina Linguagem de Programação Comercial, que teve o intuito de mostrar uma nova
linguagem em conjunto com uma poderosa ferramenta.
FRQQHFWLRQ6WULQJ ´3URYLGHU 0LFURVRIW$&(2/('%'DWD 6RXUFH _'DWD'LUHFWRU\_?1RUWKZLQG
Índice DFFGE3HUVLVW6HFXULW\,QIR )DOVH´
Neste caderno, você encontrará formas de otimizar recursos de bancos de dados utilizando a plataforma .net, visto que
este é o grande problema de sistemas que utilizam web como forma de publicação. Cada transação que necessita de SURYLGHU1DPH ´6\VWHP'DWD2OH'E´!
acesso à base de dados consome uma grande parte dos recursos computacionais disponíveis para a operação.
FRQQHFWLRQ6WULQJV!
Algumas simples soluções como o uso do pool de conexões em conjunto com a utilização da API de cache do .net ...
CONVITEÀLEITURA PORDENTRODOTEMA podem auxiliar a reduzir drasticamente o consumo de recursos.
Pág. 3 Pág. 3
FRQ¿JXUDWLRQ!
Figura 4.1 – String de Conexão
$RXWLOL]DURUHFXUVRPRVWUDGRQD¿JXUDpVDELGRTXHWRGDDSOLFDomRXWLOL]DUiDPHVPDVWULQJGHFRQH[mR(PERUD
PORDENTRODOTEMA pareça algo sem importância, essa medida torna possível o uso do pool de conexões.
ACOMPANHENAWEB
Pág. 18 Pág. 18 A operação de estabelecimento de conexão é bastante custosa, e o pool de conexões possibilita o reuso de conexões
Otimização do ADO.NET com SGBD. estabelecidas anteriormente com o banco de dados. Ao invés de ser estabelecida uma nova conexão a cada método
Open() relacionado aos objetos Connection, o uso do pool de conexões faz com que novas conexões sejam criadas
Como visto anteriormente, o surgimento do ADO.NET trouxe uma série de facilidades e controles quando o assunto somente se ela já não foi realizada anteriormente. Ao utilizar o método Close(), a conexão com o banco de dados não é
é conexão e recuperação de informações de uma base de dados. No entanto, essas facilidades podem ocasionar GHVFDUWDGD¿FDQGRGLVSRQtYHOQRSRROGHFRQH[}HVSDUDXVRIXWXUR
descuidos no momento da utilização dos recursos computacionais. Ao mencionar um ambiente WEB, toda economia
Pág. 20 Pág. 20 (PERUD R QHW )UDPHZRUN IDoD XP H[FHOHQWH WUDEDOKR FRP VHX *DUEDJH &ROOHFWRU p PXLWR LPSRUWDQWH TXH HP WRGD
JHUDGDQRSURFHVVDPHQWRpEHPYLQGDMiTXHRWHPSRGHUHVSRVWDLQÀXHQFLDGLUHWDPHQWHQDH[SHULrQFLDGRXVXiULRDR
operação que terá a utilização de informações contidas em base de dados o programador se preocupe em abrir as
visualizar a página.
conexões sempre próximas a seu uso, e encerre com Close() ou Dispose() tão rápido quanto possível. Com o pool de
Para este projeto, será utilizada a mesma string de conexão usada anteriormente e, para isso, você deverá alterar o conexões, esta operação de abrir e encerrar uma conexão utiliza uma quantidade de recursos bem menor do que manter
DUTXLYR:HEFRQ¿JLQGLFDQGRDVWULQJDVHUXWLOL]DGDFRPRPRVWUDGRQD¿JXUD a mesma conexão aberta durante um longo período de tempo para que seja usada por vários métodos diferentes.
Após a declaração da string de conexão, embora haja componentes que facilitem o acesso, no próximo exemplo, a
Pág. 20 Pág. 21
FRQH[mRVHUiHVWDEHOHFLGDPDQXDOPHQWH$SiJLQDFRQWHUiQHVWHPRPHQWRVRPHQWHXPFRPSRQHQWH*ULG9LHZHXP
/DEHOSDUDH[LELURVWDWXVGDFRQH[mRDVVLPFRPRPRVWUDGRQD¿JXUD
$QKDQJXHUD (GXFDFLRQDO 3URLELGD D UHSURGXomR ¿QDO RX SDUFLDO SRU TXDOTXHU PHLR GH LPSUHVVmR HP IRUPD LGrQWLFD UHVXPLGD RX PRGL¿FDGD HP OtQJXD
SRUWXJXHVDRXTXDOTXHURXWURLGLRPD
PORDENTRODOTEMA PORDENTRODOTEMA PORDENTRODOTEMA
2FyGLJRIRQWHTXHHVWDEHOHFHDFRQH[mRpRPRVWUDGRQD¿JXUDHVHJXHRPHVPRSDGUmRYLVWRDQWHULRUPHQWHQR }
:LQGRZV)RUP
catch (Exception ex)
XVLQJ6\VWHP {
XVLQJ6\VWHP&RQ¿JXUDWLRQ OEO6WDWXV7H[W ³&RQH[mRIDOKRX³H[0HVVDJH
}
XVLQJ6\VWHP'DWD2OH'E
}
XVLQJ6\VWHP'DWD
}
namespace TADSWebApp
}
{ Figura 4.3 – Estabelecimento de conexão com o código-fonte
SXEOLFSDUWLDOFODVV$FHVVR'%6\VWHP:HE8,3DJH
$R H[HFXWDU HVWD SiJLQD WHPRV FRPR R SUHHQFKLPHQWR GR FRPSRQHQWH *ULG9LHZ UHVXOWDQGR QD VDtGD PRVWUDGD QD
{ ¿JXUD
protected void Page_Load(object sender, EventArgs e)
{
#3DJH7LWOH ´´/DQJXDJH ´&´0DVWHU3DJH)LOH ´a6LWH0DVWHU´$XWR(YHQW:LUHXS ´WUXH´&RGH%HKLQG ´$FHVVR'%
DVS[FV´,QKHULWV ´7$'6:HE$SS$FHVVR'%´! 2OH'E&RQQHFWLRQFRQQ QHZ2OH'E&RQQHFWLRQ&RQ¿JXUDWLRQ0DQDJHU&RQQHFWLRQ6WULQJV>³%'/RFDO´@7R6WULQJ
DVS&RQWHQW,' ´&RQWHQW´&RQWHQW3ODFH+ROGHU,' ´+HDG&RQWHQW´UXQDW ´VHUYHU´! WU\
DVS&RQWHQW! {
DVS&RQWHQW,' ´&RQWHQW´&RQWHQW3ODFH+ROGHU,' ´0DLQ&RQWHQW´UXQDW ´VHUYHU´! FRQQ2SHQ
S! 2OH'E'DWD$GDSWHUGD QHZ6\VWHP'DWD2OH'E2OH'E'DWD$GDSWHU³6(/(&7
)5203URGXWRV´FRQQ
DVS*ULG9LHZ,' ´JUY3URGXWRV´UXQDW ´VHUYHU´! 'DWD7DEOHGW QHZ'DWD7DEOH
DVS*ULG9LHZ! GD)LOOGW
S! JUY3URGXWRV'DWD6RXUFH GW
S! JUY3URGXWRV'DWD%LQG
DVS/DEHO,' ´OEO6WDWXV´UXQDW ´VHUYHU´7H[W ´´!DVS/DEHO!
S! FRQQ&ORVH
DVS&RQWHQW! OEO6WDWXV7H[W ³&RQH[mRFRQFOXtGD´
Figura 4.2 - Conexão estabelecida manualmente. Figura 4.4 - 3UHHQFKLPHQWRGRFRPSRQHQWH*ULG9LHZ
PORDENTRODOTEMA PORDENTRODOTEMA PORDENTRODOTEMA
$V¿JXUDVHPRVWUDPDH[HFXomRGHVWHFyGLJRVHQGRTXHD¿JXUDUHSUHVHQWDRSULPHLURFOLTXHQRTXDO apresenta um grande custo para a aplicação. A cada página, o servidor carrega todos os registros para então separar
pFULDGRRFDFKHFRPRVGDGRVUHFXSHUDGRVGDWDEHOD3URGXWRVGDEDVHGHGDGRV-iD¿JXUDPRVWUDRVHJXQGR os que serão exibidos.
GLVSDURGRHYHQWRFOLTXHGRERWmR³$FLRQDU&DFKH´QRTXDORUHVXOWDGRGDFRQVXOWDMiHVWiDUPD]HQDGRHPPHPyULD
não sendo necessário acessá-lo novamente. #3DJH7LWOH ´´/DQJXDJH ´&´0DVWHU3DJH)LOH ´a6LWH0DVWHU´$XWR(YHQW:LUHXS ´WUXH´&RGH%HKLQG ´$FHVVR'%
DVS[FV´,QKHULWV ´7$'6:HE$SS$FHVVR'%´!
DVS&RQWHQW!
S!
DVS*ULG9LHZ!
S!
S!
S!
Figura 4.8 - Criação do cache
Dados que sejam utilizados mais de uma única vez são bons candidatos ao uso do cache. Outro indicador de que os DVS&RQWHQW!
GDGRVGHYHPVHUDUPD]HQDGRVHPFDFKHpDQmRGHSHQGrQFLDHQWUHRVGDGRVHXPDUHTXLVLomRHVSHFt¿FDGRXVXiULR
Figura 4.7 - Execução do código-fonte SRUH[HPSORRVGDGRVGDWDEHODGHSURGXWRVQmRp¿OWUDGRSRUXVXiULR
Casos no qual o dado seja dependente de algum dado do usuário podem também ser armazenados em cache, mas
o programador deve assegurar que o tempo de vida deste dado seja menor que o tempo dos dados que servem ao
sistema como um todo.
2$631(7DSUHVHQWDXPDIDFLOLGDGHUHODFLRQDGDDPHOKRULDGHLQWHUIDFHFRPRXVXiULR&RPXPDDOWHUDomRQR*ULG9LHZ
pSRVVtYHOID]HUFRPTXHRFRPSRQHQWHH[LEDDVLQIRUPDo}HVSDJLQDGDVFRPRPRVWUDGRQD¿JXUD(VWDIDFLOLGDGH
PORDENTRODOTEMA AGORAÉASUAVEZ
WUDQV5ROOEDFN Questão 2
}
ACOMPANHENAWEB
Selecione as alternativas corretas.
¿QDOO\^ Para fazer uso do pool de conexão deve-se:
Optimized Paging and S
O Sorting in ASP.NET
S G
GridView.
FRQQ&ORVH
a) Nunca fechar uma conexão.
} Artigo que explica de forma detalhada, utilizando stored procedure, a forma de criar paginação
HRUGHQDomRHPXP*ULG9LHZ b) 8WLඇL]DURQDPHVSDFH6\VWHP&RQQHFWLRQV3RRඇ
} Portal ADO.NET
Figura 4.10 8VRGHWUDQVDo}HVXWLOL]DQGRRVFRPSRQHQWHV$'21(7
Questão 3
3RUWDO GLVSRQLELOL]DGR SHOR 0LFURVRIW 'HYHORSHU 1HWZRUN FRP DV SULQFLSDLV DWXDOL]Do}HV H
3DUDPHOKRUDURGHVHPSHQKRGRFRQWUROHGHWUDQVDomRpLPSRUWDQWHGH¿QLURQtYHOGHLVRODPHQWRisolation level) que recursos sobre o ADO.NET. 2UGHQHRVQtYHLVGHLVRODPHQWRLVRODWLRQOHYHOGDWUDQVDomRVHQGRRPDLVUHVWULWLYRHRPHQRVUHVWULWLYR
será necessário para a operação. 2V QtYHLV VmR GH¿QLGRV FRPR 5HDG 8QFRPPLWWHG 5HDG &RPPLWWHG 5HSHDWDEEOH
Disponível
p em: KWWSPVGQPLFURVRIWFRPHQXVOLEUDU\H\\K[Y
S \ \ \ YVDVS[!$FHVVRHPVHW
S a) 5HDG&RPPLWWHG
5HDG 6HULDOL]DEOH Cada um dos níveis oferece um nível maior de proteção, sendo que a lista foi escrita do menos
restritivo para o mais restritivo. b) 5HSHDWDEඇH5HDG
25HDG8QFRPPLWWHGSHUPLWHTXHGXUDQWHDURWLQDVHMDPOLGDVDOWHUDo}HVQDEDVHTXHDLQGDQmRWLYHUHPXPDFRQ¿UPDomR c) 5HDG8QFRPPLWWHG
FRPPLW25HDG&RPPLWHGIXQFLRQDGDIRUPDFRQWUiULDVySHUPLWLQGRTXHVHMDPOLGRVGDGRVTXHMiIRUDPFRQ¿UPDGRV d) 6HULDඇL]DEඇH
No entanto, os dados podem ser alterados por outras operações, o que resulta em leituras não repetíveis ou dados AGORAÉASUAVEZ
fantasmas.
Questão 4
25HSHDWDEOH5HDGSRVVXLDPHVPDUHVWULomRTXHR5HDG&RPPLWHGVHQGRTXHQHQKXPDRXWUDRSHUDomRSRGHUiDOWHUDU Instruções:
os dados que estão sendo utilizados pela transação com este isolation level, enquanto ela não terminar. No entanto, este 4XDODLPSRUWkQFLDGRSRROGHFRQH[}HVSDUDRGHVHPSHQKRGDDSOLFDomR"
nível não impede que novas linhas sejam inseridas e, caso seja feito uma nova consulta, novos registros aparecerão. Agora, chegou a sua vez de exercitar seu aprendizado. A seguir, você encontrará algumas questões de múltipla
escolha e dissertativas. Leia cuidadosamente os enunciados e atente-se para o que está sendo pedido.
2QtYHO6HULDOL]DEOHpRPDLVUHVWULWLYRHQHOHDOpPGDVUHVWULo}HVMiGLWDVQRQtYHO5HSHDWDEOH5HDGLPSHGHDFULDomR Questão 5
de novos dados que estejam no intervalo dos dados que estão sendo utilizados pela transação, até que ela termine seu Questão 1
processamento. Crie uma aplicação em ASP.NET que armazene em cache uma tabela qualquer logo ao iniciar a aplicação, somente no primeiro
4XDODLPSRUWkQFLDGRXVRGRFDFKHSDUDXPDDSOLFDomRZHE" DFHVVRHOLPLWHRWHPSRGHVWHFDFKHHPPLQXWRV
3DUDRFDVRH[HPSORGD¿JXUDDWUDQVDomRSRGHULDVHUGH¿QLGDFRPR5HDG8QFRPPLWHGMiTXHDVFRQVWUDLQWVGD
WDEHOD³'HWDOKHVGR3HGLGR´REULJDULDDWHUXPUHJLVWURSDLYiOLGRQDWDEHOD³3HGLGR´HSRUQmRWHUUHDOL]DGRRFRPPLWQD $SyVFRPRFOLTXHGHXPERWmRYHUL¿TXHVHRFDFKHDLQGDHVWiDWLYR6HHVWLYHUH[LEDDWDEHODHPXPJULG9LHZ6HQmRPRVWUH
primeira transação, qualquer outro nível de isolamento não permitiria a operação. um aviso que o cache está vazio.
{
FINALIZANDO GABARITO
Neste caderno
N d você
ê pôde
ôd acompanhar
h vários
á i métodos
é d de d otimização
i i no acesso a sistemas
i gerenciadores
i d d
de Questão 1 protected void Page_Load(object sender, EventArgs e)
bancos de dados. {
Resposta: O uso do cache é importante para evitar que dados utilizados com frequência sejam solicitados a todo
Assim como nos cadernos anteriores, os exemplos mostrados foram simples, com o intuito de mostrar recursos da momento. LI,V3RVW%DFN
IHUUDPHQWDHFRP¿QVGLGiWLFRVTXDQWRjQRYDOLQJXDJHP Questão 2 {
Pratique bastante e assim conseguirá desenvolver excelentes aplicações e, agora, com uma maior consciência quanto &DUUHJDU&DFKH
Resposta: Alternativa C.
DRVUHFXUVRVFRQVXPLGRVQDVWUDQVDo}HVFRPRV6*%'V }
Questão 3
Resposta: 6HTXrQFLD
}
Questão 4
REFERÊNCIAS Resposta: O pool de conexões mantém uma conexão com o banco de dados aberta, economizando o custo da conexão protected void CarregarCache()
a cada solicitação de acesso. {
/27$5$OIUHGRComo Melhorar a Performance de Websites .NET. Os segredos dos sites de alto desempenho(GLomR Questão 5 2EMHFW&DFKHFDFKH 0HPRU\&DFKH'HIDXOW
129$7(&6mR3DXOR
Resposta: Proposta de solução. O resultado do aluno pode ser diferente &DFKH,WHP3ROLF\SROLF\ QHZ&DFKH,WHP3ROLF\
SROLF\$EVROXWH([SLUDWLRQ 'DWH7LPH2IIVHW1RZ$GG6HFRQGV
XVLQJ6\VWHP
XVLQJ6\VWHP&RQ¿JXUDWLRQ
'DWD7DEOHGW QHZ'DWD7DEOH
GLOSSÁRIO XVLQJ6\VWHP'DWD
XVLQJ6\VWHP'DWD2OH'E
Pool:
P l coleção,
l ã conjunto.
j t 2OH'E&RQQHFWLRQFRQQ QHZ2OH'E&RQQHFWLRQ&RQ¿JXUDWLRQ0DQDJHU&RQQHFWLRQ6WULQJV>³%'/RFDO´@7R6WULQJ
XVLQJ6\VWHP5XQWLPH&DFKLQJ
FRQQ2SHQ
Não repetíveis: resultado de uma consulta que, se comparar com a mesma consulta em um momento diferente, pode
VWULQJTXHU\ ³6(/(&7723>&yGLJRGR3URGXWR@³
obter resultados diferentes. namespace TADSWebApp
³>1RPHGR3URGXWR@³
{
³>3UHoRGH/LVWD@³
SXEOLFSDUWLDOFODVV&DFKH:HE)RUP6\VWHP:HE8,3DJH
³)5203URGXWRV³
³:+(5('HVFRQWLQXDGR IDOVH´
2OH'E'DWD$GDSWHUGD QHZ6\VWHP'DWD2OH'E2OH'E'DWD$GDSWHUTXHU\FRQQ
GW QHZ'DWD7DEOH
GD)LOOGW
FRQQ&ORVH
FDFKH6HW³3URGXWRV´GWSROLF\
}
SURWHFWHGYRLGEWQ&DFKHB&OLFNREMHFWVHQGHU(YHQW$UJVH
{
2EMHFW&DFKHFDFKH 0HPRU\&DFKH'HIDXOW
'DWD7DEOHGW FDFKH>³3URGXWRV´@DV'DWD7DEOH
if (dt == null)
{
OEO6WDWXV7H[W ³&DFKHHVYD]LDGRFRQHFWHQRYDPHQWH´
}
else
{
JUY&DFKH'DWD6RXUFH GW
JUY&DFKH'DWD%LQG
}
}
}