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



Documentos relacionados
C# - Conexão com MySQL

Programação para Internet Avançada. 4. Web Services. Nuno Miguel Gil Fonseca

Acesso a Dados: com Wizard (sem escrever código), e Programaticamente

DESENVOLVIMENTO DE SOFTWARE PARA INTERNET LABORATÓRIO 1 PROF. EMILIO PARMEGIANI

Criação de uma DAL com Typed DataSets

Acesso a Dados com Wizard (sem escrever código) e Programaticamente

O objetivo da aula é realizar upload de arquivos com aplicação web. Será realizado o upload de duas formas:

LAB12: Componentes ASP.NET

using System; using System.Collections.Generic; using System.Text; namespace Estudo { public class PessoaJuridica : Pessoa { private string cnpj;

NOTA: Neste tutorial foi utilizado o Visual Studio 2010 para criar o Projeto Web no qual iremos aplicar os temas e os skins.

Programação em ASP S. P net

Programação em ASP.net

Construindo Aplicações com ASP.NET MVC 2.0 Aula 03 Luiz Alberto Ferreira Gomes. Ciência da Computação da PUC Minas

Criando um carrinho de compras

Repeater no GASweb. Regiões

Tutorial de Aplicação Simples usando Web Forms e MySQL. Luiz Eduardo Guarino de Vasconcelos

Walkthrough: Creating a Web Site with Membership and User Login.

Consulta de endereço através do Cep

Web User Control. No projeto, adicione as pastas Content e Header, conforme a figura

Trabalhando com XML RENATO CORREIA DE MATOS

DESENVOLVIMENTO DE SOFTWARE PARA INTERNET. quarta-feira, 12 de setembro de 12

A interface IDataSource retorna dados em formato tabular e disponibiliza apenas dois métodos: GetView e GetViewNames. O primeiro,

Não estudaremos detalhadamente todos os Server Controls.

Validando dados de páginas WEB

Acesso a Dados ADO.NET

Padrões de Projeto e Persistência com DAO

3. Desenvolvimento de Aplicações Web com ASP.net

Drive MySql de conexão para Eclipse

Leonardo Gresta Paulino Murta

Exibindo imagens em um controle DataGrid

Programação para Android. Aula 08: Persistência de dados SQL

! "! # $ " % & ' ( # ( ) Página: 1

JDBC. Prof. Márcio Bueno

Código do Sistema Ponto de Vendas

22/05/2012 CRIANDO UM PROJETO COM TELAS ESTRUTURA DA APLICAÇÃO LOGIN BANCO DE DADOS TAREFAS PHP MYSQL PARTE 2

Login. Criar um novo website File > New > WebSite Framework 4.5 Visual C# ASP.NET Empty Web Site Nome do projeto: WebLogin

Basicamente iremos precisar de uma base de dados na qual iremos armazenar os registros feitos pelos vistantes: Vamos armazenar os seguintes dados:

ASP.NET. Michael Schuenck dos Santos

Persistência de Classes em Tabelas de Banco de Dados

Programação em Rede JDBC

Java & Bancos de Dados Adaptado de Slides da Universidade Salgado de Oliveira Goiânia

Programação Orientada a Objetos JDBC Java Database Connectivity

Exercícios de fixação: Listas

Linguagens de Programação

Mapeamento Lógico/Relacional com JPA

Nota de Aplicação. Escrita em Banco de Dados SQL com o Vijeo Citect 1.0. Suporte Técnico Brasil. Versão:

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc.

JAVA COM BANCO DE DADOS PROFESSORA DANIELA PIRES

Introdução ao ASP.NET

Tarefa Orientada 5 Aplic. Manutenção de Facturas de Clientes

Nota de Aplicação. Relatório em HTML no Vijeo Citect 1.0. Suporte Técnico Brasil. Versão:

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc.

Histórico de Revisões

Integrando Java com Banco de Dados

Capítulo 4. Programação em ASP

Faculdades Network Bacharelado em Sistemas de Informação Tópicos Avançados. Aulas 25 e 26 Exemplo de Aplicação usando JSP e MySQL

Figura 1. Figura 2. Prova Escrita de Base de Dados 5 Novembro V2 Número do Aluno: Nome do Aluno: 1º Teste (90 Minutos)

Programação Orientada a Objetos II

Validação de formulário : CEP, e CPF

Fernando Freitas Costa. Pós-Graduando em Gestão e Docência Universitária. blog.fimes.edu.br/fernando nando@fimes.edu.br

Aula 06 Usando controles em ASP.NET

Front-End Uso da Linguagem Turbo Delphi para Acesso ao Banco de Dados Mysql

Passo a passo: Usando o Microsoft Azure para estudantes

Guia e Utilização do Visual Studio 6.0

Gerador de código JSP baseado em projeto de banco de dados MySQL

Criar uma aplicação JPA2 com EclipseLink e H2

Connection String usada por uma Class Library

Exibir relatórios gerados pelo Jasper Report em Flex

ASP.Net com MySQL Connector/Net 6.2.5

Formulário de Contato

Documentação do retorno XML referente projeto Busca Endereço por CEP

Iniciar o Data Adapter Configuration Wizard. Toolbox Data Duplo clique em OleDbDataAdapter. Botão next na caixa de diálogo

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Exercício em ASP.NET (Agenda)

Programação para Android. Aula 06: Activity, menus e action bar

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

P S I 2. º A N O F 5 M E S T R E / D E T A L H E E P E S Q U I S A. Criar uma relação mestre-detalhe. Pesquisa de informação

Manipulação de Banco de Dados com Java 1. Objetivos

PHP e MySQL Autenticação de Usuários

SISTEMA EXPERIMENTALL 15/11/2009. Olá! A partir de agora vamos conhecer a IDE NetBeans efetuando um micro projeto swing.

Uma vez no form, dê um clique duplo sobre o objeto e insira a tela conforme abaixo. Não esqueça do & e das teclas de atalho.

Integração TOTVS Microsiga Protheus e Fluig ECM

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

DSS 08/09. Camada de Dados - JDBC. Aula 1. António Nestor Ribeiro /António Ramires Fernandes/ José Creissac Campos {anr,arf,jfc}@di.uminho.

Aplicação Hibernate1 no NetBeans

Transcrição:

Base de Dados Sales.mdb Tabelas: Customers (CustomerID, Name, Address, PhoneNb, FaxNb, EMail) Products (ProductID, Description, UnitPrice, StockQtd) Sales (SaleID, CustomerID, DateOfSale) SaleDetails (SaleID, Quantity, productid, TotalCost) Users (UserID, User, Pass) ------------------------------------------------------------------------------- Criação da página Inserir.aspx Layout > Insert Table > Colmns = 5; Rows = 2 > OK. Source code: <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Inserir.aspx.cs" Inherits="Inserir" Title="Untitled Page" %> <asp:content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

<table> <asp:label ID="Label1" runat="server" Text="Nome:"></asp:Label></td> <asp:textbox ID="TextBox1" runat="server"></asp:textbox></td> <asp:label ID="Label2" runat="server" Text="Morada:"></asp:Label></td> <asp:textbox ID="TextBox2" runat="server"></asp:textbox></td> <asp:label ID="Label3" runat="server" Text="Telefone:"></asp:Label></td> <asp:textbox ID="TextBox3" runat="server"></asp:textbox></td> <asp:label ID="Label4" runat="server" Text="Fax:"></asp:Label></td> <asp:textbox ID="TextBox4" runat="server"></asp:textbox></td> <asp:label ID="Label5" runat="server" Text="E-mail:"></asp:Label></td> <asp:textbox ID="TextBox5" runat="server"></asp:textbox></td> </table> <br /> <asp:label ID="Label6" runat="server" Text="Registo Inserido" Visible="False"></asp:Label> <br /><br /> <asp:button ID="Button1" runat="server" OnClick="Button1_Click" Text="Inserir" /><br /> </asp:content> Inserir.aspx.cs public partial class Inserir : System.Web.UI.Page protected void Page_Load(object sender, EventArgs e) ConnectionStringSettingsCollection connectionstrings = ConfigurationManager.ConnectionStrings;

ShopClassLibrary.DBPath.DB = connectionstrings["salesconnectionstring"].tostring(); Label6.Visible = false; protected void Button1_Click(object sender, EventArgs e) // Código sem validação dos campos try ShopClassLibrary.ShopStatusEnum status; string user = "admin"; string pass = "admin"; string nome = TextBox1.Text; string endereco = TextBox2.Text; string telefone = TextBox3.Text; string fax = TextBox4.Text; string email = TextBox5.Text; ShopClassLibrary.ICustomer cliente = ShopClassLibrary.Factory.CreateCustomerService(); long id = cliente.add(user, pass, nome, endereco, telefone, fax, email, out status); TextBox1.Text = ""; TextBox2.Text = ""; TextBox3.Text = ""; TextBox4.Text = ""; TextBox5.Text = ""; Label6.Visible = true; catch (SystemException) Ficheiro Customer.cs public interface ICustomer: long Add(string user, string pass, string name, string address, string phone, string fax, string email, out ShopStatusEnum status); internal class Customer : ICustomer public long Add(string user, string pass, string name, string address, string phone, string fax, string email, out ShopStatusEnum status) long customerid = -1; OleDbConnection conn = null; // validar dados de entrada if (name == null name.trim().length == 0) status = ShopStatusEnum.INVALID_ARGUMENT; return -1; try

conn = new OleDbConnection(UtilDB.CONN); conn.open(); // validar o utilizador status = UtilDB.ValidateUser(conn, null, user, pass); if (status!= ShopStatusEnum.OK) return -1; // criar comando SQL a executar string sqlcmd = "INSERT INTO Customers (Name, Address, PhoneNb, FaxNb, EMail) Values (?,?,?,?,?)"; OleDbCommand cmd = new OleDbCommand(sqlCmd, conn); cmd.parameters.addwithvalue("name", name); if (address.length == 0) cmd.parameters.addwithvalue("address", DBNull.Value); else cmd.parameters.addwithvalue("address", address); if (phone.length == 0) cmd.parameters.addwithvalue("phone", DBNull.Value); else cmd.parameters.addwithvalue("phone", phone); if (fax.length == 0) cmd.parameters.addwithvalue("fax", DBNull.Value); else cmd.parameters.addwithvalue("fax", fax); if (email.length == 0) cmd.parameters.addwithvalue("email", DBNull.Value); else cmd.parameters.addwithvalue("email", email); // executar o comando int linhasinseridas = cmd.executenonquery(); // verificar o resultado if (linhasinseridas == 0) status = ShopStatusEnum.NOT_OK; // nao inseriu else // inseriu registo // obter codigo do novo id gerado pela base de dados OleDbCommand idcmd = new OleDbCommand("SELECT @@IDENTITY", conn); customerid = (int)idcmd.executescalar(); status = ShopStatusEnum.OK; catch (OleDbException) status = ShopStatusEnum.ERROR; finally // fechar a conexão if (conn!= null && conn.state == ConnectionState.Open) conn.close(); return customerid; ------------------------------------------------------------------------------- Criação da página Vender.aspx

Source code: <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Vender.aspx.cs" Inherits="Vender" Title="Untitled Page" %> <asp:content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> <span style="font-size: 16pt"><strong>Venda<br /> <br /> </strong></span> <table style="font-weight: bold; font-size: 16pt"> <asp:label ID="Label1" runat="server" Font-Bold="True" Font-Size="Large" Text="Cliente"></asp:Label> </td> <td style="font-size: 12pt; width: 100px"> <asp:dropdownlist ID="DropDownList1" runat="server"> </asp:dropdownlist> </td> </table> <br /> <table> <td style="width: 100px; text-align: right"> Produto:</td> <td style="width: 60px"> <asp:dropdownlist ID="DropDownList2" runat="server"> </asp:dropdownlist></td> </td>

<td style="width: 100px; text-align: right"> Quantidade:</td> <td style="width: 60px"> <asp:textbox ID="TextBox1" runat="server"></asp:textbox> </td> <asp:button ID="Button1" runat="server" OnClick="Button1_Click" Text="Acresecentar" /> </td> </table> <br /> <strong><span style="font-size: 14pt"> <asp:label ID="Label2" runat="server" Text="Produtos Vendidos"></asp:Label></span> <br /><br /> </strong> <asp:gridview ID="GridView1" runat="server"> </asp:gridview> <br /> <asp:button ID="Button2" runat="server" Text="Fechar Factura" /><br /> </asp:content> Vender.aspx.cs public partial class Vender : System.Web.UI.Page protected void Page_Load(object sender, EventArgs e) ConnectionStringSettingsCollection connectionstrings = ConfigurationManager.ConnectionStrings; ShopClassLibrary.DBPath.DB = connectionstrings["salesconnectionstring"].tostring(); if (!Page.IsPostBack) Label2.Visible = false; GridView1.Visible = false; Button2.Visible = false; // carregar a tabela de clientes para a DropDownList1 ShopClassLibrary.ICustomer customer = ShopClassLibrary.Factory.CreateCustomerService(); DataSet dsclientes = customer.getall("admin", "admin"); DropDownList1.DataTextField = "Name"; DropDownList1.DataValueField = "CustomerID"; DropDownList1.DataSource = dsclientes; DropDownList1.DataBind(); // carregar a tabela de produtos para a DropDownList2 ShopClassLibrary.IProduct product = ShopClassLibrary.Factory.CreateProductService(); DataSet dsprodutos = product.getall("admin", "admin"); DropDownList2.DataTextField = "Description"; DropDownList2.DataValueField = "ProductID"; DropDownList2.DataSource = dsprodutos;

DropDownList2.DataBind(); // criar DataSet vazio (sem dados) para guardar linhas da factura ShopClassLibrary.ISale2 sale = ShopClassLibrary.Factory.CreateSale2Service(); DataSet dsdetalhesvenda = sale.createdetails("admin", "admin"); dsdetalhesvenda.tables[0].columns.add("produto"); Session["detalhesVenda"] = dsdetalhesvenda; protected void Button1_Click(object sender, EventArgs e) Button2.Visible = true; string IDCliente = DropDownList1.SelectedValue; string IDProduto = DropDownList2.SelectedValue; string NomeProduto = DropDownList2.SelectedItem.Text; int quantidade = int.parse(textbox1.text); DataSet dsdetalhesvenda = (DataSet)Session["detalhesVenda"]; // criar nova linha no DataSet DataRow dr = dsdetalhesvenda.tables[0].newrow(); // preencher campos da linha dr["productid"] = IDProduto; dr["quantity"] = quantidade; dr["produto"] = NomeProduto; // acrescentar linha ao DataSet dsdetalhesvenda.tables["saledetails"].rows.add(dr); // visualizar o novo DataSet GridView1.DataSource = dsdetalhesvenda; GridView1.DataBind(); GridView1.Visible = true; // guardar o novo DataSet em memória Session["detalhesVenda"] = dsdetalhesvenda; Label2.Visible = true; Ficheiro Customer.cs public interface ICustomer: DataSet getall(string user, string pass); internal class Customer : ICustomer public DataSet getall(string user, string pass) OleDbConnection conn; ShopStatusEnum status; try conn = new OleDbConnection(UtilDB.CONN);

conn.open(); status = UtilDB.ValidateUser(conn, null, user, pass); if (status!= ShopStatusEnum.OK) return null; DataSet ds = UtilDB.getAllFromTable(conn, "Customers"); return ds; catch (System.Exception) return null; Ficheiro Product.cs internal class Product : Iproduct DataSet getall(string user, string pass); internal class Product : IProduct public DataSet getall(string user, string pass) OleDbConnection conn; ShopStatusEnum status; try conn = new OleDbConnection(UtilDB.CONN); conn.open(); status = UtilDB.ValidateUser(conn, null, user, pass); if (status!= ShopStatusEnum.OK) return null; DataSet ds = UtilDB.getAllFromTable(conn, "Products"); return ds; catch (System.Exception) return null; Ficheiro Sale.cs internal class Sale : ISale2 public DataSet CreateDetails(string user, string pass) OleDbConnection conn = null; DataSet ds; try conn = new OleDbConnection(UtilDB.CONN); conn.open(); if (UtilDB.ValidateUser(conn, null, user, pass)!= ShopStatusEnum.OK) return null; // criar o DataSet vazio para a aplicação cliente preencher ds = UtilDB.GetByID(conn, null, "SaleDetails", "SaleID", -1); if (ds == null) return null;

// configurar as colunas para utilização ds.tables["saledetails"].columns["saleid"].allowdbnull = true; catch (OleDbException) return null; finally if (conn.state == ConnectionState.Open) conn.close(); return ds; ------------------------------------------------------------------------------- Versão 4: Para esconder as colunas 0- SaleID, 2- ProdutID, e 3- TotalCost do dataset criado em memória, que é a fonte de dados do GridView onde se apresentam os detalhes dos Produtos Vendidos, é necessário tratar o evento RowCreated.

GridView1 > Properties > Events > Behavior > RowCreated > Duplo clique Na página Vender.aspx, Source code, é acrescentado: <asp:gridview ID="GridView1" runat="server" OnRowCreated="GridView1_RowCreated"> </asp:gridview> Vender.aspx.cs public partial class Vender : System.Web.UI.Page protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) e.row.cells[0].visible = false; e.row.cells[2].visible = false; e.row.cells[3].visible = false; Botão Fechar Factura :