desenvolvimento de um crud utilizando stored procedure

40
Prof. Me. Fernando Roberto Proença Desenvolvimento de um CRUD utilizando Stored Procedure XV SEMINFO 11/11/15 http://www.fespmg.edu.br/Cursos/graduacao/sistemas-de-informacao

Upload: fernando-roberto-proenca

Post on 15-Feb-2017

465 views

Category:

Software


7 download

TRANSCRIPT

Page 1: Desenvolvimento de um CRUD utilizando Stored Procedure

Prof. Me. Fernando Roberto Proença

Desenvolvimento de

um CRUD utilizando

Stored Procedure

XV SEMINFO11/11/15

http://www.fespmg.edu.br/Cursos/graduacao/sistemas-de-informacao

Page 2: Desenvolvimento de um CRUD utilizando Stored Procedure

Sumário

O que é Stored Procedure?

Definição, características, vantagens, sintaxe e

exemplos

Stored Procedure no SQL Server

Apresentação das Telas do Sistema

Desenvolvimento do CRUD do Sistema

utilizando Stored Procedure

2

Page 3: Desenvolvimento de um CRUD utilizando Stored Procedure

Stored Procedure – Definição

Stored Procedure ou Procedimento

armazenado é um conjunto de comandos em

SQL agrupados em um Procedimento, que são

compilados e armazenados e um Banco de

Dados.

Para cada Stored Procedure é atribuído um

nome, que pode ser chamado a qualquer

momento, tanto pelo SGBD, quanto por um

sistema que tem acesso ao Banco de Dados.

3

Page 4: Desenvolvimento de um CRUD utilizando Stored Procedure

Stored Procedure – Definição4

Page 5: Desenvolvimento de um CRUD utilizando Stored Procedure

Stored Procedure – Características

Possui um nome de identificação

Pode receber um ou mais parâmetros de entrada

Pode retornar diversos valores como parâmetro

de saída

Ex.: Para indicar aceitação ou falha na execução

Executa no servidor (BD)

5

Page 6: Desenvolvimento de um CRUD utilizando Stored Procedure

Stored Procedure – Vantagens

Desempenho

Reduz o tráfego na rede

Melhora a performance

Segurança

Cria mecanismos de segurança

Acesso Restrito

6

Page 7: Desenvolvimento de um CRUD utilizando Stored Procedure

Stored Procedure – Vantagens

Manutenção

Facilita o gerenciamento

Encapsulam comandos SQL no próprio servidor,

estando disponível para várias aplicações.

Parte da lógica do sistema pode ser armazenada

no próprio BD, em vez de ser codificada em várias

aplicações.

7

Page 8: Desenvolvimento de um CRUD utilizando Stored Procedure

Stored Procedure – Sintaxe em

SQL Server

Regras: O nome da procedure deve seguir as regras para criação

de identificadores

Nome do parâmetro deve iniciar por @ e deve ser único na lista de argumentos, seguido do seu tipo

Ex.: @nome varchar(50), @idade int, @valor float,

Todos os parâmetros são considerados de entrada, exceto se houver OUTPUT após sua definição.

8

CREATE PROCEDURE <nome> [parâmetro] AS BEGIN

<instrução SQL>END

Page 9: Desenvolvimento de um CRUD utilizando Stored Procedure

Stored Procedure – Sintaxe em

SQL Server

Para uma Stored Procedure (sp) ser executada,

é necessário fazer uma chamada ao comando

EXECUTE...

9

EXEC[UTE] <nome da sp> [valor do parâmetro]

Page 10: Desenvolvimento de um CRUD utilizando Stored Procedure

Exemplo de uma Stored Procedure que retorna

“Olá Mundo!!!”

Uma chamada a este procedimento seria:

Criando uma Stored Procedure em

SQL Server10

CREATE PROCEDURE OlaMundo AS

BEGIN

SELECT 'Olá Mundo!!!' AS Ola;

END

EXEC OlaMundo 5;

Page 11: Desenvolvimento de um CRUD utilizando Stored Procedure

Exemplo de uma Stored Procedure que calcula a

Raiz Quadrada de um número.

Uma chamada a este procedimento seria:

Criando uma Stored Procedure em

SQL Server11

CREATE PROCEDURE RaizQuadrada @numero int AS

BEGIN

SELECT @numero * @numero AS Quadrado;

END

EXEC RaizQuadrada 5;

Page 12: Desenvolvimento de um CRUD utilizando Stored Procedure

Atualizando uma Stored Procedure

em SQL Server12

Atualizando uma Stored Procedure existente:

Exemplo:

ALTER PROCEDURE RaizQuadrada @numero int AS

BEGIN

SELECT @numero * 2 AS Quadrado;

END

ALTER PROCEDURE <nome> [parâmetro] AS BEGIN

<instrução SQL>END

Page 13: Desenvolvimento de um CRUD utilizando Stored Procedure

Excluindo uma Stored Procedure

em SQL Server13

Excluindo uma Stored Procedure:

Exemplo:

DROP PROCEDURE RaizQuadrada;

DROP PROCEDURE <nome da sp>;

Page 14: Desenvolvimento de um CRUD utilizando Stored Procedure

Dúvidas?14

Page 15: Desenvolvimento de um CRUD utilizando Stored Procedure

Vamos para a Prática!!!15

Page 16: Desenvolvimento de um CRUD utilizando Stored Procedure

Criando um BD e Stored Procedure

no SQL Server – Olá Mundo!!!16

1. CREATE DATABASE bdExemplo2. USE bdExemplo3. CREATE PROCEDURE OlaMundo

BEGINSELECT 'Olá Mundo!!!' AS ola;

END

EXEC OlaMundo;

Page 17: Desenvolvimento de um CRUD utilizando Stored Procedure

Stored Procedure no SQL Server –

Cálculo da Raiz Quadrada17

1. CREATE PROCEDURE RaizQuadrada @numero int ASBEGIN

SELECT @numero * @numero AS Quadrado;END

EXEC RaizQuadrada 5;

Page 18: Desenvolvimento de um CRUD utilizando Stored Procedure

Telas do Sistema18

Page 19: Desenvolvimento de um CRUD utilizando Stored Procedure

Tela de Cadastro de Clientes

19

Page 20: Desenvolvimento de um CRUD utilizando Stored Procedure

Tela de Consulta de Clientes

20

Page 21: Desenvolvimento de um CRUD utilizando Stored Procedure

Tela de Atualização dos Dados de um

determinado Cliente21

Page 22: Desenvolvimento de um CRUD utilizando Stored Procedure

Tela de Exclusão de um determinado

Cliente22

Page 23: Desenvolvimento de um CRUD utilizando Stored Procedure

Desenvolvimento do CRUD em

Windows Forms C# utilizando

Stored Procedure SQL Server

Comunicação entre Sistema e Banco de

Dados via Stored Procedure23

Page 24: Desenvolvimento de um CRUD utilizando Stored Procedure

Criando uma Tabela no BD24

1. CREATE TABLE tblCliente (id int identity(1,1) primary key,nome varchar(50) NULL,idade int NULL,credito float NULL

)

Page 25: Desenvolvimento de um CRUD utilizando Stored Procedure

Criando uma Stored Procedure com comando de

Inserção (Insert):

Executando o procedimento criado:

Stored Procedure com Comando de

Inserção25

CREATE PROCEDURE InsereCliente @nomevarchar(50), @idade int, @credito float ASBEGIN

INSERT INTO tblCliente(nome, idade, credito)VALUES(@nome, @idade, @credito);

END

EXECUTE InsereCliente 'Jose', 35, 100;

Page 26: Desenvolvimento de um CRUD utilizando Stored Procedure

Definindo a String de Conexão com o BD

// Define String de Conexão com BD SQL Server

static String strConexao = @"Data Source=localhost; InitialCatalog=bdExemplo; Integrated Security=True";

// Cria a Conexão com o BD

SqlConnection con = new SqlConnection(strConexao);

26

Page 27: Desenvolvimento de um CRUD utilizando Stored Procedure

Método de Inserção – Cadastro de Cliente

private void btnCadastrar_Click(object sender, EventArgs e){

try{

con.Open();

SqlCommand cmd = new SqlCommand("EXECUTE InsereCliente

@nome, @idade, @credito", con);

cmd.Parameters.Add(new SqlParameter("@nome", txtNome.Text));

cmd.Parameters.Add(new SqlParameter("@idade",

Convert.ToInt32(txtIdade.Text.Trim())));

cmd.Parameters.Add(new SqlParameter("@credito",

float.Parse(txtCredito.Text.Trim())));

cmd.ExecuteNonQuery();

MessageBox.Show("Cliente Cadastrado com Sucesso!");

}catch (Exception erro){

MessageBox.Show("Erro: " + erro.Message);

}finally{

con.Close();

}

}

27

Page 28: Desenvolvimento de um CRUD utilizando Stored Procedure

Criando uma Stored Procedure com comando de

Seleção (Select):

Executando o procedimento criado:

Stored Procedure com Comando de

Seleção28

CREATE PROCEDURE BuscaClientes ASBEGINSELECT * FROM tblCliente;

END

EXECUTE BuscaClientes;

Page 29: Desenvolvimento de um CRUD utilizando Stored Procedure

Método de Consulta – Busca Todos Clientes

void PreencheDgvClientes(){

try {

con.Open();

DataTable tabela = new DataTable();

SqlCommand cmd = new SqlCommand("EXECUTE BuscaClientes", con);

SqlDataAdapter adaptador = new SqlDataAdapter(cmd);

adaptador.Fill(tabela);

dgvClientes.DataSource = tabela;

tabControl1.SelectedTab = tabPage2;

} catch (Exception erro){

Console.WriteLine(erro.Message);

} finally {

con.Close();

}

}

29

Page 30: Desenvolvimento de um CRUD utilizando Stored Procedure

Criando uma Stored Procedure com comando de

Seleção utilizando Filtros:

Executando o procedimento criado:

Stored Procedure com Comando de

Seleção utilizando Filtros30

CREATE PROCEDURE BuscaClientePorId @id int ASBEGIN

SELECT * FROM tblCliente WHERE id = @id;END

EXECUTE BuscaClientePorId 1;

Page 31: Desenvolvimento de um CRUD utilizando Stored Procedure

Método de Consulta – Busca Determinado

Cliente (1/2)

private void btnBuscarCliente_Click(object sender, EventArgs e){

try {

con.Open();

SqlCommand cmd = new SqlCommand("EXECUTE BuscaClientePorId @id", con);

cmd.Parameters.Add(new SqlParameter("@id",

Convert.ToInt32(txtIdCliente.Text.Trim())));

SqlDataReader clientes = cmd.ExecuteReader();

if (clientes.HasRows){

while (clientes.Read()){

txtNomeA.Text = clientes["nome"].ToString();

txtIdadeA.Text = clientes["idade"].ToString();

txtCreditoA.Text = clientes["credito"].ToString();

}

}

31

Page 32: Desenvolvimento de um CRUD utilizando Stored Procedure

else{

MessageBox.Show("Cliente não encontrado!!!");

}

} catch (Exception erro) {

Console.WriteLine(erro.Message);

} finally {

con.Close();

}

}

32

Método de Consulta – Busca Determinado

Cliente (2/2)

Page 33: Desenvolvimento de um CRUD utilizando Stored Procedure

Criando uma Stored Procedure com comando de

Atualização (Update):

Executando o procedimento criado:

Stored Procedure com Comando de

Atualização33

CREATE PROCEDURE AtualizaCliente @nome varchar(50),@idade int, @credito float, @id int ASBEGIN

UPDATE tblCliente SET nome = @nome,idade = @idade, credito = @creditoWHERE id = @id;

END

EXECUTE AtualizaCliente 'Maria', 42, 650, 1;

Page 34: Desenvolvimento de um CRUD utilizando Stored Procedure

private void btnAtualizar_Click(object sender, EventArgs e){

try {

con.Open();

SqlCommand cmd = new SqlCommand("EXECUTE AtualizaCliente@nome, @idade, @credito, @id", con);

cmd.Parameters.Add(new SqlParameter("@nome", txtNomeA.Text));

cmd.Parameters.Add(new SqlParameter("@idade", Convert.ToInt32(txtIdadeA.Text.Trim())));

cmd.Parameters.Add(new SqlParameter("@credito", float.Parse(txtCreditoA.Text.Trim())));

cmd.Parameters.Add(new SqlParameter("@id", Convert.ToInt32(txtIdCliente.Text.Trim())));

cmd.ExecuteNonQuery();

MessageBox.Show("Cliente Atualizado com Sucesso!");

}

34

Método de Atualização – Atualiza dados

do Cliente (1/2)

Page 35: Desenvolvimento de um CRUD utilizando Stored Procedure

catch (Exception erro){

MessageBox.Show("Erro: " + erro.Message);

} finally {

con.Close();

PreencheDgvClientes();

}

}

35

Método de Atualização – Atualiza dados

do Cliente (2/2)

Page 36: Desenvolvimento de um CRUD utilizando Stored Procedure

Criando uma Stored Procedure com comando de

Exclusão (Delete):

Executando o procedimento criado:

Stored Procedure com Comando de

Exclusão36

CREATE PROCEDURE ExcluiCliente @id int ASBEGIN

DELETE FROM tblCliente WHERE id = @id;END

EXECUTE ExcluiCliente 1;

Page 37: Desenvolvimento de um CRUD utilizando Stored Procedure

Método de Exclusão – Exclui um

determinado Cliente

private void btnExcluir_Click(object sender, EventArgs e){

try {

con.Open();

SqlCommand cmd = new SqlCommand("EXECUTE ExcluiCliente @id", con);

cmd.Parameters.Add(new SqlParameter("@id", Convert.ToInt32(txtIdClienteE.Text.Trim())));

cmd.ExecuteNonQuery();

MessageBox.Show("Cliente Excluído com Sucesso!");

} catch (Exception erro) {

MessageBox.Show("Erro: " + erro.Message);

} finally {

con.Close();

PreencheDgvClientes();

}

}

37

Page 38: Desenvolvimento de um CRUD utilizando Stored Procedure

Dúvidas?38

Page 39: Desenvolvimento de um CRUD utilizando Stored Procedure

Valeu Galera!!!39

Prof. Me. Fernando Roberto Proença

[email protected]

Page 40: Desenvolvimento de um CRUD utilizando Stored Procedure

Referências

ELMASRI, R.; NAVATHE; S.. B. Sistemas de banco de

dados. 6. ed. São Paulo: Pearson, 2011.

MORONI, Herbert. Treinamento Profissional em C#.net.

São Paulo: Digerati Books, 2004.

https://msdn.microsoft.com/en-us/library/ms345415.aspx

http://www.devmedia.com.br/introducao-as-stored-

procedure-com-sql-server-2000-2005/2213

http://imasters.com.br/artigo/223/sql-server/criacao-e-uso-

de-stored-procedures/

http://www.codeproject.com/Articles/126898/Sql-Server-

How-To-Write-a-Stored-Procedure-in-SQL

https://www.youtube.com/watch?v=7qWOLKItjJ0

40