Desenvolvimento de um CRUD utilizando Stored Procedure
-
Upload
fernando-roberto-proenca -
Category
Software
-
view
465 -
download
7
Transcript of Desenvolvimento de um CRUD utilizando Stored Procedure
![Page 1: Desenvolvimento de um CRUD utilizando Stored Procedure](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/1.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/2.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/3.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/4.jpg)
Stored Procedure – Definição4
![Page 5: Desenvolvimento de um CRUD utilizando Stored Procedure](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/5.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/6.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/7.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/8.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/9.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/10.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/11.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/12.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/13.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/14.jpg)
Dúvidas?14
![Page 15: Desenvolvimento de um CRUD utilizando Stored Procedure](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/15.jpg)
Vamos para a Prática!!!15
![Page 16: Desenvolvimento de um CRUD utilizando Stored Procedure](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/16.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/17.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/18.jpg)
Telas do Sistema18
![Page 19: Desenvolvimento de um CRUD utilizando Stored Procedure](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/19.jpg)
Tela de Cadastro de Clientes
19
![Page 20: Desenvolvimento de um CRUD utilizando Stored Procedure](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/20.jpg)
Tela de Consulta de Clientes
20
![Page 21: Desenvolvimento de um CRUD utilizando Stored Procedure](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/21.jpg)
Tela de Atualização dos Dados de um
determinado Cliente21
![Page 22: Desenvolvimento de um CRUD utilizando Stored Procedure](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/22.jpg)
Tela de Exclusão de um determinado
Cliente22
![Page 23: Desenvolvimento de um CRUD utilizando Stored Procedure](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/23.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/24.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/25.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/26.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/27.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/28.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/29.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/30.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/31.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/32.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/33.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/34.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/35.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/36.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/37.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/38.jpg)
Dúvidas?38
![Page 40: Desenvolvimento de um CRUD utilizando Stored Procedure](https://reader034.fdocuments.net/reader034/viewer/2022052302/58a3ab3d1a28ab9e6a8b5b27/html5/thumbnails/40.jpg)
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