Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
ASP.NET 2.0
com C#
Captulo 1
.NET Framework: O .Net Framework uma infra-estrutura para toda a plataforma .NET. Isto
inclui bibliotecas de classe base, como ADO.NET e ASP.NET, assim como a CLR.
um ambiente para construo, implantao e execuo de aplicaes. O ASP.NET faz parte
deste ambiente e utilizado para desenvolvimento de aplicaes Web. O ASP.NET gera cdigo HTML
e Javascript que so adaptados para serem visualizados em todos os browsers.
O .NET Framework se divide em 3 partes: CLR(Common Language Runtime, as classes
Framework, FCL(Framework Class Library) e ASP.NET.
Programando sobre HTTP: Web Forms se comunicam com os servidores web atravs do
protocolo HTTP que trafega sobre uma conexo TCP (Transmission Control Protocol).
HTTP Request: Quando digitamos um endereo no browser, ele usa um servidor DNS para
transformar o nome do domnio em um endereo IP. Depois o browser se conecta porta 80 do
endereo.
GET e POST: Os comandos HTTP mais usados so GET e POST. O GET retm qualquer
informao identificada pelo request da URL. O POST usado para solicitar que o servidor de origem
aceite o contedo no request e processe-o. O POST usado usado tipicamente para prover um bloco
de dados a um processo manipulador de dados, ou seja, o resultado de um submit em um form.
View State: Pginas ASP.NET fornecem a propriedade ViewState para permitir s aplicaes
uma chamada de contexto e reter os valores atravs de 2 chamadas sucessivas para a mesma
pgina. O ViewState representa o estado da pgina quando foi processada por ltimo no servidor. O
estado persistido usualmente, mas no necessariamente, no lado cliente e restaurado antes da
requisio da pgina ser processada.
Estrutura de uma pgina ASP.NET: Uma pgina ASP.NET um arquivo de texto no lado
servidor com a extenso .aspx. A estrutura interna da pgina extremamente modular e compreende
trs sesses distintas.
Diretivas de pgina: Configuram o ambiente no qual a pgina ir rodar, especifica
como o HTTP processar a pgina, e determina quais os pressupostos sobre a pgina so seguros
para fazer. Alm de permitir importar namespaces, carregar assemblies, e registrar novos controles.
Sesso de cdigo: Contm manipuladores para a pgina e eventos de controles, mais
rotinas opcionais.
Layout de pgina: Representa o esqueleto de uma pgina. Isto inclui server controls,
textos literais a tags HTML.
Captulo 2
Viso Geral do Visual Studio 2005
O Visual Studio 2005 uma IDE desenvolvida pela Microsoft para desenvolver sites e
aplicaes usando a tecnologia .NET com todos os recursos da plataforma .NET Framework.
Na prxima figura temos a parte na qual desenvolvemos o design do site. Neste parte podemos
arrastar os componentes da toolbox e se alterarmos a opo CSS positioning para Absolutely
positioned podemos posicionar os componentes com o mouse. Se esta opo estiver desativada o
componente ser colado ao lado o ltimo.
Para editar propriedades como nome, texto, cores entre outros, basta selecion-los neste rea
e alterar as propriedades na paleta Properties.
Na parte inferior temos a opo Source. Aqui ns temos o cdigo HTML gerado pelo
WebDeveloper quando arrastamos e configuramos os componentes. Se voc tiver conhecimentos de
HTML e quiser alterar ou criar algum componente tem toda liberdade nesta rea.
Em ASP.NET diferentemente de outras linguagens, o cdigo HTML fica em um arquivo
separado do arquivo com o cdigo da linguagem escolhida. Se observar o desenho anterior ver que
existem 2 abas sendo uma Default.aspx e outra Default.aspx.cs que no caso o arquivo que contm o
cdigo C# desta pgina.
Abaixo temos a paleta Solution Explorer onde podemos visualizar e gerenciar a aplicao. A
partir desta paleta podemos adicionar, renomear e remover arquivos e referncias.
Standard: Onde esto os componentes padres e que so mais utilizados, como Label,
TextBox, Button, CheckBox, etc.
Data: Aqui ficam os componentes relacionados a dados. Componentes de conexo e
DataControls como GridView e DetailsView que veremos no captulo 6.
Validation: Aqui ficam os componentes de validao do formulrio que veremos no captulo 8.
Navigation: Aqui ficam componentes de navegao como o Menu que veremos no captulo 3.
Login: Nesta parte temos toda uma estrutura montada para criao e manuteno de login na
aplicao que veremos no captulo 7.
WebParts: Voc consegue criar diferentes zonas com controles e disponibiliz-las ao internauta
para customizar a exibio do layout dos sites. Com isso, cada internauta pode ter um visual
diferenciado. No ser abordado em nosso curso.
HTML: Componentes html.
General: Aqui ns podemos colocar componentes e scripts criados por ns.
Captulo 3
Interface Grfica
Introduo: A interface grfica permite que um usurio interaja com um programa visualmente.
So menus, botes, caixas de texto, listas entre outros. Atravs da interface grfica podemos capturar
as aes do usurio, processar os dados e retornar a informao processada.
Propriedades de controles: Quando nos referimos a um carro por exemplo, dizemos que ele
possui algumas propriedades como marca, modelo, cor, motorizao entre outras. Com os controle
no diferente. Os botes por exemplo, possuem nome, texto, cor, bordas e assim acontece com
cada controle da interface grfica.
Master Pages: Nas verses anteriores do ASP.NET bem como em outras linguagens como
ASP, PHP e JSP, sempre que desejamos repetir um cabealho em todas as pginas da nossa
aplicao tnhamos que usar um include para adicionar este cabealho em cada pgina, mas no
tnhamos relacionamento entre o cabealho e a pgina. Na verses anteriores do ASP.NET j existia
um recurso que permanece na verso atual chamado Web User Control mas na verso 2.0 foi criado
um novo recurso chamado Master Page. Com o Master Page passamos a interagir entre o cabealho
e a pgina e obtivemos vrias melhorias.
Para criar uma Master Page v at a Solution Explore e clique com o boto direito sobre o
caminho da aplicao, no menu suspenso que aparecer escolha Add New Item... e aparecer uma
janela com os tipos possveis. Escolha Master Page, defina um nome para o arquivo, para a linguagem
escolha C# e marque a opo Place code in separate file. Esta opo far com que ele gere um
arquivo separado para o cdigo C#. Depois s clicar em Add.
Ser criado um arquivo com Default.master. Repare que ele possui um objeto chamado
ContentPlaceHolder. Tudo o que voc criar fora deste objeto ser replicado em cada pgina que usar
esta Master Page. Portanto voc pode colocar a logomarca, o nome da empresa, um menu, enfim
aquilo que voc desejar que esteja nas pginas da sua aplicao.
Como uma pgina html s tem uma tag body, significa que as pginas criadas dentro do
MasterPage no tero a tag body visto que a MasterPage j a possui. Se observarmos o cdigo aspx
gerado pela pgina filha, poderemos confirmar isto.
Mas como poderamos ento definir atributos especficos de uma pgina visto que os atributos
da pgina esto definidos na MasterPage?
Para fazermos isto devemos na MasterPage definir a tag body como runat=server e
definirmos um id. Nas pginas filhas devemos criar um objeto do tipo HtmlGenericControl com o
mesmo nome da tag body.
Dentro do evento PageLoad podemos definir os atributos da seguinte forma:
Menus: Todos ns estamos familiarizados com menus. Desde um editor de texto como o Word,
ou um gerenciador de arquivos como o Windows Explorer usam menus. No ASP.NET 2.0 muito fcil
criar um menu. Na toolbox na aba Navigation existe um componente Menu. Podemos arrast-lo para
nosso arquivo Default.master e configur-lo conforme desejamos. Para comear vamos clicar em Auto
Format e escolher um formato que nos agrade. Clique em Edit Menu Itens e vamos adicionar os itens
do menu. Clique no primeiro boto e ser criado um item. Mude a propriedade Text para Cadastro.
Com este item selecionado clique no segundo boto e vamos adicionar um sub-item. Nas
propriedades vamos preencher a opo NavigateUrl com o texto cad_funcionario.aspx e a propriedade
Text com Funcionrios. Podemos adicionar quantos itens quisermos e indent-los conforme a
necessidade da aplicao. Quando concluir clique no boto OK. Voltando ao design clique no menu e
vamos na paleta Properties e vamos mudar a propriedade Orientation para horizontal. Pronto nossa
aplicao j possui um menu e podemos voltar aqui quando quisermos alter-lo.
Label: um rtulo que colocamos em objetos que usaremos nas pginas. Para alterar o texto
basta selecionar o Label e na paleta Properties muda a propriedade Text para o texto que queremos.
Podemos configurar vrias propriedade como tipo da fonte, tamanho, cor entre outras.
TextBox: uma caixa de texto na qual o usurio fornece dados a partir do teclado. Pode exibir
tambm informaes fornecidas pela aplicao. Assim como Label, possui vrias propriedades entre
elas temos TextMode que pode ser SingleLine, MultiLine e Password sendo que na ltima ao invs de
aparecer o texto digitado, aparecem asteriscos (*) por se tratar de uma senha.
Button: Um rea que chama um evento quando clicada. Tambm possui vrias propriedades
que podem ser alteradas na paleta Properties bem como em tempo de execuo. Existem outros tipos
de botes que veremos mais adiante.
ListBox: Caixa de lista. Uma rea na qual uma lista de itens exibida, E o usurio pode fazer
uma seleo clicando uma vez em qualquer elemento. Vrios elementos podem ser selecionados se
setarmos a propriedade SelectionMode para Multiple.
lbxExemplo.SelectedValue;
lbxExemplo.SelectedIndex;
lbxExemplo.SelectedItem;
RadioButtonList: Uma lista de botes do tipo radio. Somente uma opo poder ser escolhida
por vez. Com isto, se selecionarmos a opo So Paulo no exemplo abaixo, automaticamente a opo
Belo Horizonte ser desmarcada. Para identificarmos qual a opo escolhida podemos usar as
propriedades SelectedIndex ou SelectedItem onde temos Value, Text entre outras.
rblExemplo.SelectedValue;
rblExemplo.SelectedIndex;
rblExemplo.SelectedItem;
DropDownListBox: Caixa de combinao. Uma lista suspensa de itens na qual o usurio pode
fazer uma seleo clicando em um item da lista ou digitando na caixa, se for permitido. Para
identificarmos qual a opo escolhida podemos usar as propriedades SelectedIndex ou SelectedItem
onde temos Value, Text entre outras.
ddlExemplo.SelectedValue;
ddlExemplo.SelectedIndex;
ddlExemplo.SelectedItem;
Para quem j est acostumado com o desenvolvimento web sabe o quanto importante a
validao de dados antes que seja feita uma requisio ao servidor. Para isto criamos funes
JavaScript para atender s validaes dos componentes de data, e-mail, etc.
Agora com ASP.NET isto muito fcil de ser feito apenas arrastando os componentes e
configurando-os na paleta Properties.
Neste captulo vamos falar de cada um e veremos como ficou fcil e prtico validar
componentes no cliente.
RequiredFieldValidator: Para comear vamos falar do RequiredFieldValidator que talvez seja o mais
usado. A traduo Validador de campo requerido. Com este componente podemos verificar se um
determinado campo est ou no preenchido. Isto muito comum quando temos por exemplo a
exigncia do preenchimento de uma data ou e-mail ou CPF, etc.
Para us-lo basta arrast-lo para a tela e configurar a propriedade ControlToValidade com o
nome do controle requerido. Podemos tambm digitar o texto que ser exibida no validator pela
propriedade Text. Posteriormente veremos tambm que o texto na propriedade ErrorMessage poder
ser exibido ao usurio.
Com a propriedade SetFocusOnError determinado que o cursor ser posicionado no campo
caso este no esteja preenchido.
Posteriormente veremos a funo da propriedade Display.
RangeValidator: um validador de escala, isto quer dizer que podemos colocar uma escala ou limites
para os valores de um componente.
Imagine que voc tenha um campo onde o usurio tenha que colocar a idade. Um valor menor
que 0 ou maior que 130 invlido. Entra em ao ento o RangeValidador.
Na propriedade ControlToValidate definimos o componente que ser validado.
Para definirmos os valores ou a escala permitida devemos preencher as propriedades
MaximumValue e MinimumValue. No exemplo anterior temos MinimumValue=0 e MaximumValue=
130.
Podemos tambm digitar o texto que ser exibido no validator pela propriedade Text.
Posteriormente veremos tambm que o texto na propriedade ErrorMessage poder ser exibido para o
usurio.
Com a propriedade SetFocusOnError determinamos que o cursor ser posicionado no campo
caso este esteja fora da escala.
Posteriormente veremos a funo da propriedade Display.
RegularExpressionValidator: um validador de expresses pr-definidas pelo desenvolvedor.
Quando queremos validar expresses que pode seguem determinados formatos ou mscaras
especficos. Como exemplo temos telefone, CEP, Ur, etc.
O RegularExpressionValidador tem as mesmas propriedades do RangeValidator com excesso
do MaximumValue e MinimumValue e com o acrscimo da propriedade ValidationExpression.
atravs desta propriedade que definimos a mscara ou expresso que ser exigida no campo
validado.
Se clicarmos no boto correspondente a esta propriedade na paleta Properties veremos que j
esto disponveis algumas expresses.
CustomValidator: As vezes queremos criar uma funo para que faa validaes que no esto
disponveis em nenhum componente Validator. Para isto usamos o CustomValidator.
Atravs da propriedade ClientValidationFunction definimos uma client script validation function.
Conceito: Se voc j est acostumado com o desenvolvimento para ambientes web, ento j
deve ter trabalhado com arquivos CSS. Eles so usados para definir padres de cores, fontes, bordas,
etc. de websites que mesmo podendo ser selecionados programaticamente no servidor, em seu
ncleo o CSS continua a ser uma tecnologia do lado cliente, consebida e implementada para aplicar
skins a elementos HTML.
Agora no Asp.NET podemos trabalhar com um novo conceito chamado theme. Um theme
(tema) composto por arquivos skin, imagens e arquivos CSS.
Imagine voc poder definir propriedades como cr, fonte, fundo, borda e ao arrastar um boto
ou qualquer controle em sua pgina ele tome a forma que voc j predefiniu sem que voc tenha que
ficar mudando estes atributos. Este o objetivo de trabalhar com themes.
Criando um Skin File: Para adicionar um novo skin file clique com o boto direito do mouse
sobre o projeto na SolutionExplorer e depois em Add new item. Quando aparecer uma tela semelhante
tela acima, selecione Skin File e d um nome ao arquivo. Clique em Add.
Se for a primeira vez que estiver adicionado um arquivo de skin voc receber uma mensagem
de que o arquivo deve ser criado em uma pasta especfica chamada App_Themes. Selecione Sim e
ser criada esta pasta em sua aplicao juntamente com o arquivo skin.
Crie um arquivo do tipo WebForm em sua aplicao e d qualquer nome a ele. Depois iremos
remov-lo. Arraste vrios objetos para este arquivo aspx que acabamos de criar e defina as
propriedades de cada objeto como voc deseja que fica seu website. Por exemplo, coloque em um
boto a cr de fundo, o nome e o tamanho da fonte, a cr e o tamanho da borda, etc. Faa o mesmo
em todos objetos com TextBox, Calendar, RadioButtonList, CheckBoxList, DropDownList, etc.
Mude a visualizao para Source e veremos o cdigo asp. Selecione todo o texto, copie e cole
no arquivo skin. Como o skin um arquivo de configurao para todos os objetos da pgina no
podemos deixar a propriedade Id nos objetos. Ento remova a propriedade Id de todos os objetos
colados no arquivo skin.
Agora podemos excluir o arquivo aspx que criamos anteriormente. Salve o arquivo skin e abra
um arquivo aspx qualquer. Na paleta properties selecione o DOCUMENT e na propriedade
StyleSheetTheme selecione o arquivo de skin que voc criou.
Paleta Properties
Agora basta selecionar na ToolBox um objeto que voc j configurou previamente e ele
automaticamente receber a formatao definida.
Voc pode ainda definir mais de uma configurao para o mesmo tipo de objeto. Imagine que
voc deseja ter uma configurao para Labels de ttulo e outra para Labels de campos. Para isso
basta criar duas tags <asp:Label no arquivo skin e definir a propriedade skinId para cada label. No
arquivo aspx devemos ento definir qual skinId iremos aplicar ao labe que estamos editando. Se voc
tiver uma formatao que use com mais freqncia ento deixe-a sem skinId e ela ser selecionada
automaticamente sem que precise ficar definindo manualmente.
Captulo 6
Introduo linguagem C#
Variveis: Vamos comear falando das variveis. Ao contrrio do que acontece em ASP com
VBScript, as variveis precisam ser declaradas com seus respectivos tipos, mas ao contrrio do
Delphi, no precisam ser declaradas em locais especficos.
Podemos declarar uma varivel ao criarmos um lao for, por exemplo.
Operadores
Unrios: + - ! ++x --x x++ x
Aritmticos: * / % + -
Relacional: <> <= >= is
Igualdade: == !=
E condicional: &&
OU condicional: ||
Estrutura de controle
If: Com certeza a instruo mais utilizada e presente em praticamente todas as linguagens.
utilizada para testar um condio e executar um ou vrios comandos se a condio for satisfeita. Pode
ser utilizado com a instruo else para que se a condio no for satisfeita executar outros comandos.
Sintaxe:
if (condio) {
//Executa comandos
if (condio) {
//Executa comandos
}
else {
//Executa comandos
} // Se a condio no for verdadeira executa comandos dentre do else.
Switch: Em determinadas situaes testar tudo com if pode ser cansativo, neste caso
utilizamos o switch.
Sintaxe:
switch (expresso)
{
case constante - expresso:
//Executa comandos;
break;
case constante - expresso:
//Executa comandos;
break;
default:
//Executa comandos;
break;
}
Ex.: Suponhamos que voc tenha um comboBox onde o usurio define seu estado civil e temos
os valores: 0 : Solteiro; 1 Casado; 2 Vivo; 3 Divorciado. Teramos o cdigo:
switch (varEstadoCivil)
{
case 0:
//Cdigo para quem solteiro;
break; // Interrompe o lao caso a condio seja verdadeira.
case 1:
//Cdigo para quem casado;
break;
case 2:
//Cdigo para quem vivo;
break;
case 3:
//Cdigo para quem divorciado;
break;
default:
//Cdigo para outros.
break;
}
while (condio)
{
//Executa comandos;
}
Ex.:
int x = 0;
while (x < 10)
{
//Executa comandos;
x++;
}
Sintaxe:
do
{
//Executa comandos;
}
while (condio);
For: Utilizada para percorrer um determinado nmero de registros ou itens sendo que voc
deve saber exatamente quantos registros deve percorrer.
Sintaxe:
Classes: A classe um modelo para um objeto; ela descreve a estrutura bsica do objeto.
Uma analogia para entendermos classe e objeto considerar esses conceitos em termos de casas e
da construo delas. A classe seria o projeto para a casa, e a casa propriamente dita seria um objeto.
Muitas casas poderiam ser criadas com base no mesmo projeto, e muitos objetos podem ser gerados
com base na mesma classe. A maneira de instanciar uma classe usando-se a palavra-chave new.
Classes so compostas de mtodos e atributos que podem ser privados, pblicos ou
protegidos.
using System;
using System.Data;
namespace prjTeste {
// construtor
public Veiculo()
{
}
// mtodos
public double getAceleracao() {
return dblVelAceleracao;
}
}
}
public: O mtodo pblico e pode ser acessado por qualquer outro mtodo ou classe.
static: Significa que no necessrio instanciar a classe para se usar o mtodo pois este
mtodo no est aplicado a objeto algum.
void: O tipo de retorno que pode ser int, string, double entre outros. Void significa que no h
retorno de dados. Quando retornamos valores devemos usar return valor.
main: O nome do mtodo. Quando criamos mtodos devemos colocar nomes explicativos. Por
exemplo se criamos uma funo para calcular salrio devemos colocar algo como CalculaSalario.
String[] args: Aqui so colocados os parmetros que sero utilizados dentro do mtodo.
Obviamente podemos utilizar outros tipos alm de string como int, double, float entre outros.
Quando utilizamos a palavra ref antes do parmetro significa que o estamos passando por
referncia, ou seja, se o valor deste parmetro for alterado dentro do mtodo, tambm ser alterado
em toda a aplicao. Quando no usamos ref e colocamos apenas o tipo e o nome do parmetro, o
valor ser alterado somente dentro do mtodo.
Herana: Quando criamos a classe Veiculo definimos somente o atributo velAceleracao que
comum todo veculo. Porm se comearmos a especificar um pouco mais um veculo, podemos
perceber que ele pode ou no possuir um motor. Poderamos ento criar a classe VeiculoAutomotor.
Graa herana podemos reaproveitar os atributos e os mtodos da classe Veiculo, sendo necessrio
apenas definir na criao de nossa classe que ele herda da classe Veiculo.
Entendemos ento que herana a possibilidade de usarmos recursos criados em outras
classes e a partir desta classe que chamando de base criarmos novos atributos e mtodos.
Uma grande vantagem da herana em .Net que podemos herdar classes escritas em outras
linguagens, ou seja, podemos herdar em uma classe C# outra classe em VB.Net ou J#, etc.
using System;
using System.Data; ...
namespace prjTeste {
public class VeiculoAutomotor : Veiculo {
// novos atributos
// novos mtodos
}
}
Interface: Uma interface poderia ser definida como uma classe abstrata onde todos os
mtodos so abstratos se no fosse o fato de que uma classe filha no herda uma interface mas na
verdade a implementa. Sendo assim uma classe filha pode implementar vrias interfaces ao passo
que s pode herdar uma classe. Uma interface funciona como um contrato onde a classe
implementadora ter que cumprir ou implementar os mtodos da interface. Por exemplo,
comportamentos de um veculo incluem acelerar, frear, virar direita, virar esquerda. Mas podemos
ter veculos que fazem esta mesma funo de uma forma diferente.
Algumas diferenas entre classes abstratas e interfaces so listadas abaixo:
Sobrecarga de mtodos: s vezes, voc cria vrios mtodos que realizam funes muito
prximas sob diferentes condies. Por exemplo, imagine mtodos que calculem a rea de um
tringulo. Um mtodo poderia tomar as coordenadas cartesianas dos trs vrtices, e um outro poderia
tomar as coordenadas polares. Um terceiro mtodo poderia tomar os comprimentos de todos os trs
lados, enquanto um quarto poderia tomar trs ngulos e o comprimento de um lado. Todos esses
mtodos poderiam realizar a mesma funo essencial, e assim, inteiramente apropriado usar o
mesmo nome para os mtodos sendo que a seqncia e o tipo de parmetros definem qual mtodo
usar.
public void areaTriangulo(int vert1x, int vert1y, int vert2x, int vert2y,
int vert3x, int vert3y);
public void areaTriangulo(int polar1x, int polar1y, int polar2x, int polar2y);
public void areaTriangulo(int comp1, int comp2, int comp3);
public void areaTriangulo(double ang1, double ang2, double ang3, int comp1);
Sobrescrita de mtodos: Quando herdamos uma classe podemos reescrever um mtodo que
foi implementado na classe base. Por exemplo um mtodo implementado na classe Veiculo pode ser
reescrito na classe VeiculoAutomotor mas para isto o mtodo precisa ser criado com o atributo virtual.
Ento entendemos que podemos garantir que uma mtodo no ser reescrito na classe que herdar
nossa classe apenas no definindo o mtodo como virtual, ou vice-versa.
A classe string possui diversos mtodos que nos permitem manipular strings(texto). As vezes
precisamos desmembrar uma string ou ento coloc-lo em letras maisculas ou minsculas. Vamos
estudar alguns deste mtodos a seguir.
Split: O mtodo Split o oposto de Join. Utilizamos um delimitador para separar a string e
partes.
Ex.: string teste = "Este um teste do comando, Split";
string[] obj = teste.Split(',');
Replace: O mtodo Replace tem a funo de substituir uma string por outra previamente
definida.
Sintaxe: varivel.Replace(substituir, substitudo);
Substituir: o texto antigo que deve ser substitudo.
Substitudo: o novo texto que substitui o anterior.
Substring: Este mtodo tem a funo de encontrar trechos de uma string de acordo com os
ndices especificados.
Sintaxe: variavel.Substring(inicio, quantidade).
Inicio: ndice da posio inicial comeando de 0.
Quantidade: Parmetro que define a quantidade de caracteres a copiar.
Concat: Concatena uma ou mais instncias de uma string evitando o desperdcio de memria.
Sintaxe: string.Concat(string1, string2);
Ex.: string teste = "Adenzio";
string teste2 = " Carlos";
string teste3 = string.Concat(teste, teste2);
// A varivel teste3 ter o valor "Adenzio Carlos";
Se o valor retornado for menor que zero, ento a string1 menor que a string2.
Se o valor retornado for igual a zero, ento a string1 igual a string2.
Se o valor retornado for maior que zero, ento a string1 maior que a string2.
ToUpper e ToLower: O mtodo ToUpper converte uma string em letras maisculas enquanto o
mtodo ToLower converte uma string para letras minsculas.
StringBuilder: Como vimos no uso do mtodo Concat, uma string imutvel. Usando Concat
ns evitamos a criao de vrias instncias de um objeto string na memria no momento de criao do
mesmo. Porm quando queremos inserir ou alterar o valor de uma string, os mtodos disponveis
retornam um outro objeto string. Para que possamos manipular uma string sem que haja a
necessidade de criarmos outros objetos string devemos trabalhar com um objeto chamado
StringBuilder. Este objeto est no namespace System.Text que dever ser declarado no incio da
classe. Para instanciarmos um objeto StringBuilder seguiremos o padro da POO.
Ex.:
(Sql-Server):
string strConn = DataSource=localhost; Integrated Security= SSPI; Initial Catalog=Nwind;
SqlConnection conn = new SqlConnection(strConn);
conn.Open();
(Oracle):
string strConn = Data Source=localhost; User ID=nome; Password=123; +
Persist Security Info=True;;
OracleConnection conn = new OracleConnection(strConn);
conn.Open();
(Outros bancos):
string strConn = Provider=MSDAORA.1; DataSource=localhost; User ID=nome;+
Password=123;
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
DbCommand(Sql, OleDb e Oracle): Feita a conexo com a fonte de dados podemos executar
comandos e fazer consultas utilizando o objeto DbCommand e especificando a instruo SQL que
dever ser executada. Para Sql-Server (SqlCommand), Oracle (OracleCommand) e OleDb
(OleDbCommand). importante citar que o DbCommand deve ser do mesmo tipo do DbConnection,
ou seja, se usarmos SqlConnection o command ter que ser SqlCommand.
As principais propriedade de DbCommand so:
Aqui podemos escolher o tipo de conexo(Sql, Oracle, OleDb, etc.), a base de dados e o tipo
de login. Ao clicarmos em OK, retornaremos para a tela anterior com a string de conexo cadastrada.
Voc ter a opo de incluir esta string no arquivo web.config que veremos no prximo captulo.
Observe que podemos selecionar a coluna, o operador e a fonte que pode ser: None, Control,
Cookie, Form, Profile, QueryString e Session. Aps montarmos o parmetro, podemos adicion-lo
clusula WHERE.
Depois de clicarmos em OK, voltamos para a tela anterior e podemos clicar em ORDER BY...
Nesta tela definimos os campos que sero usados de base para ordenar a consulta e a forma
que ser feita a ordenao tambm, sendo Ascending / Crescente ou Descending / Decrescente.
Ao voltarmos para a tela anterior ainda podemos clicar em Advanced...
Nesta tela podemos selecionar a opo Generate INSERT, UPDATE, and DELETE statements
para que gere os comandos automaticamente.
Podemos tambm selecionar a opo Use optimistic concurrency para que ele verifique antes
do update e do delete se os valores foram mudados no banco antes executar o comando.
Podemos trabalhar de uma outra forma tambm que escolhendo montar a consulta de uma
forma customizada. Neste caso selecionamos a opo Specify a custom SQL e teremos a opo de
digitarmos a consulta ou usar o QueryBuilder conforme a prxima figura:
Neste caso podemos selecionar uma ou mais tabelas, criarmos relacionamentos e definirmos
os campos que faro parte das condies de consulta.
Observe que temos uma aba para cada comando: SELECT, UPDATE, INSERT, DELETE alm
da opo de selecionarmos uma Storedprocedure previamente compilada no banco de dados.
...
string strConn = DataSource=localhost; Integrated Security= SSPI; Initial Catalog=Nwind;
SqlConnection conn = new SqlConnection(strConn);
conn.Open();
string sql = Select codigo, nome from produtos where secao = 1;
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
varcodigo = dr.GetInt32(0); // Aqui usamos o GetInt que j converte para inteiro.
varnome = dr[nome].ToString(); // Neste caso usamos o nome da coluna;
// Obs.: Quando usamos Get + tipo, s podemos passar o ndice da coluna e no o nome.
}
...
...
string strConn = DataSource=localhost; Integrated Security= SSPI; Initial Catalog=Nwind;
SqlConnection conn = new SqlConnection(strConn);
conn.Open();
string sql = Select codigo, nome from produtos where secao = 1;
SqlDataAdapter da = new SqlDataAdapter(sql, conn); // Passamos o comando e a conexo
// Escolhemos um objeto DataSet ou DataTable para popular
DataSet ds = new DataSet() // ou DataTable dt = new DataTable();
da.Fill(ds, PRODUTOS); // ou da.Fill(dt) no caso do DataTable
...
DataView: uma viso dos dados em memria armazenados no DataSet. Com ele possvel
fazer filtros e ordenaes sem que seja necessrio submeter uma nova consulta ao banco de dados.
Captulo 10
Cookies: Um cookie uma informao que um servidor web pode armazenar temporariamente
junto a um browser. Uma aplicao prtica disto no comrcio via Internet. Suponhamos que algum
entre em uma loja virtual de discos, faa vrias selees para compra e v navegar em outros sites.
Ao voltar ao site de venda de cds, todas as suas selees tero sido mantidas e ele poder ento
fechar o seu negcio ou fazer mais aquisies.
As informaes so guardadas pelo browser e no pelo servidor Web, o que no deixa de fazer
sentido. Ficaria muito mais difcil para um servidor se lembrar dos milhares de browsers que o
acessaram recentemente e exatamente o que cada um deles fez ou selecionou.
Os cookies so enviados para o seu browser e mantidos na memria. Ao encerrar a sua
sesso com seu browser, todos os cookies que ainda no expiraram so gravados em um arquivo
(cookie file).
Muitas pessoas julgam que os cookies possam ser usados pelo servidor para obter
informaes a seu respeito ou invadir o seu disco rgido e obter dados a partir de l, o que no
verdade. Todas as informaes gravadas em um cookie so informaes que voc forneceu
voluntariamente ao servidor, de uma forma ou de outra.
Para criar um cookie, o servidor web envia uma linha de cabealho HTTP em resposta a um
pedido de acesso a uma URL solicitada pelo browser:
Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME; secure
NAME o nome do valor que se est armazenando no browser e VALUE o dado real sendo
armazenado no cookie. DATE a data na qual este cookie ir expirar.
DOMAIN indica um computador ou rede na qual este cookie vlido. Computadores fora deste
domnio no conseguiro ver este cookie.
A diretiva "secure" indica que o cookie somente ser transferido sobre conexes seguras
(https) e nunca sobre uma conexo http normal.
De todos estes campos, apenas o campo NAME obrigatrio.
Bom, voltando ao browser. Sempre que um browser solicita uma URL a um servidor que nele
tenha criado cookies anteriormente, includa, juntamente com a URL uma linha listando todos os
cookies existentes. Esta informao ser ento utilizada pelo servidor Web para dar continuidade a
transaes iniciadas anteriormente. Esta linha possui um formato do tipo:
Cookie: NAME=VALUE; NAME=VALUE; ...
Objetos Application e Session: O objeto Application foi criado para armazenar propriedades
(valores) ligados a um conjunto de usurios. No caso, os visitantes do site, de um modo geral. Como
exemplo, podemos citar o nmero total de visitantes no site a partir de uma determinada data, ou o
nmero de visitantes online no site.
O objeto Session foi criado para armazenar propriedades (valores) ligados a cada visitante,
individualmente. Como exemplo, podemos citar o carrinho de compras de um site de comrcio online.
Uma Session criada quando o visitante entra no site (cada visitante tem uma session e cada session
recebe um ID), e destruda quando o visitante sai do site (seja por logoff explcito ou por TimeOut).
J uma Application iniciada ao haver o primeiro pedido de acesso ao objeto Application, e
encerrado quando o servidor for desligado.
Todo o cdigo que se deseja executar ao criar ou destruir uma session, bem como uma
Application devem estar contidos no arquivo global.asax, um arquivo texto no formato abaixo
demonstrado, que deve ser colocado no diretrio raiz do site.
As variveis do objeto Application e do objeto Session so armazenadas no servidor, mas
necessrio que o browser aceite cookies, pois um cookie com o ID da sesso criado no computador
do visitante, para identific-lo.
Web.Config: Muitas vezes, voc quer incluir configuraes globais para sua aplicao, como
uma string de conexo com uma base de dados. No ASP clssico (3.0), isso possvel de ser feito
usando o arquivo global.asa. No .NET, existe um nova opo: o arquivo Web.Config file (XML-based),
e uma seo especial chamada AppSettings.
<appSettings>
<add key="PubsDSN" value="server=(local);database=pubs;uid=sa;pwd=;" />
</appSettings>
</configuration>
Na pgina:
<%@ Page Language="C#" %>
<html>
<body>
<%=System.Configuration.ConfigurationSettings.AppSettings["PubsDSN"]%>
</body>
</html>
Como as pginas ASP.NET realizamos uma ou mais tarefas individualmente, elas no controlam o
Aplicativo de modo geral, no podendo uma pgina afetar diretamente a outra. Deve existir uma
localizao central que controla a execuo do Aplicativo. Tendo este cenrio, entra em cena o
arquivo Global.asax.
OBS.: Apesar do Visual Studio .NET incluir o arquivo Global.asax por default, ele totalmente
opcional. Se seu Aplicativo no conter um arquivo desse tipo, o programa opera de forma padro.
Desejando adicionar funcionalidades, a sua utilizao torna-se essencial.
Este arquivo gerenciado pela .NET Framework. Sempre que ele for modificado, o CLR detecta isso e
faz com que o Aplicativo seja reiniciado para que as novas mudanas tenham efeito. Isso pode
ocasionar transtornos para os usurios finais. Modifique este arquivo somente o necessrio.
Captulo 11
WebServices
Criando um WebService: Para criarmos um WebService clique em File > New Web Site ...
Por padro criado um arquivo asmx, que equivalente a uma pgina aspx, porm sua funo
prover servios e no contedo. Cada arquivo asmx tem um arquivo .cs equivalente, onde so
criados os mtodos a serem publicados.
Um mtodo deve conter um atributo WebMethod, caso contrrio ele estar disponvel dentro da
aplicao mas no externamente a esta. Se voc examinar o arquivo .cs criado, notar que j existe
um mtodo de demonstrao criado automaticamente:
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
O WebService que acabamos de criar ser listado na tela. Ao clicarmos no link Service o Visual Studio
far uma busca de mtodos no WebService e exibir uma tela semelhante tela vista no browser
anteriormente. Depois podemos definir um nome de referncia em Web reference name e clicar em
Add Reference.
Agora basta inserir o cdigo abaixo em nossa aplicao Asp.Net:
using localhost;
...
protected void Page_Load(object sender, EventArgs e)
Gridviewl.DataSource = ds;
GridViewl.DataBind();