Sie sind auf Seite 1von 94

Análise e Desenvolvimento de Sistemas

4º Semestre
Disciplina - Script

Conhecendo o Ambiente de desenvolvimento

Visual Studio 2012

Criando um projeto Visual Studio 2012


Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Criando o Web Form


Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Criando um projeto vazio - Visual Studio 2017

Clique: Arquivo / Novo / Projeto...

Na caixa de diálogo que se abre:

 Visual C# / Web / Web Site


 Selecione Site ASP.NET Vazio
 Coloque o nome do projeto
 Escolha o local onde salvará o arquivo
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Código Aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Exemplo001.aspx.cs"
Inherits="Exercicios_Exercicio001" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Exemplo</title>
</head>
<body>
<form id="form1" runat="server">
<div>

</div>
</form>
</body>
</html>

Código Aspx.Cs
 Pressione F7 para acessar o código Aspx.Cs
 Ctrl + F5 Executa o código

using System;
using System.Collections.Generic;
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Exercicios_Exercicio001 : System.Web.UI.Page{
//comentário de uma linha
/*
* Comentário de
* Várias Linhas
*/
protected void Page_Load(object sender, EventArgs e){
Response.Write("Programando em C#");
}
}

Resultado

Criando a aplicação “Olá Turma!!!”

Somente no arquivo .aspx


 Ctrl + F5 Executa o código
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Somente no arquivo .cs


 Ctrl + F5 Executa o código

Interessante Saber

Arquivo .aspx

1- Language: Indica a linguagem que é utilizada na programação do código.


2- AutoEventiWireup: Aplicação de eventos automáticos no código
3- CodeFile: Indica qual é o arquivo de código que que ele está lingado
4- Inherits: Inherits quer dizer herdar. Indica a classe do arquivo aspx
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Arquivo Web.config
É o arquivo padrão que contém todas as configurações do nosso projeto.

1- Configuration: Todas as configurações devem estar dentro dele.


2- System.web: Guarda as orientações usadas pelo .NET
3- Compilation: Deve ser usada dentro da tag <system.web>. Ele define as
configurações de compilação
4- Atributo Debug: Vem de Depurar, é o processo de encontrar e reduzir defeitos
de uma aplicação ou mesmo de hardware.

Tipo de dados.
sbyte 8 bits -128 / 127
byte 8 bits 0 / 255
short 16 bits -32.768 / 32.767
ushort 16 bits 0 / 65.535
int 32 bits -2.147.483.648 / 2.147.483.648
uint 32 bits 0 / 4.294.967.295
long 64 bits -9.223.372.036.854.775.828 / 9.223.372.036.854.775.827
ulong 64 bits 0 / 18.446.744.073.709.551.615
char 16 bits
float 32 bits precisão de 7 dígitos
double 64 bits precisão de 15 dígitos
decimal 128 bits precisão de 28 dígitos
bool 8 bits true / false
string sequencia de caracteres Unicode / limitado pela memória do sistema.
Object pode armazenar qualquer tipo em variável de objeto.

Atenção:
 Por padrão um número de ponto flutuante é tratado como double. Para declarar uma variável
como float, deve-se utilizar o sufixo F ou f para o valor numérico bruto (5,3F). Também os
número inteiros brutos têm como padrão um tipo de dado int. Para definir um tipo da dado
long, utiliza-se o sufixo L ou l (4L).
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Todos os tipos de dados possuem mapeamento no CTS da plataforma .NET.

C# CTS Descrição
sbyte System.SByte 8 bits, com sinal
byte System.Byte 8 bits, sem sinal
short System.Int16 16 bits, com sinal
ushort System.UInt16 16 bits, sem sinal
int System.Int32 32 bits, com sinal
uint System.UInt32 32 bits, sem sinal
long System.Int64 64 bits, com sinal
ulong System.UInt64 64 bits, sem sinal
object System.Object
float System.Single 32 bits, ponto flutuante
double System.Double 64 bits, ponto flutuante
decimal System.Decimal 128 bits, alta precisão
bool System.Boolean verdadeiro ou falso
string System.String
char System.Char 16 bits, 1 caractere

Regras na Declaração de Variáveis


 O primeiro caractere deve ser uma letra ou ‘_’
 A partir do segundo caractere, podem ser usado:
o Letras
o Números
o ‘_’
 Se o identificador for igual a uma palavra-chave do C#, ele deve iniciar com ‘@’.

Exemplo:
double @float = 22.36;
Console.WriteLine(@float); // Saída: 22,36

Declaração de Variáveis
int anoNasc;
double peso;
char sexo;
bool canhoto;
int n1, n2, n3;

Inicialização de Variáveis
anoNasc = 1980;
peso = 65.7;
sexo = 'M';
double altura = 1.8;
int n1 = 10, n2 = 20, n3 = 30;

Constantes
const int Taxa = 10;
Taxa = 20; //ocasionará erro de compilação
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
Tabela ASCII

Convertendo números inteiros da tabela ASCII para Char


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
char x = (char)02;
Console.WriteLine("O número 15 Convertido de acordo com a tabela
ASCII é: " + x);
}
}
}

Conversão de Tipos de Dados (Casting)


Casting Implícito
Do menor valor para o maior valor, não ocorre perda de valor.
Exemplo:
float f = 2,3;
double n3 = f;
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Casting Explícito
A converção ocorre de um tipo “maior” para um tipo “menor”. Pode ocorrer perda de
informação.
Exemplo:
int i = 10;
byte b = (byte) i;

Classe Convert
A converção ocorre qualquer valor para qualquer valor.

string ss = Convert.ToString(constante);
bool b = Convert.ToBoolean(ss);
sbyte num1 = Convert.ToSByte(s);
byte num2 = Convert.ToByte(s);
short num3 = Convert.ToInt16(s);
ushort num4 = Convert.ToUInt16(s);
int num5 = Convert.ToInt32(s);
uint num6 = Convert.ToUInt32(s);
long num7 = Convert.ToInt64(s);
ulong num8 = Convert.ToUInt64(s);
char c = Convert.ToChar(s);
float f = Convert.ToSingle(s);
double d = Convert.ToDouble(s);
decimal de = Convert.ToDecimal(s);

DateTime data = DateTime.Now;


string novaData = Convert.ToString(data);
Console.WriteLine("Nova Data: " + novaData);

Método Parse
A converção ocorre de um tipo “STRING” para outros tipos.
string i = "10";
float f = float.Parse(i);
Console.WriteLine(f);

byte b = byte.Parse(i);
Console.WriteLine(b);

int x = Int32.Parse(" 275");


Console.WriteLine(x);

float y = float.Parse("13.78");

Console.WriteLine(y);

Conversões Boxing e Unboxing


Para entender como funciona a passagem de parâmetros, é preciso entender como os dados da
aplicação são armazenados na memória
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Exemplo: tipos de referência (Referênce Types)

o Object, String, Classes


o São armazenados na Managed Heap (Área de gerenciamento / montanha de
gerenciamento)
 Área da memória
 Local onde são criados os objetos
 O operador “=” associa (faz a referência) a variável ao objeto
 Os objetos criados continuam no managed heap após o término da
execução
 O Garbage Collector faz a limpeza dos objetos que não possuem mais
referência no managed heap

Exemplo: tipos de valor (Value Types)

o Int, float, double


o São armazenados na Stack (pilha)
 Área da memória
 Ao final da execução do programa ou bloco de código a stack fica vazia.

Boxing
Tipo valor para um tipo de referência

// Boxing: Valor -> referência


int num = 58;
Object obj = num;
Console.WriteLine(obj.ToString());

Unboxing
Tipo referência para um tipo de valor

//Unboxing: Referência -> valor


Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
Object obj = 12.46;
double d = (double)obj;
Console.WriteLine(d);

Garbage Collector
É um serviço fornecido pela plataforma .NET através do CLR. Faz uma limpeza no
managed heap removendo os objetos que não têm mais referências.

O CLR decide quando o garbage collector será executado.

Operadores Aritméticos
+ – * / %

Operadores de Comparação
== != < > <= >=

Operadores Lógicos
! || &&

Operadores de incremento / atribuição


++ -- += -= *= /= %=

~ Operador REVERSE.
Exemplo:
Console.WriteLine(~200);
Vai imprimir o inverso de 200 que é -201.

Estrutura de Controle ‘if-else’


if ( condição){
**************
}else{
**************
}

Operador Ternário
Sintaxe:
Condição ? Resposta se condição verdadeira : Resposta se condição falsa;

Exemplo
int idade = 17;
bool adulto = idade >= 18 ? true : false;
Console.WriteLine("É adulto: " + adulto);

string Adulto = idade >= 18 ? "Maior de idade" : "Menor de idade";


Console.WriteLine("É adulto: " + Adulto);
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
Estrutura de Controle ‘switch-case’

int i = 1;

switch ( i ){
case 1:
Instrução;
break;

case 2:
Instrução;
break;

default:
Instrução;
}

Estrutura de Repetição ‘while’


int idade = 15;

while (idade < 18){


Console.WriteLine(idade);
idade = idade + 1;
}

Estrutura de Repetição ‘do-while’


int contador = 10;

do{
Console.WriteLine(contador);
contador = contador + 1;
}while ( contador < 15 );

Estrutura de Repetição ‘for’


for (int i = 0; i < 10; i++){
Console.WriteLine( i );
}

O código abaixo executará um laço infinito

for ( ; ; ){
Console.WriteLine( "Loop infinito" );
}

Estrutura de Repetição ‘foreach’


Sintaxe:
foreach ( tipo nomeVariável in Array ){
Instrução;
}

A variável deve ser do mesmo tipo dos elementos do array.

Exemplo:
int[ ] array = { 5, 2, 3, 1, 7 };

foreach (int num in array){


Console.WriteLine( num);
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
}

Break
for (int i = 0; i < 10; i++){
if( i == 5 ){
break;
}
Console.WriteLine( i );
}

Continue
for (int i = 0; i < 10; i++){
if( i == 5 ){
continue;
}
Console.WriteLine( i );
}

Comandos de Entrada e Saída


<div>
<asp:Label ID="lblDados" runat="server" Text="Digite um valor: ">
</asp:Label>
<asp:TextBox ID="txbDados" runat="server"></asp:TextBox><br/><br/>
<asp:Button ID="btn" runat="server" Text="Evento" /><br /><br />
<asp:Label ID="lblReceb" runat="server" Text="Vai Receber:">
</asp:Label>
</div>

Código CS
public partial class Exercicios_Exemplo025 : System.Web.UI.Page {

protected void Page_Load(object sender, EventArgs e)


{ }

protected void btn_Click(object sender, EventArgs e) {


int x = Convert.ToInt32 (txbDados.Text);
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
lblReceb.Text = Convert.ToString(x);
txbDados.Text = "";
}

Array de objetos

Visão do Browser:

Código ASPX
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="css/bootstrap.min.css" rel="stylesheet" />
<script src="js/bootstrap.min.js"></script>
</head>
<body>
<form id="form1" runat="server">
<div class="container">
<div class="jumbotron">
<h1>Pilha</h1>
</div>
<div class="row">
<div class="col-lg-6">
<h2>Cadastro:</h2>
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
Nome:
<asp:TextBox id="txbNome" runat="server" required="required"></asp:TextBox> <br />
<br />
Idade:
<asp:TextBox id="txbIdade" runat="server" required="required"></asp:TextBox> <br />
<br />
<asp:Button ID="btn" runat="server" Text="Cadastrar" CssClass="btn-primary btn" Onclick="btn_Click"/>
</div>
<div class="col-lg-6">
<h2>Impressão:</h2>
<asp:Label ID="lblDados" runat="server" Text="Dados"></asp:Label>
</div>
</div>
</div>
</form>
</body>
</html>

Código Classe
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

public class AlunoTeste{


private string nome;
private int idade;

//construtor
public AlunoTeste( string nome, int idade) {
this.nome = nome;
this.idade = idade;
}

//setters
public void setNome(string nome){
this.nome = nome;
}

public void setIdade(int idade) {


this.idade = idade;
}

//getters
public string getNome(){
return nome;
}

public int getIdade(){


return idade;
}

public string Imprimir(){


return "Nome: " + getNome() + " Idade: " + getIdade();
}

}
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
Código Pilha (Motor)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

public class MotorPilha {


private static int cont = 0;
private static AlunoTeste[] al = new AlunoTeste[10];

public static void Insert(AlunoTeste aluno) {


MotorPilha.al[cont] = aluno;
cont++;
}

public static string Mostrar() {


string imprimir = "";
for (int i = 0; i < cont; i++) {
imprimir += "<div class='alert alert-success'>" + al[i].Imprimir() + "</div>";
}
return imprimir;
}

Código ASPX.CS
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page {

AlunoTeste al;

protected void Page_Load(object sender, EventArgs e) { }

protected void btn_Click(object sender, EventArgs e) {


string nome = txbNome.Text;
int idade = Convert.ToInt32(txbIdade.Text);

al = new AlunoTeste(nome,idade);
MotorPilha.Insert(al);
lblDados.Text = MotorPilha.Mostrar();

txbIdade.Text = "";
txbNome.Text = "";
}
}
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
Exercícios para adaptação

Exercício 001
Crie a classe abaixo.
Crie um layout simples.
Trabalhe a entrada e saída dos dados. O método Imprimir deve retornar todos os dados
da classe.
Utilize uma pilha de 10 posições.

Pessoa_A
- nome : string
- sobrenome : string
- idade : int
+ gets()
+ Sets()
+ Imprimir() : string

Exercício 002
Crie a classe abaixo.
Crie um layout simples.
Trabalhe a entrada e saída dos dados. O método Imprimir deve retornar todos os dados
da classe
Utilize uma pilha de 10 posições.

Carro_A
- nomeDoProprietario : string
- modelo : string
- ano : int
- cor : string
- placa : string
+ gets()
+ Sets()
+ Imprimir() : string

Exercício 003
Crie a classe abaixo.
Crie um layout simples.
Trabalhe a entrada e saída dos dados. O método Imprimir deve retornar todos os dados
da classe
Utilize uma pilha de 10 posições.
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
Carro_B
- modelo : string
- ano : int
- cor : string
- placa : string
- cidade: string
- estado : string
- valor : double
- desconto : double
+ gets()
+ Sets()
- Calcular() : double
+ Imprimir() : string

Exercício 005
Crie a classe abaixo.
Crie um layout simples.
Trabalhe a entrada e saída dos dados. O método Imprimir deve retornar todos os dados
da classe.
Utilize uma pilha de 10 posições.

IMC
- nome : string
- sobrenome: string
- peso : double
- altura : double

+ gets()
+ Sets()
- CalcularIMC() : double
+ Imprimir() : string

Revisão – HTML / Bootstrap

Código Base: Tags Estruturais

<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8" />
<title>Título</title>
<!—Bibliotecas incorporadas -->
<script src=“Código.js"></script>
<link href=“Código.css” rel="stylesheet" />
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
</head>
<body>
<!— Aqui colocamos todo o conteúdo de nosso site!-->
</body>
</html>

Estrutura: Bootstrap

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="001.aspx.cs"


Inherits="PG_Bootstrap_001" %>
<!DOCTYPE html>
<html>
<head runat="server">
<title>Tipografia</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">

<link href="../CSS/bootstrap.min.css" rel="stylesheet" />


<script src="../JS/jquery-1.12.0.js"></script>
<script src="../JS/bootstrap.min.js"></script>

</head>
<body>
<form id="form1" runat="server">
<div class="container">
<div class="row">
<div class="col-lg-6"></div>
<div class="col-lg-6"></div>
</div>
</div>
</form>
</body>
</html>

Container – Header
Utilizado para definir o cabeçalho da página, possui apenas valor semântico.

<header> Conteúdo </header>.

Atenção: Não confundir <header></header> com <head></head>.

Exemplo:
<header>
<hgroup>
<h1>Capítulo de nível hierárquico 1 </h1>
<h2> Sub Capítulo - nível hierárquico 2</h2>
</hgroup>
</header>
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Container – Hgroup

Tem significado semântico.


Usamos o elemento "hgroup" para englobar uma ou mais tags de cabeçalho.

Exemplo:
<header>
<hgroup>
<h1>Capítulo de nível hierárquico 1 </h1>
<h2> Sub Capítulo - nível hierárquico 2</h2>
</hgroup>
</header>

Container – Section

Tem significado semântico.


Geralmente utilizado para determinar o corpo do site.

Exemplo:
<section id="corpo">
Conteúdo
</section>

Container – NAV

Tem significado semântico.


Esta tag determina um container onde geralmente colocamos os links de navegação.
<nav>
<ul>
<li>Home</li>
<li>Especificações</li>
<li>Fale conosco</li>
</ul>
</nav>

Container – Aside
Tem significado semântico.
Geralmente utilizado para determinar um conteúdo lateral

<aside id="lateral">
Conteúdo
</aside>
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
Container – Article
Tem significado semântico.
Especifica o conteúdo independente, auto suficiente.

<article>
Conteúdo
</ article >

Container – Footer
Tem significado semântico.
Utilizado para determinar o rodapé .

<footer id="rodape">
<p>Copyright 2013 - by Gustavo Guanabara</p>
<p>Facebook | Twitter</p>
</footer>

Container – Div
Div – Container básico

<div>
<p> Conteúdo</p>
</div>

Container – Exemplo

<body>
<form id="form1" runat="server">
<!-- Cabeçalho -->
<header class="jumbotron">
<hgroup class="container">
<h1>Título da aplicação</h1>
</hgroup>
</header>

<!-- Corpo -->


<section class="container">
<h1>Conteúdo Principal</h1>
<!-- Conteúdo específico -->
<article class="row">
<div class="col-lg-6">
<h3>Conteúdo da esquerda</h3>
<p>
Lorem ipsum dolor sit amet,
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
consectetur adipiscing elit.<br/>
Sed nec dolor non lectus
facilisis iaculis in rhoncus leo.
</p>
</div>
<div class="col-lg-6">
<h3>Conteúdo da direita</h3>
<p>
Lorem ipsum dolor sit amet,
consectetur adipiscing elit.<br />
Sed nec dolor non lectus facilisis
iaculis in rhoncus leo.
</p>
</div>
</article>
</section>
<hr />
<footer>
<address class="container">
<abbr title="Faculadade de Tecnologia
de Guaratinguetá">FATEC</abbr>
<p>
Av. Professor João Rodrigues
Alckmin - 1.501<br />
Jardim Esperança - Guaratinguetá –
SP
</p>
</address>
</footer>
</form>
</body>

Container – Visão do Exemplo


Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Exercício 005
Objetivo:
 Familiarizar com a sintaxe da linguagem, bootstrap.
Crie a classe abaixo.
Crie uma página web com layout simples utilizando Bootstrap.
Trabalhe a entrada e saída dos dados. O método Imprimir deve retornar todos os dados
da classe
Utilize uma pilha de 10 posições.

Animal
- nome : string
- raça: string
- proprietário : string
- telefone : string

+ gets()
+ Sets()
+ Imprimir() : string

Exercício 006
Objetivo:
 Familiarizar com a sintaxe da linguagem, bootstrap.
Crie a classe abaixo.
Crie uma página web com layout simples utilizando Bootstrap.
Trabalhe a entrada e saída dos dados. O método Imprimir deve retornar todos os dados
da classe.
Utilize uma pilha de 10 posições.

Cliente
- nome : string
- sobrenome: string
- rg : string
- cpf : string

+ gets()
+ Sets()
+ Imprimir() : string

Exercício 007
Objetivo:
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
 Familiarizar com a sintaxe da linguagem, bootstrap.
Crie a classe abaixo.
Crie uma página web com layout simples utilizando Bootstrap.
Trabalhe a entrada e saída dos dados. O método Imprimir deve retornar todos os dados
da classe.
Utilize uma pilha de 10 posições.

Endereco
- end_rua : string
- end_numero: string
- end_bairro: string
- end_cidade: string
- end_estado: string
- end_cep: string

+ Gets()
+ sSets()
+ Imprimir() : string
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Master Page

Master Page é um layout padrão que será utilizado por todas as outras páginas, o que representa
uma herança visual.

Com isso conseguimos uma maior facilidade de manutenção do site, pois ao modificarmos a Master
Page, todas as demais serão modificadas.

A Master Page não é executada, o que é executado são as páginas que herdam as características
visuais da Master Page.

Para inserir uma Master Page:

 Botão Direito sobre o projeto:


o Add / New Item
o Master page
o Linguagem Visual C#
o Coloque um nome Sugestivo
 “MasterPage.Master”
o Add

Observação:

A Master Page possui a extensão .Master


Da mesma forma que as páginas .aspx ela possui um Code Hidden.cs.
É necessário uma página que herde as características da Master Page para que ela seja executada.

ContentPlaceHolder

<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">


Local disponível para as páginas filhas
</asp:ContentPlaceHolder>

São locais onde serão substituídos os conteúdos de outras páginas.


Aquilo que não é padrão.
As páginas filhas terão seu conteúdo exibido neste local.
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Estrutura Básica HTML / MasterPage

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs"


Inherits="MasterPage" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<asp:ContentPlaceHolder id="head" runat="server">
Local reservado para os Scripts das Páginas filhas
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
Local reservado para o conteúdo principal das páginas filhas
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>

Componentes Asp
Os Web Control encotram-se na aba ToolBox.
Menu View / Toolbox
Os Web Controls sempre começam com as tags:
<asp:TextBox> </asp:TextBox>
Onde TextBox é o nome do Web Control

Exemplo – Código ASPX:

Web Control:<br/>
<asp:TextBox ID="TextBox1" runat="server" Width="186px">
</asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server" Text="Button" />
<br />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>

Atributo: runat=“server” faz com que este código possa ser manipulado pelo servidor
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Post Back
Post Back: São requisições no servidor que faz com que a página seja recarregada.
Sempre que ocorre um evento em nossa página ocorre um Post Back.

Por exemplo:

O usuário preenche um formulário e clica no botão enviar. (ocorre um evento)


Neste caso uma ação é requisitada no servidor e a página é recarregada.

Observação: Toda vez que ocorre um Post Back, ocorrerá um novo ciclo na página, o que leva a um
novo processamento. Por este motivo, em propriedades, o evento “AutoPostBack” vem habilitado
como “false”.
Quanto menos Post Back em uma página, melhor será sua performance.

TextBox
Vamos criar o modelo abaixo e trabalhar suas propriedades.

Codigo Asp
<asp:TextBox ID="txb" runat="server"></asp:TextBox>
<asp:Button ID="btn" runat="server" Text="Enviar" />
<asp:Label ID="lbl" runat="server" Text="Receber"></asp:Label>

Visão do Browser

O código abaixo envia o conteúdo do TextBox para o Label.

protected void btn_Click(object sender, EventArgs e) {


lbl.Text = txb.Text;
txb.Text = string.Empty;
}

Propriedade TextMode
Permite formatar o TextBox para receber diversos tipos de dados

Atenção:
Browsers diferentes podem ter comportamentos diferentes
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

TextMode: MultiLine

TextMode: Password

TextMode: Date
Padrão Americano

TextMode: Email
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

TextMode: Number

TextMode: Url

DropDownList
É uma caixa de Seleção que nos oferece várias opções para serem escolhidas.

Selecionando através do método “SelectedIntem”


Podemos selecionar o texto ou o valor.
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Selecionando o Texto

Selecionando o Valor
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Evento no DropDownList

Podemos fazer o mesmo colocando um evento no DropDownList.

Radio Button List


A maneira de trabalhar com o Radio Button List é muito parecido como DropDownList.
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Selecionando um item de acordo com o texto.

Selecionando um item de acordo com o valor.

Check Box List


O Check Box List Permite selecionar mais de um item.

Para verificarmos quais elementos foram selecionados precisaremos de um loop.


Utilizando o FOR
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Exercício
 Crie uma Master Page.
 Vincule os arquivos de estilo / JavaScript
 Crie as páginas filhas.
o A partir deste momento todas as páginas filhas deverão herdar as
características da Master Page.
 Crie os formulários para cadastro.
 Independente da finalidade do formulário, o importante neste momento é treinar os
componentes TextBox, DropDownList, RadioButtonList e CheckBoxList.
 Treine os eventos.
o Utilizando o botão
o Utilizando o DropDownList
o Utilizando o RadioButtonList

A criatividade é muito importante.


Tenha capricho nos exercícios.

Exercício 008
Bootstrap obrigatório.
Crie a classe abaixo.
Crie uma página web com layout simples utilizando Bootstrap.
Trabalhe a entrada e saída dos dados. O método Imprimir deve retornar todos os dados
da classe
Utilize um RadioButtonList para o atributo sexo.

Individuo
- ind_nome : string
- ind_cpf: string
- ind_sexo: char

+ Gets()
+ sSets()
+ Imprimir() : string
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Exercício 009
Bootstrap obrigatório.
Crie a classe abaixo.
Crie uma página web com layout simples utilizando Bootstrap.
Trabalhe a entrada e saída dos dados. O método Imprimir deve retornar todos os dados
da classe
Utilize um RadioButtonList para o atributo sexo.
Utilize um DropDownList para o atributo estado.

Funcionario
- fun_nome : string
- fun_cpf: string
- fun_rg: string
- fun_rua:string
- fun_numero:string
- fun_cidade:string
- fun_estado:string
- fun_cep:string
- fun_sexo: char

+ Gets()
+ sSets()
+ Imprimir() : string

Exercício 010
Bootstrap obrigatório.
Crie a classe abaixo.
Crie uma página web com layout simples utilizando Bootstrap.
Trabalhe a entrada e saída dos dados. O método Imprimir deve retornar todos os dados
da classe
Utilize um DropDownList para o atributo especialidade.

Clinica
- cli_nomeMedico : string
- cli_especialidade: string
- cli_dataConsulta: dateTime
- cli_nomePaciente: string

+ Gets()
+ sSets()
+ Imprimir() : string
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Construtores

É um ‘método especial’ chamado em um objeto quando ele é criado (instanciado) através do operador
new( ).
Utilizado para inicializar o estado do objeto.
O construtor tem o mesmo nome da classe.
O construtor não define tipo de retorno.
Uma classe sempre deve ter um construtor definido, quando não definimos um construtor o compilador
cria um construtor padrão.

class Livro {
public Livro ( ) { Construtor Padrão
}
}

Construtor com parâmetro

Assim como métodos, construtores pode receber parâmetros.

class Livro{
public Livro ( int numPagina, double valor ){
//................
}
}

Os parâmetros são fornecidos no momento de instanciar o objeto

Livro l1 = new Livro ( 330, 80.0 );

Sobrecarga de Construtores

Assim como métodos, construtores também podem ser sobrecarregados.


A partir do momento em que um construtor é definido, o construtor padrão não é mais gerado.

public Livro ( ) {
}

public Livro ( int numPagina, double valor ) {


}

public Livro (string nomeLivro ) {


}

Obs.: A execução do construtor dependerá de como o operador “new( )” é chamado.


Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
Exemplo de Código - Classe

public class Teste {

private int num1, num2;

public Teste(int num1, int num2) {


this.num1 = num1;
this.num2 = num2;
}

public Teste(int num1) : this(num1,1) {


this.num1 = num1;
}

//GETTERS e SETTERS
public string Imprimir() {
return "Soma: " + (getNum1() + getNum2());
}

Exemplo de Código – Code be hidden

public partial class pg_sobrecarga : System.Web.UI.Page {


protected void Page_Load(object sender, EventArgs e){
// Chamando o construtor com dois parâmetros
Teste t1 = new Teste(7,3);
lbl.Text = t1.Imprimir( );

// Chamando o contrutor com um parâmetro


Teste t2 = new Teste(7);
lbl.Text = t2.Imprimir();
}
}

Sobrecarga de Métodos

Sobrecarregar um método significa criar outros métodos com o mesmo nome, mas com
assinaturas diferentes.

public int somar (int a, int b)


public int somar (int a, int b, int c)
public double somar (double a, double b)
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
Observação:
Mudar somente o tipo de retorno gera erro de compilação.

public int somar (int a, int b)


public void somar (int a, int b)

Exemplo de Código - Classe

public class Teste {

private int num1, num2;

//SETTERS
public void setNum1(int num1) { this.num1 = num1; }
public void setNum2(int num2) { this.num2 = num2; }

//GETTERS
public int getNum1() {return num1; }
public int getNum2() { return num2;}

//SOBRECARGA
public int Somar( int num1, int num2) {
this.num1 = num1;
this.num2 = num2;
return getNum1() + getNum2();
}

public int Somar(int num1) {


this.num1 = num1;
return Somar(num1, 1);
}
}

Exemplo de Código – Code be hidden

public partial class pg_sobrecarga : System.Web.UI.Page {


protected void Page_Load(object sender, EventArgs e) {
Teste t = new Teste();
// Chamando o método somar que possui dois parâmetros
lbl.Text = t.Somar(1,2)+"<b/>;

// Chamando o método somar que possui um parâmetro, este método chamará o método que
possui dois parâmetros
lbl.Text = t.Somar(7);
}
}

----------------------------------------------------------------------------------------------------------------
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
Exemplo: Classe / Construtor:

Classe:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

public class AlunoTeste{


private string nome;
private int idade;

//construtor
public AlunoTeste( string nome, int idade) {
this.nome = nome;
this.idade = idade;
}

//setters
public void setNome(string nome){
this.nome = nome;
}

public void setIdade(int idade) {


this.idade = idade;
}

//getters
public string getNome(){
return nome;
}

public int getIdade(){


return idade;
}

public string Imprimir(){


return "Nome: " + getNome() + " Idade: " + getIdade();
}

Página.ASPX:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="css/bootstrap.min.css" rel="stylesheet" />
<script src="js/bootstrap.min.js"></script>
</head>
<body>
<form id="form1" runat="server">
<div class="container">
<div class="jumbotron">
<h1>Pilha</h1>
</div>
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
<div class="row">
<div class="col-lg-6">
<h2>Cadastro:</h2>
Nome:
<asp:TextBox id="txbNome" runat="server" required="required"></asp:TextBox> <br />
<br />
Idade:
<asp:TextBox id="txbIdade" runat="server" required="required"></asp:TextBox> <br />
<br />
<asp:Button ID="btn" runat="server" Text="Cadastrar" CssClass="btn-primary btn" Onclick="btn_Click"/>
</div>
<div class="col-lg-6">
<h2>Impressão:</h2>
<asp:Label ID="lblDados" runat="server" Text="Dados"></asp:Label>
</div>
</div>
</div>
</form>
</body>
</html>

Página.ASPX.CS
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page{


protected void Page_Load(object sender, EventArgs e) {

protected void btn_Click(object sender, EventArgs e) {


string nome = txbNome.Text;
int idade = Convert.ToInt32(txbIdade.Text);
AlunoTeste al = new AlunoTeste(nome, idade);
lblDados.Text = "<div class='alert alert-success'>" + al.Imprimir() + "</div>";

txbNome.Text = "";
txbIdade.Text = "";
}
}

Visão do Browser:
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
Herança
A herança é um relacionamento que pode existir entre classes na orientação a objetos.

Quando uma Classe B herda de uma Classe A.

B herda as funcionalidades de A.
B pode estender as funcionalidades de A.
B passa a ser do mesmo tipo de A.

A Subclasse é do tipo da Superclasse.

Herança Simples
Na herança simples a classe tem apenas uma superclasse direta.

Herança em C#
A herança é determinada através da seguinte notação.

class Subclasse : Superclasse{


}

class Funcionario : Gerente{


} // Funcionário herda de Gerente

Herança de Funcionalidades
Uma subclasse herda as funcionalidades da superclasse.

Exemplo: Super Classe

class Automovel{

public int Velocidade{get; set;}


Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
public void Acelerar( ){
Velocidade++;
}
public void Frear( ){
Velocidade = 0;
}
}

Exemplo: Subclasse

class Onibus : Automovel{


}

Exemplo: utilizando as funcionalidades

Onibus o = new Onibus ( );


o.Velocidade = 40;
o.Acelerar( );
o.Frear( );

O Objeto Ônibus tem acesso aos elementos da classe Automóvel.

Extensão de Funcionalidades
Uma subclasse também pode estender o comportamento da superclasse.

Exemplo: Super Classe

class Automovel{
public int Velocidade{get; set;}
//..............................
}

Exemplo: Subclasse

class Onibus : Automovel{


public void AbrirPorta( ) {
........
}
}

Exemplo: utilizando as funcionalidades

Onibus o = new Onibus ( );


o.Velocidade = 40;
o.AbrirPorta( );

Além dos elementos definidos em Automóvel, o objeto Ônibus também tem acesso a seu
próprios elementos.
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Herança e Sobrescrita de Métodos


Neste Exemplo trataremos apenas de Herança e Sobrescrita de Métodos.

Visão do Browser

Código ASPX
<%@ Page Title="" Language="C#" MasterPageFile="~/Paginas/MasterPage.master" AutoEventWireup="true"
CodeFile="TesteHerança.aspx.cs" Inherits="Paginas_TesteHerança" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server"></asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">


<div class="row">
<div class="col-lg-4">
<label for="txtNome">Nome:</label><br />
<asp:TextBox ID="txtNome" runat="server" CssClass="form-control"></asp:TextBox><br />
<br />
</div>
<div class="col-lg-4">
<label for="txtIdade">Idade:</label><br />
<asp:TextBox ID="txtIdade" runat="server" CssClass="form-control" TextMode="Number">
</asp:TextBox><br />
<br />
</div>
<div class="col-lg-4">
<label for="rblSexo">Sexo:</label><br />
<asp:RadioButtonList ID="rblSexo" runat="server">
<asp:ListItem Value="M" Selected="True">Masculino</asp:ListItem>
<asp:ListItem Value="F">Feminino</asp:ListItem>
</asp:RadioButtonList>
</div>
</div>

<asp:Button ID="btn" runat="server" Text="Testar" CssClass="btn-danger btn" OnClick="btn_Click" /><br />


<br /><br />

<asp:Label ID="lbl" runat="server" Text="Label"></asp:Label>

</asp:Content>
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Superclasse – Aluno.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

public class Aluno{


private int idade;
private string nome;

//- Construtor -----


public Aluno(int idade, string nome) {
this.idade = idade;
this.nome = nome;
}

//- setter -----


public void setIdade(int idade) {
this.idade = idade;
}

public void setNome(string nome) {


this.nome = nome;
}

//- getter ------


public string getNome(){
return nome;
}

public int getIdade(){


return idade;
}

//---------------------
public string Imprimir(){
return "Nome: " + getNome() + " Idade: " + getIdade();
}

Subclasse – AlunoFilho.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

public class AlunoFilho:Aluno{

private char sexo;


//- Construtor -----
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
public AlunoFilho(int idade, string nome, char sexo) : base(idade, nome) {
this.sexo = sexo;
}

public char Sexo {


get { return sexo; }
set {
if ((sexo != 'M') || (sexo != 'F')) {
value = 'M';
} else{
value = sexo;
}
}
}

public string Imprimir(){


return base.Imprimir() + " SEXO: " + Sexo;
}
}

Code be Hidden
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Paginas_TesteHerança : System.Web.UI.Page{

protected void Page_Load(object sender, EventArgs e) { }

protected void btn_Click(object sender, EventArgs e) {


AlunoFilho al = new AlunoFilho(Convert.ToInt32(txtIdade.Text), txtNome.Text,
Convert.ToChar(rblSexo.SelectedValue));

lbl.Text = al.Imprimir();

}
}

Exercícios 11

Crie a classe abaixo.


Crie sua persistência para receber um array de objetos
Crie uma página web com layout simples utilizando Bootstrap.
Trabalhe a entrada e saída dos dados. O método Imprimir deve retornar todos os dados da
classe.
Sempre que possível utilize elementos diferentes do TextBox.
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Exercícios 12
Crie a classe abaixo.
Crie sua persistência para receber um array de objetos
Crie uma página web com layout simples utilizando Bootstrap.
Trabalhe a entrada e saída dos dados. O método Imprimir deve retornar todos os dados da
classe.
Sempre que possível utilize elementos diferentes do TextBox.

Exercícios 13
Crie a classe abaixo.
Crie sua persistência para receber um array de objetos
Crie uma página web com layout simples utilizando Bootstrap.
Trabalhe a entrada e saída dos dados. O método Imprimir deve retornar todos os dados da
classe.
Sempre que possível utilize elementos diferentes do TextBox.
-------------------------------------
Monte um formulário para entrada de dados e impressão dos valores.
INSS = 7,5% sobre o salário bruto
Salário Líquido = Salário Bruto – INSS
Relatório = Impressão de todas as informações Utilize um array de 15 posições
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

MultiView e View

Os controles MultiView trabalha junto com o Controle View.


MultiView é um conteiner de Views.
Ele permite exibir ou ocultar elementos de uma página.

Código:
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
Associação

É uma conexão entre classes


Representa que duas classes possuem uma ligação ( um link por exemplo)
Esses Links existem somente durante uma operação.
Uma classe é utilizada como atributo de outra classe.

Fácil Manutenção do Código

Observe o Diagrama de Classe abaixo

Exemplo – Class Pessoa

public class Pessoa{

//atributos
private string nome;
private int idade;
private char sexo;

//Construtor
public Pessoa(string nome, int idade,char sexo){
this.......;
}
//getters e setters - Criou-se um get e um set para cada atributo
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
public string Imprimir(){
return "Nome: " + Nome + "<br/>Idade: " + Idade +
"<br/>Sexo: " + Sexo;
}
}

Exemplo – Class Funcionário


public class Funcionario {

//atributo
private string cargo;
private double salario;
private Pessoa pessoa;

//Construtor
public Funcionario(string cargo, double salario, Pessoa pessoa) {
this.cargo = cargo;
this.salario = salario;
this.pessoa = pessoa;
}
//getter e setter - Criou-se um get e um set para cada atributo

public string Relatorio(){


return pessoa.Imprimir() + "<br/>Cargo: " +
Cargo+"<br/>Salario: "+Salario;
}
}

Exemplo – Code be hidden

string nome = txbNome.Text;


int idade = Convert.ToInt32(txbIdade.Text);
char sexo = Convert.ToChar(ddlSexo.SelectedValue);
Pessoa pes = new Pessoa(nome, idade, sexo); // Inicializando os dados através de um
construtor

double salario = Convert.ToDouble(txbSalario.Text);


string cargo = txbCargo.Text;
Funcionario func = new Funcionario(cargo, salario, pes); // O Objeto pes (PESSOA) é um dado
do objeto Funcionário

lblReceber.Text = func.Relatorio();
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Exercícios 14:
Crie um array de objetos para cadastrar e imprimir dados da classe Livro.

Exercícios 15:
Crie um array de objetos para cadastrar e imprimir dados da classe Livro.

Exercícios 16:
Crie uma classe conforme diagrama.
Armazene as informações em um vetor.
Exiba as informações cadastradas no browser.
A página ASPX deve ser trabalhada de acordo com as seguintes informações:
Construtor: Deve inicializar todos os atributos.
endEstado: Utilize um dropdownlist
sexoCliente:Utilize um radiobuttonlist
Curso: Utilize CheckBoxList (JAVA, C#, PHP e MySqQL)
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Exercícios 17:
Crie um array de objetos para cadastrar e imprimir dados da classe Pessoa Física.
Crie um array de objetos para cadastrar e imprimir dados da classe Pessoa Jurídica.
Não esqueça de colocar sua assinatura nas Classes/páginas.

Capturando a data atual do sistema:


ano = Convert.ToInt32(DateTime.Now.Year);

ValidationGroup= " Grupo "

Em algumas situações teremos mais de um botão em uma mesma página.


Para isso é preciso determinar qual grupo de formulários cada botão irá executar.
Neste panorama, utilizamos a opção ‘ValidationGroup’.
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Código Aspx

<section class="row">
<div class="col-lg-6">
<h1>Aluno:</h1>
Nome: <asp:TextBox ID="txtNomeAluno" runat="server" placeholder="Nome do aluno"
ValidationGroup="Aluno"></asp:TextBox><br /><br />
Idade:<asp:TextBox ID="txtIdade" runat="server" TextMode="Number"
ValidationGroup="Aluno"></asp:TextBox><br />
<asp:Button ID="btnAluno" runat="server" Text="Aluno" OnClick="btnAluno_Click"
ValidationGroup="Aluno"/>
</div>
<div class="col-lg-6">
<h1>Dados Aluno:</h1>
<asp:Label ID="lblAluno" runat="server" Text="Dados Aluno: "></asp:Label>
</div>
</section>
<section class="row">
<div class="col-lg-6">
<h1>Produto:</h1>
Nome: <asp:TextBox ID="txtProduto" runat="server" placeholder="Nome do Produto"
ValidationGroup="Produto"></asp:TextBox><br /><br />
Quantidade: <asp:TextBox ID="txtNumeroProduto" runat="server" TextMode="Number"
ValidationGroup="Produto"></asp:TextBox><br /><br />
<asp:Button ID="btnProduto" runat="server" Text="Produto" OnClick="btnProduto_Click"
ValidationGroup="Produto" />
</div>
<div class="col-lg-6">
<h1>Dados Produto:</h1>
<asp:Label ID="lblProduto" runat="server" Text="Dados Produto: "></asp:Label>
</div>
</section>
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Projeto Interdisciplinar – Roteiro

Planejamento
Primeiro passo:
Levantamento de Requisitos do sistema.
Prototipação do sistema (wireframe).

Segundo passo:
Modelagem e criação do Banco de Dados.
Iremos utilizar o exemplo abaixo (Locação), lembrando que este exemplo é meramente
ilustrativo.

Observe as chaves primárias e a chave estrangeira.


Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Codificando a base de dados


-- drop database locacao;
create database locacao;

use locacao;

create table perfil(


per_codigo int primary key auto_increment,
per_descricao varchar(45) not null unique
)engine=innoDB;

create table usuario(


usu_codigo int primary key auto_increment,
usu_nome varchar(180) not null,
usu_rg varchar(14) not null unique,
usu_cpf varchar(14) not null unique,
usu_email varchar(180) not null unique,
usu_senha text not null,
usu_outrodocumentodescricao varchar(100),
usu_numerooutrodocumento varchar(45),
per_codigo int not null,
foreign key(per_codigo) references perfil(per_codigo)
)engine=innoDB;

create table locacao(


loc_codigo int primary key auto_increment,
loc_descricaoimovel text not null,
loc_rua varchar(180) not null,
loc_numero varchar(20),
loc_bairro varchar(180),
loc_cidade varchar(180),
loc_estado char(2),
loc_cep varchar(10) not null,
loc_complemento varchar(100),
loc_valorlocacao float not null,
loc_valordescontoporcentagem float not null,
loc_datalocacao datetime not null,
usu_codigo int not null,
foreign key(usu_codigo) references usuario(usu_codigo)
)engine= InnoDB;

-- insert into perfil(per_descricao) values('Adm');


-- insert into perfil(per_descricao) values('teste');
-- insert into perfil(per_codigo, per_descricao) values(1, 'Gerente');
-- insert into perfil(per_descricao) values('Cliente'),('Funcionário');

-- delete from perfil where per_codigo = 1;


-- delete from perfil where per_codigo <> 1;
-- delete from perfil where per_codigo > 1 and per_codigo <20 ;
-- delete from perfil;
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

-- select * from perfil;


-- select * from perfil where per_codigo desc;

/*
insert into usuario(usu_nome, usu_rg, usu_cpf,usu_email,usu_senha,per_codigo)
values
('Rodrigo Dionisio', '12.123.123-1', '123.123.123-00','teste@gmail.com','123',1);

insert into usuario(usu_nome, usu_rg, usu_cpf,usu_email,usu_senha,per_codigo)


values
('Luis Dionisio', '22.222.222-2', '222.222.222-22','outroteste@gmail.com','123',4);

insert into usuario(usu_nome, usu_rg, usu_cpf,usu_email,usu_senha,per_codigo)


values
('Luis Juan', '22.222.222-3', '222.222.222-33','luizjuan@gmail.com','123',5);

insert into usuario(usu_nome, usu_rg, usu_cpf,usu_email,usu_senha,per_codigo)


values
('Juan Luis', '22.222.222-5', '222.222.222-55','luisluiz@gmail.com','123',5);

insert into usuario(usu_nome, usu_rg, usu_cpf,usu_email,usu_senha,per_codigo)


values
('Kreep Juan', '22.222.222-4', '222.222.222-4','kreepjuan@gmail.com','123',6);

select * from usuario;


select * from usuario where usu_codigo = 1;
select * from usuario where usu_nome like '%is%';

select usu_nome from usuario;


select usu_nome, usu_rg, usu_cpf from usuario;
select usu_nome, usu_rg, usu_cpf from usuario where usu_nome like '%is%';
select usu_codigo, usu_nome, usu_rg, usu_cpf from usuario where usu_nome like '%is%'
order by usu_codigo desc;

select * from perfil inner join usuario using(per_codigo);


select * from perfil inner join usuario using(per_codigo) inner join locacao
using(usu_codigo);

select * from perfil left join usuario using(per_codigo);


select * from perfil right join usuario using(per_codigo);

select * from usuario order by usu_nome;


*/
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Verificando a versão do .NET Framework


Alterando a versão do .NET Framework

Botão direito sobre o projeto / Property Pages / Build


Em: “Target Framework” selecione a versão do .NET Framework desejado e clique em Ok.

Definir o padrão de pastas e organizar os arquivos

Aqui verificamos um exemplo simples.


Novas pastas podem ser criadas de acordo com a necessidade.
Para este exemplo criaremos uma HOME simples que será de acesso publico. A partir desta
página o usuário poderá acessar o sistema.
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Definição

Pasta App_Code:

Armazenará todas as nossas classes, dentro da pasta App_Code criamos as


pastas Classe e Persistência.

Pasta Classe:
As Classes são criadas de acordo com a modelagem do Banco de dados.
Atenção para os tipos de dados, eles não podem contrariar o que foi modelado
no banco de dados.
Devemos criar uma estrutura básica das classes.

Pasta Persistência:
Armazenará as classes de persistências, que são as classes que trabalharão com
o acesso ao banco de dados (Select, Delete, Insert, Update).
Nem toda classe precisa obrigatoriamente de uma classe de persistência.

Pasta Bin:
Contém todas os arquivos de configuração (dll do projeto – por exemplo
MySqlData).

dll MySqlData na pasta Bin

Este arquivo MySqlData é um arquivo de ponte, é ele quem fornece a conexão


da aplicação com o banco de dados.
Sem ele não é possível acessar nossa base de dados.
Você pode copiar o arquivo e colar dentro desta pasta Bin.

Ou clique com o botão direito do mouse sobre a pasta Bin / Add References
/ Browser / Ache o local onde está o arquivo MySqlData.dll. / ok
Pode (ou não) ser exibido uma mensagem avisando que as configurações
serão alteradas.

Atenção:
A pasta não pode ficar vazia, em algumas situações, mesmo executando a
operação descrita acima a pasta permanece vazia. Se isso acontecer, localize o
arquivo copie o cole o arquivo dentro da pasta.

Clique com o botão direito do mouse sobre a pasta Bin e dê um refresh para
verificar se a pasta contém o arquivo MysqlData.dll.

Planejamento – Master Page (Layout)

Definir o que será comum à todas as páginas e criar a Master Page (Layout).
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
Isso facilita a reutilização do código e a distribuição das tarefas entre os membros da
equipe.

Criando as classes Básicas


Classe – Perfil

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Descrição resumida de Perfil
/// </summary>
public class Perfil {
private int per_codigo;
private string per_descricao;

public int Per_codigo {


get{ return per_codigo; }
set{ per_codigo = value; }
}

public string Per_descricao{


Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
get{return per_descricao; }

set{per_descricao = value; }
}
}

Classe – Usuário
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Descrição resumida de Usuario
/// </summary>
public class Usuario {
private int usu_codigo;
private string usu_nome;
private string usu_rg;
private string usu_cpf;
private string usu_email;
private string usu_senha;
private string usu_outrodocumentodescricao;
private string usu_numerooutrodocumento;

//FK
private Perfil per_codigo;

public int Usu_codigo{


get{return usu_codigo; }
set{usu_codigo = value; }
}

public string Usu_nome{


get{return usu_nome; }
set{usu_nome = value; }
}

public string Usu_rg{


get{return usu_rg; }
set{usu_rg = value; }
}

public string Usu_cpf{


get{return usu_cpf; }
set{usu_cpf = value; }
}

public string Usu_email{


get{return usu_email; }
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
set{usu_email = value; }
}

public string Usu_senha{


get{return usu_senha; }
set{usu_senha = value; }
}

public string Usu_outrodocumentodescricao{


get{return usu_outrodocumentodescricao; }
set{usu_outrodocumentodescricao = value; }
}

public string Usu_numerooutrodocumento{


get{return usu_numerooutrodocumento; }
set{usu_numerooutrodocumento = value; }
}

public global::Perfil Per_codigo{


get{return per_codigo; }
set{per_codigo = value; }
}
}

Classe – Locação

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Descrição resumida de Locacao
/// </summary>
public class Locacao{

private int loc_codigo;


private string loc_descricaoimovel;
private string loc_rua;
private string loc_numero;
private string loc_bairro;
private string loc_cidade;
private string loc_estado;
private string loc_cep;
private string loc_complemento;
private double loc_valorlocacao;
private double loc_valordescontoporcentagem;
private DateTime loc_datacontratacao;

//FK
private Usuario usu_codigo;
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

public int Loc_codigo{


get{return loc_codigo; }
set{loc_codigo = value; }
}

public string Loc_descricaoimovel{


get{return loc_descricaoimovel; }
set{loc_descricaoimovel = value; }
}

public string Loc_rua{


get{return loc_rua; }
set{loc_rua = value; }
}

public string Loc_numero{


get{return loc_numero; }
set{loc_numero = value; }
}

public string Loc_bairro{


get{return loc_bairro; }
set{loc_bairro = value; }
}

public string Loc_cidade{


get{return loc_cidade; }
set{loc_cidade = value; }
}

public string Loc_estado{


get{return loc_estado; }
set{loc_estado = value; }
}

public string Loc_cep{


get{return loc_cep; }
set{loc_cep = value; }
}

public string Loc_complemento{


get{return loc_complemento; }
set{loc_complemento = value; }
}

public double Loc_valorlocacao{


get{return loc_valorlocacao; }
set{loc_valorlocacao = value; }
}

public double Loc_valordescontoporcentagem{


Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
get{return loc_valordescontoporcentagem; }
set{loc_valordescontoporcentagem = value; }
}

public DateTime Loc_datacontratacao{


get{return loc_datacontratacao; }
set{loc_datacontratacao = value; }
}

public global::Usuario Usu_codigo{


get{return usu_codigo; }
set{usu_codigo = value; }
}
}

String de Conexão
Configurar a String de Comexão no Web.Config

No Web.Config nós iremos criar nossa String de Conexão.


A String de conexão contém o nome do usuário do banco, senha do banco,
onde o banco está armazenado e qual o nome do database que iremos utilizar.
Cada vez que a aplicação solicitar um serviço do banco de dados, ele vai validar
esta String de conexão, se for válida ele acessa o banco de dados, executa suas
operações e retorna essa validação.

Script - String de Conexão

<appSettings>

<add key= "strConexao" value="Database = locacao; Data Source = localhost; User id = root;
Password=; pooling = false; "/>
</appSettings>

Onde:
key = nome sugestivo da String de Conexão.
Value = Dados para a conexão com o banco de dados.
Database = nome do banco de dados.
Data Source = Onde está armazenado o banco de dados, pode ser o Ip ou o endereço local.
User id = nome do usuário credenciado para acessar o banco de dados.
Password = senha de acesso do MySql para acessar o Banco de Dados.
Pooling = permite trabalhar com vários acessos utilizando a mesma as conexões;
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Script Conpleto: Web.Config com a String de Conexão

<?xml version=”1.0”?>
<configuration>
<appSettings>
<add key= "strConexao" value="Database = locacao; Data Source = localhost; User id = root;
Password=; pooling = false; "/>

</appSettings>

<system.web>
<compilation debug=”false” targetFramework=”4.0”>
<assemblies>
<add assembly=”MySql.Data, Version=6.6.3.0, Culture=neutral,
PublicKeyToken=C5687FC88969C44D”/>
</assemblies>
</compilation>
<httpRuntime/>
</system.web>
</configuration>

Classe Mapped
A classe Mapped é uma classe de mapeamento.
Ela pode ter qualquer nome.
Esta é a classe possui os métodos de conexão, comando, mapeamento e
execução com o banco de dados.

Métodos Comuns:
Método de Conexão - Cria o objeto de Conexão
Método de Comandos SQL - Cria o objeto e valida o comando a ser executado
Método Adapter - Executa o comando
Método de Parametrização - Valida as entradas de dados antes de executar o
comando Sql.

Criando a classe Mapped


Importar as seguintes Bibliotecas

//As bibliotecas MySql só aparecerão se a referência ao MyqlData estivar correta


using MySql.Data.MySqlClient;
using System.Configuration;
using System.Data;
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
Classe Mapped sem comentáiro

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MySql.Data.MySqlClient;
using System.Configuration;
using System.Data;

public class Mapped{

// Método para abrir a conexão


public static IDbConnection Connection(){

MySqlConnection objConexao = new MySqlConnection(ConfigurationManager.AppSettings


["strConexao"]);
objConexao.Open();
return objConexao;

// Comandos SQL - Cria o objeto e valida o comando a ser executado


public static IDbCommand Command(string query, IDbConnection objConexao){

IDbCommand command = objConexao.CreateCommand();


command.CommandText = query;
return command;
}

// Funciona como uma ponte entre os dados desconexos e conexos


public static IDataAdapter Adapter(IDbCommand command){

IDbDataAdapter adap = new MySqlDataAdapter();


adap.SelectCommand = command;
return adap;

}
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

// Parametrização
// Valida as entradas de dados antes de executar o comando Sql

public static IDbDataParameter Parameter(string nomeDoParametro, object valor){

return new MySqlParameter (nomeDoParametro, valor);

Comentando os métodos da classe Mapped


Método de Connection- Comentado
// IDbConnection - Representa uma fonte de conexão com banco de dados
public static IDbConnection Connection() {
// A linha abaixo cria um objeto de conexão com o MySql
// Observe que este objeto recebe a string de conexão "strConexao".
// A string de conexão está dentro do "AppSettings"
// A AppSettings está dentro do "Configuration" que está o Web.Config
MySqlConnection objConexao = new
MySqlConnection(ConfigurationManager.AppSettings["strConexao"]);
// O objeto abre a conexão com o banco de dados
objConexao.Open();
// Executa e retorna a conexão
return objConexao;
}

--------------------------------------------------------------------------------------------------------------------------------------

Método Command - Comentado:


// Comandos SQL - Cria o objeto e valida o comando a ser executado
// IDbCommand - Representa uma instrução SQL que é executado quando conectada a uma fonte de dados, e
implementada pelos provedores de dados.NET Framework que acessam bancos de dados relacionais.

public static IDbCommand Command(string query, IDbConnection objConexao) {


// O método recebe uma query que será uma sql a ser executada
// Para executar um comando no Banco de Dados a Conexão deve estar aberta por isso ele recebe o objConexao
// O objeto command recebe a conexão e cria um comando na conexão que está sendo executado
IDbCommand command = objConexao.CreateCommand();
// O objeto comando.CommandText recebe a query que é uma expressão SQL
command.CommandText = query;
//Executa e retorna o comando
return command;
}

--------------------------------------------------------------------------------------------------------------------------------------
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
Método Adapter - Comentado
IDataAdapter - trabalha como ponte entre dados desconexos e conexos. Após carregado o DataSet, será possível
uma manipulação desconexa destes dados em memória.
public static IDataAdapter Adapter( IDbCommand command) {
// O método executa um commando validado, por isso ele recebe um IDbCommand
IDbDataAdapter adap = new MySqlDataAdapter();

// O objeto executa e recebe os dados do Banco de Dados


adap.SelectCommand = command;
return adap;
}

--------------------------------------------------------------------------------------------------------------------------------------

Método Parameter – Comentado


// Valida as entradas de dados antes de executar o comando Sql
public static IDbDataParameter Parameter ( string nomeDoParametro, object valor) {
// Vai validar as entradas de dados e retornar os valores para serem trabalhado no sistema
return new MySqlParameter(nomeDoParametro, valor);
}

Classe de Persistência
Classes de persistências, que são as classes que trabalharão com o acesso ao banco de dados (Select,
Delete, Insert, Update).

Nem toda classe precisa obrigatoriamente de uma classe de persistência.

// importar a bibliotecas
using System.Data;

Persistência da classe Perfil


Método Insert

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

// importar biblioteca
using System.Data;

public class PerfilDB{


// INSERT
public static int Insert(Perfil p) {

int retorno = 0;

try{
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

IDbConnection objConexao; // Abre a conexao


IDbCommand objCommand; // Cria o comando

string sql = "INSERT INTO perfil(per_descricao) VALUES(?per_descricao)";

objConexao = Mapped.Connection();
objCommand = Mapped.Command(sql, objConexao);

objCommand.Parameters.Add(Mapped.Parameter("?per_descricao", p.Per_descricao));

// utilizado quando cdigo não tem retorno, como seria o caso do SELECT
objCommand.ExecuteNonQuery();
objConexao.Close();
objCommand.Dispose();
objConexao.Dispose();

}catch (Exception e) {
retorno = -2;
}

return retorno;
}

Método Insert Comentado

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

using System.Data;

/// <summary>
/// Descrição resumida de PerfilDB
/// </summary>
public class PerfilDB {

// Insere todos os dados do objeto (Classe Perfil) no BD é muito mais prático passar um
objeto todo de uma vez que passar atributo por atributo
// INSERT
public static int Insert(Perfil p) {
// 0 = caso de Sucesso
// -2 = caso de falha de conexão
int retorno = 0;

try {
// Cria obj conexao
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
IDbConnection objConexao;
// Cria obj comando
IDbCommand objCommand; // Cria o comando

string sql = "INSERT INTO perfil(per_descricao) VALUES(?per_descricao)";

// Abre a conexão
objConexao = Mapped.Connection();
//atribiu ao objeto commando a Sql e o objeto de conexão
objCommand = Mapped.Command(sql, objConexao);
// Parametriza os dados - Adiciona os dados para parametrização
objCommand.Parameters.Add(Mapped.Parameter("?per_descricao", p.Per_descricao));

// utilizado quando cdigo não tem retorno, como seria o caso do SELECT
objCommand.ExecuteNonQuery();
objConexao.Close(); //Fecha a conexão
//Disponibiliza o objeto conexão e o objeto comando para serem utilizados novamente
– limpando a memória
objCommand.Dispose();
objConexao.Dispose();

}catch (Exception e) {
retorno = -2;
}

return retorno;
}

}
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Carregando uma DropDown dinâmica e uma Grid


Para carregarmos uma dropdown com dados do banco primeiramente devemos fazer um
select.

Persistência – SELECT * From...

Public static DataSet SelectAll() {

DataSet ds = new DataSet();


IDbConnection objConnection;
IDbCommand objCommand;
IDataAdapter objDataAdapter;
objConnection = Mapped.Connection();

objCommand = Mapped.Command("SELECT * FROM perfil ORDER BY per_descricao ",


objConnection);

objDataAdapter = Mapped.Adapter(objCommand);

// O objeto DataAdapter vai preencher o DataSet com os dados do BD.


objDataAdapter.Fill(ds); // O método Fill é o responsável por preencher o DataSet

objConnection.Close();
objCommand.Dispose();
objConnection.Dispose();
return ds;
}
}

Persistência – SELECT * From... Comentado


// O DataSet é um objeto que armazena grande quantidade de dados
Public static DataSet SelectAll() {
// Aqui não é necessário criar um try/catch, pois se um erro ocorrer com a conexão, o dataset
ficará vazio. Se o dataset ficar vazio ou não temos dados no BD ou o código está errado

DataSet ds = new DataSet();


IDbConnection objConnection;
IDbCommand objCommand;

// trabalha como ponte entre dados desconexos e conexos. Após carregado o DataSet,
// será possível uma manipulação desconexa destes dados em memória.

IDataAdapter objDataAdapter;

objConnection = Mapped.Connection();
objCommand = Mapped.Command(("SELECT * FROM perfil ORDER BY per_descricao ",
objConnection);
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
objDataAdapter = Mapped.Adapter(objCommand);

// O objeto DataAdapter vai preencher o DataSet com os dados do BD, O método Fill é o
responsável por preenchre o DataSet
objDataAdapter.Fill(ds);
objConnection.Close();
objCommand.Dispose();
objConnection.Dispose();
return ds;
}
}

Carregar DropDownList

Código ASPX

<div class="row">
<div class="col-md-6 offset-3">
<asp:dropdownlist ID="ddl" runat="server" CssClass="form-control"></asp:dropdownlist>
</div>
</div>

Código ASPX.CS
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

public partial class Paginas_CarregarDropDown : System.Web.UI.Page{

protected void Page_Load(object sender, EventArgs e){

if (!IsPostBack){

//Carregar um DropDownList com o Banco de Dados


DataSet ds = PerfilDB.SelectAll();
ddl.DataSource = ds;
ddl.DataTextField = "per_descricao "; // Nome da coluna do Banco de dados
ddl.DataValueField = "per_codigo"; // ID da coluna do Banco
ddl.DataBind();
ddl.Items.Insert(0, "Selecione");
}

}
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Carregar GridView

Código ASPX

<asp:GridView ID="gdv" runat="server" CssClass="table table-dark"


AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="aca_nomefantasia" HeaderText="Nome Fantasia" />
<asp:BoundField DataField="aca_razaosocial" HeaderText="Razão Social" />
<asp:BoundField DataField="aca_cnpj" HeaderText="CNPJ" />
</Columns>
</asp:GridView>

<asp:Label ID="lbl" runat="server" Text="---"></asp:Label>

Código ASPX.CS
public partial class Paginas_CarregarGrid : System.Web.UI.Page {

protected void Page_Load(object sender, EventArgs e) {


if (!IsPostBack) {
CarregarGrid();
}
}

public void CarregarGrid() {


//DataSet ds = new DataSet();
DataSet ds = PerfilDB.SelectAll();
int qtd = ds.Tables[0].Rows.Count;
if (qtd > 0) {
gdv.DataSource = ds.Tables[0].DefaultView;
gdv.DataBind();
gdv.Visible = true;
lbl.Text = "Foram encontrados " + qtd + " de registros";
} else {
gdv.Visible = false;
lbl.Text = "Não foram encontrado registros...";
}
}
}
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
Exemplo Feito em Sala de Aula
Carregando grids em um Panel.
Manipulando a propriedade Visible [true / false].

Visão do Browser

Codigo ASPX.CS

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master"


AutoEventWireup="true" CodeFile="Grids.aspx.cs" Inherits="pg_Grids" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">


</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<div class="container">
<div class="row">
<div class="col-md-12">
<br />
<h2>Tabelas / Grids</h2>
<br />
<br />
</div>

<div class="col-md-3">

<asp:Button ID="btnPerfil" runat="server" CssClass="btn btn-primary btn-block"


Text="Perfil" OnClick="btnPerfil_Click" />

</div>
<div class="col-md-3">
<asp:Button ID="btnUsuario" runat="server" CssClass="btn btn-success btn-block"
Text="Usuário" OnClick="btnUsuario_Click" />
</div>
<div class="col-md-3">
<asp:Button ID="btnLocacao" runat="server" CssClass="btn btn-dark btn-block"
Text="Locação" OnClick="btnLocacao_Click" />
</div>
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
<div class="col-md-3">
<asp:Button ID="btnGeral" runat="server" CssClass="btn btn-info btn-block" Text="Geral"
OnClick="btnGeral_Click" />
</div>
<br />
<br />
<div class="col-md-12">

<asp:Panel ID="pnlPerfil" runat="server" Visible="true">


<h4>Relatório: Perfil</h4>
<asp:GridView ID="gridPerfil" runat="server" AutoGenerateColumns="False"
CssClass="table table-hover table-responsive">
<Columns>
<asp:BoundField DataField="per_codigo" HeaderText="Código do Perfil" />
<asp:BoundField DataField="per_descricao" HeaderText="Descrição do Perfil" />
</Columns>
</asp:GridView>
<asp:Literal ID="ltlPerfil" runat="server"></asp:Literal>
</asp:Panel>

</div>

<div class="col-md-12 ">


<asp:Panel ID="pnlUsuario" runat="server" Visible="false">
<h4>Relatório: Usuário</h4>
<div class="table-responsive">
<asp:GridView ID="gridUsuario" runat="server" AutoGenerateColumns="true"
CssClass="table table-hover">
<Columns>
<asp:BoundField DataField="usu_nome" HeaderText="Nome" />
<asp:BoundField DataField="usu_rg" HeaderText="RG" />
<asp:BoundField DataField="usu_cpf" HeaderText="CPF" />
<asp:BoundField DataField="usu_email" HeaderText="E-mail" />
</Columns>
</asp:GridView>
</div>
<asp:Literal ID="ltlUsuario" runat="server"></asp:Literal>
</asp:Panel>
</div>

<div class="col-md-12">
<asp:Panel ID="pnlLocacao" runat="server" Visible="false">
<h4>Relatório: Locação</h4>
<div class="table-responsive">
<asp:GridView ID="gridLocacao" runat="server" CssClass="table table-hover table-
responsive" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="loc_descricaoimovel" HeaderText="Descrição" />
<asp:BoundField DataField="loc_rua" HeaderText="Rua" />
<asp:BoundField DataField="loc_numero" HeaderText="Nº" />
<asp:BoundField DataField="loc_bairro" HeaderText="Bairro" />
</Columns>
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
</asp:GridView>
</div>
<asp:Literal ID="ltlLocacao" runat="server"></asp:Literal>
</asp:Panel>
</div>

<div class="col-md-12">
<asp:Panel ID="pnlGeral" runat="server" Visible="false">
<h4>Relatório: Geral</h4>
<asp:GridView ID="gridGeral" runat="server" AutoGenerateColumns="false"
CssClass="table table-hover table-responsive">
<Columns>
<asp:BoundField DataField="per_descricao" HeaderText="Perfil" />
<asp:BoundField DataField="usu_nome" HeaderText="Nome" />
<asp:BoundField DataField="usu_cpf" HeaderText="CPF" />
<asp:BoundField DataField="loc_datalocacao" HeaderText="Data" />
<asp:BoundField DataField="loc_valorlocacao" HeaderText="Valor" />
</Columns>
</asp:GridView>
<asp:Literal ID="ltlGeral" runat="server"></asp:Literal>
</asp:Panel>
</div>

</div>
</div>
</asp:Content>

Código ASPX

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

public partial class pg_Grids : System.Web.UI.Page


{
protected void Page_Load(object sender, EventArgs e)
{
//if (!IsPostBack)
//{
CarregarGridPerfil();
CarregarGridUsuario();
CarregarGridLocacao();
CarregarGridGeral();
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
//}
}

public void CarregarGridPerfil()


{
DataSet ds = PerfilDB.SelectAll();
int qtd = ds.Tables[0].Rows.Count;

if (qtd > 0)
{
gridPerfil.DataSource = ds.Tables[0].DefaultView;
gridPerfil.DataBind();
gridPerfil.Visible = true;
ltlPerfil.Text = "Foram encontrado(s) " + qtd + "de Registros...";
}
else
{
gridPerfil.Visible = false;
ltlPerfil.Text = "Não foram encontrado Registros...";
}
}

public void CarregarGridGeral()


{
DataSet ds = GeralDB.SelectAll();
int qtd = ds.Tables[0].Rows.Count;

if (qtd > 0)
{
gridGeral.DataSource = ds.Tables[0].DefaultView;
gridGeral.DataBind();
gridGeral.Visible = true;
ltlGeral.Text = "Foram encontrado(s) " + qtd + "de Registros...";
}
else
{
gridGeral.Visible = false;
ltlGeral.Text = "Não foram encontrado Registros...";
}
}

public void CarregarGridLocacao()


{
DataSet ds = LocacaoDB.SelectAll();
int qtd = ds.Tables[0].Rows.Count;

if (qtd > 0)
{
gridLocacao.DataSource = ds.Tables[0].DefaultView;
gridLocacao.DataBind();
gridLocacao.Visible = true;
ltlLocacao.Text = "Foram encontrado(s) " + qtd + "de Registros...";
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
}
else
{
gridLocacao.Visible = false;
ltlLocacao.Text = "Não foram encontrado Registros...";
}
}

public void CarregarGridUsuario()


{
DataSet ds = UsuarioDB.SelectAll();
int qtd = ds.Tables[0].Rows.Count;

if (qtd > 0)
{
gridUsuario.DataSource = ds.Tables[0].DefaultView;
gridUsuario.DataBind();
gridUsuario.Visible = true;
ltlUsuario.Text = "Foram encontrado(s) " + qtd + "de Registros...";
}
else
{
gridUsuario.Visible = false;
ltlUsuario.Text = "Não foram encontrado Registros...";
}
}

protected void btnPerfil_Click(object sender, EventArgs e)


{
pnlPerfil.Visible = true;
pnlUsuario.Visible = false;
pnlLocacao.Visible = false;
pnlGeral.Visible = false;
}

protected void btnUsuario_Click(object sender, EventArgs e)


{
pnlPerfil.Visible = false;
pnlUsuario.Visible = true;
pnlLocacao.Visible = false;
pnlGeral.Visible = false;
}

protected void btnLocacao_Click(object sender, EventArgs e)


{
pnlPerfil.Visible = false;
pnlUsuario.Visible = false;
pnlLocacao.Visible = true;
pnlGeral.Visible = false;
}
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
protected void btnGeral_Click(object sender, EventArgs e)
{
pnlPerfil.Visible = false;
pnlUsuario.Visible = false;
pnlLocacao.Visible = false;
pnlGeral.Visible = true;
}
}
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Redirecionamento
Response.Redirect("TipoEmpresa.aspx");

Links que perdem a referência


No .NET é comum um link (como o exemplo abaixo) perder a referência.

Código
<a href="pg/ModaloExemplo01.aspx" class="btn-danger btn">ModaloExemplo01.aspx</a>
<a href="pg/ModaloExemplo02.aspx" class="btn-success btn">ModaloExemplo02.aspx</a>
<a href="pg/ModaloExemplo03.aspx" class="btn-inverse btn">ModaloExemplo03.aspx</a>

Para evitar este problema utilizamos o seguinte Script.


<a href='<%=ResolveUrl("pg/ModaloExemplo01.aspx") %>' class="btn-danger
btn">ModaloExemplo01.aspx</a>

<a href='<%=ResolveUrl("pg/ModaloExemplo02.aspx") %>' class="btn-success btn">ModaloExemplo02.aspx</a>

<a href='<%=ResolveUrl("pg/ModaloExemplo03.aspx") %>' class="btn-inverse btn">ModaloExemplo03.aspx</a>

O mesmo pode acontecer com os links com Script, para evita este problema podemos utilizar o
ResolveURL conforme modelo abaixo.

<script src='<%= ResolveUrl("bootstrap/js/jquery-1.12.3.min.js")%>'></script>


<script src='<%= ResolveUrl("bootstrap/js/bootstrap.min.js")%>'></script>
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
Avaliação de Script – Peso 06

Esta avaliação pode ser feita individualmente ou em dupla.

Você deverá analizar o estudo de caso a seguir. Modelar e criar a base de dados (esta
modelagem será utilizada pelo professor Cristóvão em sua disciplina e qualquer dúvida
referente ao tema deve ser tratado com o mesmo).

Após a modelagem você deverá criar uma aplicação utilizando WebForms, a lingagemde
programação C# e bootstrap.

Será combinado uma data para a entregra e avaliação do que foi solicitado no estudo de
caso.

Uma cópia impressa do MER deve ser entregue na data combinada (MER idênticos de
equipes diferentes ocasionará a anulação da avaliação).

Nesta mesma data será solicitado uma alteração no sistema e a equipe deverá executá-
la.

Data de entrega: 21/06/2019

Estudo de caso:

Prezado Senhor, você como desenvolvedor de sistemas e formado pela FATEC


Guaratinguetá foi indicado para desenvolver um sistema para uma acadêmica (fictícia)
chamada Academia CrisFit.

Você deverá modelar e criar o banco (a modelagem será uma atividade avaliativa da
disciplina de Banco de Dados).

Após modelar e criar o Banco vojcê deverá criar o sistema (este sistema será utilizado na
avaliação de Script).

Após uma conversa com o proprietário da academia CrisFit levantou-se os seguintes


requisitos do sistema:

 O sistema deve trabalhar com mensalidade (sempre dinheiro).


 O sistema deve proporcionar a escolha de modalidades/serviços (musculação,
spinin, lutas, danças, etc…)
 O sistema deve cadastrar o aluno (cliente)
 O sistema deve cadastrar o funcionários ( instrutores, atendentes,
administradores )
 O sistema tem pacotes de serviços
o ex: musculação + luta / musculação + dança / etc.
 O sistema deve proporcionar o desconto para pagamentos de pacotes (10%)
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
 O sistema deve calcular multa para pagamentos após o vencimento (10%)
 O sistema deve proporcionar o controle de caixa (entradas e saídas, com
autenticação de e para quem)
 Saída de dinheiro somente quem for Administrador
 Controle de login no sistema

Relatórios
 Quanto entrou de dinheiro (dia, semana, mês, periodo)
 Mensalidades ( em aberto, recebidas, no período )
 Serviços contratado ( quantidade de contratos ativos no período )
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
Sessão
A sessão permite armazenar qualquer tipo de dado na memória do servidor.

A informação é protegida porque nunca é exibida para o usuário, além de pertencer


exclusivamente a uma sessão específica.

A sessão é ideal para o armazenamento de informações, como os itens de um carrinho de


compras, enquanto o usuário navega entre as páginas.

Criar Sessão:
Session["nome"] = "Dionisio";

Persistindi a Sessão:
lblSessao.Text =Convert.ToString(Session["nome"]);

Remover Sessão:
Session.Remove("nome");

Exemplo:
Neste exemplo Criaremos quatro páginas simples.
Na primeira página a SESSÃO será criada automaticamente.
Nas demais páginas a SESSÃO será persistida.
Na última página teremos um botão com a finalidade de ENCERRAR A SESSÃO.

Visão do Browser

HOME

<a href="Default.aspx">Home</a>
<a href="pag1.aspx">pg1</a> protected void Page_Load(object sender, EventArgs e) {
<a href="pag2.aspx">pg2</a>
<a href="pag3.aspx">pg3</a> Session["nome"] = "Dionisio";
<br /> // lblSessao.Text ="Bem Vindo: "+ Session["nome"];
<br /> lblSessao.Text =Convert.ToString(Session["nome"]);
<h1>HOME</h1>
}
<asp:Label ID="lblSessao" runat="server" Text="---
"></asp:Label>

PÁGINA 01
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

<a href="Default.aspx">Home</a> protected void Page_Load(object sender, EventArgs e) {


<a href="pag1.aspx">pg1</a> if (Session["nome"] == null || Session["nome"] == "")
<a href="pag2.aspx">pg2</a> {
<a href="pag3.aspx">pg3</a>
<br /> lblSessao.Text = "Sessão não encontrada –
<br /> Direcionar para uma página de erro";
<h1>PÁGINA 01</h1>
} else {
<asp:Label ID="lblSessao" runat="server" Text="--- lblSessao.Text =
"></asp:Label> Convert.ToString(Session["nome"]);
}
}

PÁGINA 02

<a href="Default.aspx">Home</a> protected void Page_Load(object sender, EventArgs e) {


<a href="pag1.aspx">pg1</a> if (Session["nome"] == null || Session["nome"] == "")
<a href="pag2.aspx">pg2</a> {
<a href="pag3.aspx">pg3</a>
<br /> lblSessao.Text = "Sessão não encontrada –
<br /> Direcionar para uma página de erro";
<h1>PÁGINA 02</h1>
}else{
<asp:Label ID="lblSessao" runat="server" Text="---
"></asp:Label> lblSessao.Text =
Convert.ToString(Session["nome"]);
}
}

PÁGINA 03

<a href="Default.aspx">Home</a> protected void Page_Load(object sender, EventArgs e) {


<a href="pag1.aspx">pg1</a> if (Session["nome"] == null || Session["nome"] == "")
<a href="pag2.aspx">pg2</a> {
<a href="pag3.aspx">pg3</a>
<br /> lblSessao.Text = "Sessão não encontrada –
<br /> Direcionar para uma página de erro";
<h1>PÁGINA 03</h1>
} else {
<asp:Label ID="lblSessao" runat="server" Text="---
"></asp:Label><br /><br /> lblSessao.Text =
Convert.ToString(Session["nome"]);
<asp:Button ID="btn" runat="server" Text="Remover }
Sessão" OnClick="btn_Click" /> }

protected void btn_Click(object sender, EventArgs e) {


Session.Remove("nome");
lblSessao.Text = "Sessão não encontrada –
Direcionar para uma página de erro";
}

Sessão – Banco de Dados //////////////

Exemplo:
Neste exemplo Criaremos quatro páginas simples.
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
Página de Login, Página de Erro, Pág1 (que só poderá ser acessada pelo perfil 1) e Pág2 (que só poderá ser
acessada pelo perfil 2).
Persistência UsuárioDB.
Na última página teremos um botão com a finalidade de ENCERRAR A SESSÃO.

Visão do Browser.

Banco

Persistência

public static DataSet SelectLOGIN(string email, string senha) {


DataSet ds = new DataSet();
IDbConnection objConexao;
IDbCommand objCommand;

IDataAdapter objDataAdapter;
string sql = "select * from usu_usuario where usu_email = ?usu_email and usu_senha = ?usu_senha";

objConexao = Mapped.Connection();
objCommand = Mapped.Command(sql, objConexao);

objCommand.Parameters.Add(Mapped.Parameter("?usu_email", email));
objCommand.Parameters.Add(Mapped.Parameter("?usu_senha", senha));

objDataAdapter = Mapped.Adapter(objCommand);
objDataAdapter.Fill(ds);

objConexao.Close();
objConexao.Dispose();
objCommand.Dispose();

return ds;
}

Código ASPX – Login


<h1>Login</h1>

E-mail:<br />
<asp:TextBox ID="txtEmail" runat="server" type="email"></asp:TextBox>

Senha:<br />
<asp:TextBox ID="txtSenha" runat="server" type="password"></asp:TextBox>

<asp:Button ID="btn" runat="server" Text="Login" OnClick="btn_Click"/>


Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Código ASPX.CS – Login


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

public partial class pg_sessao02_Login : System.Web.UI.Page {


protected void Page_Load(object sender, EventArgs e) { }

protected void btn_Click(object sender, EventArgs e) {

DataSet ds = UsuarioDB. LOGIN(txtEmail.Text, txtSenha.Text);

if (ds.Tables[0].Rows.Count == 1) {

Session["nome"] = ds.Tables[0].Rows[0]["usu_nome"].ToString();
Session["perfil"] = ds.Tables[0].Rows[0]["per_codigo"].ToString();

int perfil = Convert.ToInt32(Session["perfil"]);

if (perfil == 1) {
Response.Redirect("Pag1.aspx");
}

if (perfil == 2) {
Response.Redirect("Pag2.aspx");
}
} else {
Response.Redirect("Erro.aspx");
}

}
}

Código APSX – Página 1

<h1>Perfil 1</h1>
<asp:Label ID="lblSessao" runat="server" Text="---"></asp:Label>
<asp:Button ID="btnSair" runat="server" Text="Sair" OnClick="btnSair_Click" />

Código APSX.CS – Página 1


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class pg_sessao02_Pag1 : System.Web.UI.Page {


protected void Page_Load(object sender, EventArgs e) {

if ( Session["nome"] == null || Session["perfil"] == null) {


Response.Redirect("Erro.aspx");
} else {
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
int perfil = Convert.ToInt32(Session["perfil"]);

if (perfil == 1) {
lblSessao.Text = Session["nome"].ToString();
} else {
Response.Redirect("Erro.aspx");
}
}
}

protected void btnSair_Click(object sender, EventArgs e) {


Session.Remove("nome");
Session.Remove("perfil");
Response.Redirect("Login.aspx");
}
}

Código APSX – Página 2

<h1>Perfil 2</h1>
<asp:Label ID="lblSessao" runat="server" Text="---"></asp:Label>
<asp:Button ID="btnSair" runat="server" Text="Sair" OnClick="btnSair_Click" />

Código APSX.CS – Página 2


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class pg_sessao02_Pag2 : System.Web.UI.Page{

protected void Page_Load(object sender, EventArgs e) {


if (Session["nome"] == null || Session["perfil"] == null) {
Response.Redirect("Erro.aspx");
} else {
int perfil = Convert.ToInt32(Session["perfil"]);

if (perfil == 2) {
lblSessao.Text = Session["nome"].ToString();
} else {
Response.Redirect("Erro.aspx");
}
}
}

protected void btnSair_Click(object sender, EventArgs e) {


Session.Remove("nome");
Session.Remove("perfil");
Response.Redirect("Login.aspx");
}
}

Código APSX – Página Erro

<h1>Erro</h1>
<a href="Login.aspx">Voltar para a HOME</a>
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Código APSX.CS– Página Erro

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class pg_sessao02_Erro : System.Web.UI.Page


{
protected void Page_Load(object sender, EventArgs e)
{

}
}
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Carregando vários elementos em uma div de maneira dinâmica

O Label receberá as informações do Banco.


Primeiro devemos trabalhar a persistência para trazer as informações desejadas do banco.
Este dados devem ser armazenados em um DataSet (igual ao SELECTALL).
Em nosso exemplo iremos carregar todos os tipos de empresa em um Label.

Código ASPX
<asp:Label ID="lbl" runat="server"></asp:Label>

Code be Hidden

protected void Page_Load(object sender, EventArgs e){


CarregarLabel();
}

private void CarregarLabel(){


// Carregando todos os elementos da base de dados
// em um DataSet

DataSet ds = AcademiaDB.SelectAll();

// DataRow são linhas de dados


// Usaremos o DataRow para percorre as linhas de nossa base de dados
lblTipoEmpresa.Text = "";
foreach (DataRow dr in ds.Tables[0].Rows){

lbl.Text += "<div class='alert-danger alert' style='width:15%;'> Identificação: " +


dr["tip_id"];
lbl.Text += "<br /> Descrição: "+dr["tip_descricao"]+"</div>";

}
}
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
Método Insert da Tabela Endereço

Deve-se observar que na tabela Endereço temos uma chave estrangeira, esta é a única
diferença que encontramos em relação aos outros métodos da persistência.
Observação: Demos ter registro na tabela pessoa para que o insert funcione.

// INSERT
public static int Insert(Endereco end) {
int retorno = 0;

try {
IDbConnection objConexao; // Abre a conexao
IDbCommand objCommand; // Cria o comando

string sql = "INSERT INTO endereco (end_rua, end_numero, end_bairro, end_cidade,


end_estado, end_cep, pes_codigo) VALUES(?end_rua, ?end_numero, ?end_bairro,
?end_cidade, ?end_estado, ?end_cep, ?pes_codigo)";

objConexao = Mapped.Connection();
objCommand = Mapped.Command(sql, objConexao);

objCommand.Parameters.Add(Mapped.Parameter("?end_rua", end.End_rua));
objCommand.Parameters.Add(Mapped.Parameter("?end_numero", end.End_numero));
objCommand.Parameters.Add(Mapped.Parameter("?end_bairro", end.End_bairro));
objCommand.Parameters.Add(Mapped.Parameter("?end_cidade", end.End_cidade));
objCommand.Parameters.Add(Mapped.Parameter("?end_estado", end.End_estado));
objCommand.Parameters.Add(Mapped.Parameter("?end_cep", end.End_cep));

//FK
objCommand.Parameters.Add(Mapped.Parameter("?pes_codigo",
end.Pes_codigo.Pes_codigo));

objCommand.ExecuteNonQuery();

objConexao.Close();
objCommand.Dispose();
objConexao.Dispose();
}
catch (Exception e)
{
retorno = -2;
}
return retorno;
}
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script

Método Delete

Observe que o método é idêntico ao Insert, mudando somente a variável ‘SQL’.

// Delete
public static int Delete(int id) {

int retorno = 0;

try {
IDbConnection objConexao;
IDbCommand objComando;

//SINTAXE: "DELETE FROM nomeDaTabela WHERE nomeDaColunaID =


?parametrização";
string sql = "delete from endereco where end_codigo = ?id";

objConexao = Mapped.Connection();
objComando = Mapped.Command(sql, objConexao);

objComando.Parameters.Add(Mapped.Parameter("?id", id));

objComando.ExecuteNonQuery();

objConexao.Close();
objComando.Dispose();
objConexao.Dispose();

} catch (Exception e) {

retorno = -2;

return retorno;
}
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
Método Update

Observe que o método é idêntico ao Insert, mudando somente a variável ‘SQL’.

public static int Update(Endereco end) {

int retorno = 0;

try {

IDbConnection objConexao; // Abre a conexao


IDbCommand objCommand; // Cria o comando

string sql = "UPDATE endereco SET ";


sql += "end_rua = ?end_rua, ";
sql += "end_numero = ?end_numero, ";
sql += "end_bairro = ?end_bairro, ";
sql += "end_cidade = ?end_cidade, ";
sql += "end_estado = ?end_estado, ";
sql += "end_cep = ?end_cep, ";
sql += "pes_codigo = ?pes_codigo ";
sql += "where end_codigo = ?end_codigo";

objConexao = Mapped.Connection();
objCommand = Mapped.Command(sql, objConexao);

objCommand.Parameters.Add(Mapped.Parameter("?end_rua", end.End_rua));
objCommand.Parameters.Add(Mapped.Parameter("?end_numero", end.End_numero));
objCommand.Parameters.Add(Mapped.Parameter("?end_bairro", end.End_bairro));
objCommand.Parameters.Add(Mapped.Parameter("?end_cidade", end.End_cidade));
objCommand.Parameters.Add(Mapped.Parameter("?end_estado", end.End_estado));
objCommand.Parameters.Add(Mapped.Parameter("?end_cep", end.End_cep));
objCommand.Parameters.Add(Mapped.Parameter("?end_codigo", end.End_codigo));

//FK
objCommand.Parameters.Add(Mapped.Parameter("?pes_codigo",
end.Pes_codigo.Pes_codigo));

objCommand.ExecuteNonQuery();
objConexao.Close();
objCommand.Dispose();
objConexao.Dispose();

} catch (Exception e) {
retorno = -2;
}
return retorno;
}
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
Código ASPX.CS - Exemplo

// Evendo que vair carregar os formulários


protected void ddlTipoEmpresa_SelectedIndexChanged(object sender, EventArgs e){

DataSet ds =TesteDB.SelectAId(Convert.ToInt32(ddlTipoEmpresa.SelectedValue));

if (ds.Tables[0].Rows.Count == 0){
lbl.Text = "<script>alert('Elemento não encontrado');</script>";
}else{
txtID.Text = ds.Tables[0].Rows[0]["tip_id"].ToString();
txtDescicao.Text = ds.Tables[0].Rows[0]["tip_descricao"].ToString();
}
}

// Evendo que vair carregar a ddl


private void CarregarDDL(){
DataSet ds = TipoEmpresaDB.SelectAll();
ddlTipoEmpresa.DataSource = ds;
ddlTipoEmpresa.DataTextField = "tip_descricao";
ddlTipoEmpresa.DataValueField = "tip_id";
ddlTipoEmpresa.DataBind();
//-------------------------
ddlTipoEmpresa.Items.Insert(0, "Selecione um item");

// Page_load
protected void Page_Load(object sender, EventArgs e){
if (!IsPostBack){
CarregarDDL();
}
}

// Evento que faz o update


protected void btnAltera_Click(object sender, EventArgs e){
TipoEmpresa tipo = new TipoEmpresa();
tipo.Tip_id = Convert.ToInt32(txtID.Text);
tipo.Tip_descricao = txtDescicao.Text;

switch(TesteDB.Update(tipo)){
case 0:
lbl.Text = "<div class='alert-success alert'> >>> OK <<< </div>";
break;
case -2:
lbl.Text = "<div class='alert-danger alert'> >>> ERRO <<< </div>";
break;
}
txtDescicao.Text = "";
txtID.Text = "";
CarregarDDL();
}
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
Método Select com um ID específico

Observe que o método é idêntico ao Insert, mudando somente a variável ‘SQL’.

public static DataSet SelectAId (int id) {

DataSet ds = new DataSet();


IDbConnection objConnection;
IDbCommand objCommand;

IDataAdapter objDataAdapter;
objConnection = Mapped.Connection();

string sql = "select * from endereco where end_codigo = ?id;";


objCommand = Mapped.Command(sql, objConnection);

objCommand.Parameters.Add(Mapped.Parameter("?id", id)); // única diferença do select


comum

objDataAdapter = Mapped.Adapter(objCommand);

objDataAdapter.Fill(ds);
objConnection.Close();
objCommand.Dispose();
objConnection.Dispose();

return ds;

Criptografia Básica

Visão do Browser

Código ASPX
Senha:
<asp:TextBox ID="txtPassword" runat="server"></asp:TextBox>
<br />
<br />
<asp:Label ID="lblSenha" runat="server" Text="---"></asp:Label>
<br />
Análise e Desenvolvimento de Sistemas
4º Semestre
Disciplina - Script
<br />
<asp:Button ID="btnSenha" runat="server" Text="Gerar Senha" OnClick="btnSenha_Click"/>

Código ASPX.CS
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

//-----------------------------
using System.Text;
using System.IO;
using System.Security.Cryptography;

public partial class pg_Criptografia : System.Web.UI.Page


{
protected void Page_Load(object sender, EventArgs e) { }

protected void btnSenha_Click(object sender, EventArgs e) {


UnicodeEncoding UE = new UnicodeEncoding();
byte [] HashValue, MessageBytes = UE.GetBytes(txtPassword.Text);
SHA512Managed SHhash = new SHA512Managed();
string strHex = "";

HashValue = SHhash.ComputeHash(MessageBytes);
foreach (byte b in HashValue) {
strHex += String.Format("{0:x2}", b);
}
lblSenha.Text = strHex;
}

Das könnte Ihnen auch gefallen