Shop Notas de implementação. [Exercício da Disciplina de ADAV]

Documentos relacionados
D:\arqsi_portatil\ShopPAG\ShopClassLibrary\Sale.cs


C# - Conexão com MySQL

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

ADO1. Visual Studio 2008 New Web Site: ADO1 em C:\Utilizadors\Fernando\ \ARQSI\TP6

Views. objconexao = Mapped.Connection(); objcommand = Mapped.Command("SELECT * FROM vw_todoscarros_com_piloto", objconexao);

Tarefa Orientada 17 Scripts

De forma simples, para a execução de comandos SQL com JDBC, precisa-se da instancia de três classes Java. São elas: Nome da classe Função

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

MAPPED E CLASSES DE PERSISTÊNCIAS.NET

PSI Linguagem de Definição de dados. Módulo 15

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

Exercícios de fixação: Listas

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.

Table Module com Table Data Gateway usando custom classes

Material II-Bimestre Introdução e conceitos fundamentais de aplicações para manipulação e Acesso a Banco de Dados em C#

Código do Sistema Ponto de Vendas

Programação Orientada a Objetos JDBC Java Database Connectivity

Programação Orientada a Objetos II

Agenda. Instalação e configuração. Processamento de comandos SQL com JDBC. Driver JDBC Criação da classe de conexão

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

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

Padrões de Projeto e Persistência com DAO

Como criar um banco de dados usando o mysql

Integrando Java com Banco de Dados


Leonardo Gresta Paulino Murta

DATA ACCESS OBJECT (DAO)

JDBC. Prof. Márcio Bueno

6 Acessos a banco de dados

Lista de exercícios I - RESPOSTAS Servlets e banco de dados

DSS 09/10. DSS 09/10 Que métodos é que fazem parte de cada camada? Aplicações Multi-camada JDBC. Aula 3 DSS 09/10

Web Services. EclipseSDK/DB2 Construindo/Consumindo Serviços

ICE-B Sqlite e Python. Ludwig Krippahl

LAB 7 Cookies e Sessões em PHP

Transacções. Vitor Vaz da Silva

Tarefa Orientada 9 Base de Dados Pagamentos

Tarefa Orientada 4 Aplic. Manutenção de Produtos - ComboBox

Aplicação Hibernate1 no NetBeans

Drive MySql de conexão para Eclipse

Proposta de calendário - Comissão Permanente de Ensino

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

Banco de Dados I Introdução SQL

Manual de Integração SMS

Flickr, shindotv/ / BASES DE DADOS. Laboratórios de Informática João Paulo Barraca, André Zúquete, Diogo Gomes

2 Vectores de objectos

Bases de Dados 2007/2008. Aula 9

Conexão do Banco de Dados localhost

PHP e MySQL Autenticação de Usuários

Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção.

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

Programando em SQL. Triggers, Stored Procedures e funções. Profa. Késsia Marchi

Introdução à Banco de Dados em Delphi:

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

JDBC - Java Data Base Connectivity

Associação 1:1. Baseado no Diagrama de Classe a seguir, iremos criar as classes de Modelagem que compõem a Associação de Piloto com Carro.

Armazenamento de dados

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Autenticação e Autorização

Banco de dados POO Márcio Delamaro. Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP

Os comandos SQL utilizados nas aulas práticas e mostrados aqui foram feitos num interpretador de comandos: psql

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Paradigmas da Programação PPROG. Tipos Enumerados. Nelson Freire (ISEP DEI-PPROG 2013/14) 1/20

Armazenamento organizado facilitando SCRUD; Agiliza processo de desenvolvimento de sistemas;

Mini curso de Visual Basic.NET

Conexão genérica com banco de dados

Persistência de Classes em Tabelas de Banco de Dados

Desenvolvimento para Web em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM Lamarck Heinsch Mestrando PPGI/CT/UFSM

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

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

LAB 12 Construção de uma E-shop (programação em HTML, CSS, Bootstrap, PHP, CodeIgniter, JavaScript, JQuery, AJAX)

Java - Conexão ao Banco de Dados usando JDBC

TECNOLOGIA EM SISTEMAS PARA INTERNET PROJETO DE BANCO DE DADOS

José Antônio da Cunha

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

Visual Studio.NET - C# Parte 2 Windows Forms e Web Services

Introdução às funções e procedimentos. SQL suporta funções e procedimentos úteis com tipos de dados específicos

INE 5612 Professor: Frank Siqueira. Leonardo Silva Jean Ercilio Thiago

Criação de uma aplicação Web ASP.NET MVC 4

Técni n c i as e L i L n i g n u g age g ns n p ara r Ba B nc n o d e D ados I ACCESS

FTIN FORMAÇÃO TÉCNICA EM INFORMÁTICA. Módulo de Programação Prof. Bruno Maciel

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

Tutorial de Extensibilidade

Bases de Dados. Lab 1: Introdução ao ambiente. Figura 1. Base de dados de exemplo

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

Acesso a banco de dados

Java DataBase Connectivity - JDBC. Ramon Lopes Embaixador de Campus Sun - UFBA

Como criar um banco de dados usando o mysql

Tratamento de Exceções

BANCO DE DADOS BANCO DE DADOS. Prof. Patrícia Lucas 3º Trimestre

Linguagens de Programação

Macros e Programação VBA

Implementar um exemplo de relacionamento entre classes um para muitos (1:N) e um para um (1:1). Sistema para uma Promotora de Evento Agenda Anual

Uma solução possível para garantir, em ambiente APEX, a consistência duma estrutura ISA, total e disjuntiva.

Vamos falar de Hibernate?

Transcrição:

Shop Notas de implementação [Exercício da Disciplina de ADAV] http://www.dei.isep.ipp.pt/~jtavares/adav/downloads/adav_proj_rreferencia.pdf

Base de Dados - Sales 1

Componente Componente Class Library Entidades de negócio Customer Product Sale Classes implementadas Customer.cs Product.cs Sale.cs Factory.cs UtilDB.cs User.cs ShopSatatusEnum.cs 2

Utilização do componente Acrescentar referência ao Componente no projecto (Windows Form, Web Site ou Consola para testes) 3

Interfaces e Classes Códigos de Status Retorno de alguns métodos // // Definição dos códigos de status que poderão ser retornados public enum ShopStatusEnum OK = 1, NOT_OK = 0, INVALID_LOGIN = -1, INVALID_KEY = -2, INVALID_CUSTOMER_ID = -3, INVALID_PRODUCT_ID = -4, INSUFICIENT_STOCK = -5, ERROR = -6 User public interface IUser ShopStatusEnum Validate(string user, string pass); 4

Interfaces e Classes 5

Interfaces e Classes Customer public interface ICustomer // devolve os dados do cliente com um dado id DataSet GetByID(string user, string pass, long clientid); // devolve os dados de todos os clientes cujo nome obedeça ao padrão de pesquisa DataSet FindByName( string user, string pass, string namepattern); // Adiciona um novo cliente e retorna o respectivo ID gerado automaticamente na BD long Add( string user, string pass, string name, string address,string phone, string fax, string email, out ShopStatusEnum status); // actualiza os dados do cliente identificado pelo id ShopStatusEnum Update( string user, string pass, long custumerid, string name, string address, string phone, string fax, string email); 6

UtilDB Código comum: usado pelas outras classes para acesso à base de dados 7

Cliente do componente 1 - ) Usar Classe Customer do componente //Instanciar classe Customer ShopClassLibrary.ICustomer customer= new ShopClassLibrary.Customer(); // chamada ao método GetByID da classe Customer.cs DataSet ds = customer.getbyid(user, pass, idcustomer); // método devolve null se não encontrar If ( ds!=null ) 8

2 - ) Usar Classe Customer do componente através da classe Factory ICustomer customer= Factory.CreateCustomerService(); public class factory public static ICustomer CreateCustomerService() return new Customer(); dd public static ISale CreateSaleService() return new Sale(); public static ISale2 CreateSale2Service() return new Sale(); 9

DAL - Classe Customer.cs public DataSet GetByID(string user, string pass, long clientid) OleDbConnection conn = null; DataSet ds = null; try // criar objecto de conexão à base de dados e abrir a conexão conn = new OleDbConnection(UtilDB.CONN); conn.open(); // validar utilizador ShopStatusEnum status = UtilDB.ValidateUser(conn, null, user, pass); if (status!= ShopStatusEnum.OK) return null; // efectuar pesquisa ds = UtilDB.GetByID(conn, null, "Customers", "CustomerID", clientid); 10

Classe Customer.cs - GetByID (cont.) catch(oledbexception ex) // tratar a excepção!!!! System.Console.WriteLine("EXCEPÇÃO no método <GetByID> da classe 'Customer': " + ex.message); finally // fechar a conexão if (conn.state == ConnectionState.Open) conn.close(); return ds; 11

Classe UtilDB.cs - GetByID static public DataSet GetByID(string table, string keyname, long key) DataSet ds = null; try // criar objecto DataSet ds = new DataSet(); // criar um Datadapter para executar o comando e devolver o dataset string ssqlcmd = "Select * From "+ table + " Where + keyname + " = "+ key.tostring(); OleDbDataAdapter oadapter = new OleDbDataAdapter(sSqlCmd, conn); oadapter.selectcommand.transaction = tx; // executar o comando e preencher um Dataset oadapter.fill(ds, table); catch(oledbexception ex) // tratar a excepção!!!! System.Console.WriteLine("EXCEPÇÃO no método 'UtilDB.GetByID': " + ex.message); ds = null; return ds; 12

UtilDB Código genérico para pesquisa por Chave /// <summary> /// Obtem um dataset resultante de uma pesquisa por chave /// </summary> /// <param name="table">tabela a pesquisar</param> /// <param name="field">campo chave a usar</param> /// <param name="key">valor da chave a pesquisar</param> /// <returns>um dataset do tipo pedido</returns> static public DataSet GetByID(string table, string keyname, long key) 13

Inserir novo cliente Validar dados de entrada Criar objecto de conexão à base de dados Validar utilizador Criar comando SQL com parâmetros Definir parâmetros Executar comando Verificar resultado Determinar ID gerado para o novo registo Devolver novo ID 14

Inserir novo cliente public long Add(string user,string pass, string name,,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; 15

Inserir novo cliente try // criar objecto de conexão à base de dados e abrir a conexão conn = new OleDbConnection(UtilDB.CONN); conn.open(); // validar o utilizador // status = UtilDB.ValidateUser(conn, null, user, pass); if (status!= ShopStatusEnum.OK) return -1; 16

Inserir novo cliente // criar comando SQL a executar // string sqlcmd = "INSERT INTO Customers (Name, Address, PhoneNb, FaxNb, EMail) Values (?,?,?,?,?)"; OleDbCommand cmd = new OleDbCommand(sqlCmd,conn); // definir parâmetros cmd.parameters.addwithvalue("name", name); if (address.length == 0) cmd.parameters.addwithvalue("address", DBNull.Value); else cmd.parameters.addwithvalue("address", address); 17

Inserir novo cliente // // executar o comando // int insrows = cmd.executenonquery(); // // verificar o resultado // if (insrows == 0) // não inseriu registo status = ShopStatusEnum.NOT_OK; else 18

Inserir novo cliente else // // inseriu registo // obter novo código de id gerado pela BD OleDbCommand idcmd = new OleDbCommand("SELECT @@IDENTITY", conn); customerid = (int)idcmd.executescalar(); status = ShopStatusEnum.OK; 19

Inserir novo cliente catch (OleDbException ex) // tratar a excepção!!!! System.Console.WriteLine("EXCEPÇÃO no método <AddCustomer> da classe 'Customer': " + ex.message); status = ShopStatusEnum.ERROR; finally // fechar a conexão if (conn!= null && conn.state== ConnectionState.Open) conn.close(); return customerid; //devolver ID 20

Classe Sale 21

public class User : IUser public ShopStatusEnum Validate(string user, string pass) return UtilDB.ValidateUser(user, pass); public interface IUser ShopStatusEnum Validate(string user, string pass); // validar Login IUser c = new User(); if (c.validate(txtusername.text, txtpassword.text) == ShopStatusEnum.OK) 22