Projeto de Teste      
 
Estamos chegando ao final do artigo. Nesta parte vamos iniciar nosso projeto de teste contruindo um pequeno Banco de Dados.
 
Agora vamos ver na prática como utilizar a nossa classe DAL genérica. Construiremos um pequeno banco de dados no SqlServer 2005 Express com algumas Stored Procedures e apenas uma tabela. Contruiremos também um projeto do tipo Console Application com C# no Visual Studio.
 
Nosso BD será composto por 1 tabela:
 

Ilustração 11 – Tabela Produto a ser criada
 
Para maior agilidade vamos deixar aqui o script para a criação do banco e desta tabela:
 
CREATE DATABASE [TESTE];
USE [TESTE]
GO
/****** Object:  Table [dbo].[PRODUTO]    Script Date: 04/26/2011 16:22:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[PRODUTO](
      [prod_id] [int] IDENTITY(1,1) NOT NULL,
      [prod_nome] [varchar](50) COLLATE Latin1_General_CI_AS NULL,
      [prod_url] [varchar](50) COLLATE Latin1_General_CI_AS NULL,
      [prod_desc] [varchar](100) COLLATE Latin1_General_CI_AS NULL,
      [prod_preco] [decimal](8, 2) NULL,
      [prod_img] [varchar](250) COLLATE Latin1_General_CI_AS NULL,
      [prod_img_byte] [image] NULL,
 CONSTRAINT [PK_PRODUTO] PRIMARY KEY CLUSTERED
(
      [prod_id] ASC
)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
 
GO
SET ANSI_PADDING OFF
 
Com nosso BD criado vamos Criar as SPs. Para exemplo vamos utilizar 5 SPs. Abaixo segue uma tabela com os nomes e funções de cada procedure.
 
Nome
Função
spDELProd_D
Exclusão
spINSProd_I
Inserção
spSELProd_S
Seleção sem filtro
spSELProd_SF
Seleção com filtro
spUPDProd_U
Alteração

Seguem os scripts:
 
USE [TESTE]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[spDELProd_D]
      (
        @pProdId int
    )
AS
            DELETE dbo.Produto WHERE prod_id = @pProdId
 
 
USE [TESTE]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[spINSProd_I]
      (
            @outProdId int output,
        @pProdNome varchar(50),
        @pProdUrl varchar(50),
        @pProdDesc varchar(50),
        @pProdPreco varchar(20),
        @pProdImg varchar(250),
            @pProdImgByte image
        )
AS
            INSERT INTO dbo.Produto
            (
                  prod_nome,
                  prod_url,
                  prod_desc,
                  prod_preco,
                  prod_img,
                  prod_img_byte
            )
            VALUES
            (
                  @pProdNome,
                  @pProdUrl,
                  @pProdDesc,
                  convert(decimal(8,2),@pProdPreco),
                  @pProdImg,
                  @pProdImgByte
            );
 
Select @outProdId = MAX(prod_id) FROM dbo.Produto;
 
 
USE [TESTE]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[spSELProd_S]
     
AS
            SELECT * FROM dbo.Produto
 
 
USE [TESTE]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[spSELProd_SF]
      (
            @pProdId int
     )
AS
            SELECT * FROM dbo.Produto where prod_id = @pProdId
 
 
 
 
USE [TESTE]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[spUPDProd_U]
      (
        @pProdId int,
            @pProdNome varchar(50),
        @pProdUrl varchar(50),
        @pProdDesc varchar(50),
        @pProdPreco varchar(20),
        @pProdImg varchar(250),
            @pProdImgByte image
        )
AS
            UPDATE dbo.Produto SET
                  prod_nome = @pProdNome,
                  prod_url = @pProdUrl,
                  prod_desc = @pProdDesc,
                  prod_preco = convert(decimal(8,2),@pProdPreco),
                  prod_img = @pProdImg,
                  prod_img_byte = @pProdImgByte
            WHERE prod_id = @pProdId
 
 
Pronto, nosso BD está completo agora para o nosso projeto de exemplo. No proximo artigo contruiremos um projeto no Visual Studio para testarmos nossa ferramenta.