desenvolvimento de um crud utilizando stored procedure
TRANSCRIPT
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
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
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
Stored Procedure – Definição4
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
Stored Procedure – Vantagens
Desempenho
Reduz o tráfego na rede
Melhora a performance
Segurança
Cria mecanismos de segurança
Acesso Restrito
6
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
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
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]
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;
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;
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
Excluindo uma Stored Procedure
em SQL Server13
Excluindo uma Stored Procedure:
Exemplo:
DROP PROCEDURE RaizQuadrada;
DROP PROCEDURE <nome da sp>;
Dúvidas?14
Vamos para a Prática!!!15
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;
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;
Telas do Sistema18
Tela de Cadastro de Clientes
19
Tela de Consulta de Clientes
20
Tela de Atualização dos Dados de um
determinado Cliente21
Tela de Exclusão de um determinado
Cliente22
Desenvolvimento do CRUD em
Windows Forms C# utilizando
Stored Procedure SQL Server
Comunicação entre Sistema e Banco de
Dados via Stored Procedure23
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
)
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;
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
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
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;
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
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;
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
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)
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;
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)
catch (Exception erro){
MessageBox.Show("Erro: " + erro.Message);
} finally {
con.Close();
PreencheDgvClientes();
}
}
35
Método de Atualização – Atualiza dados
do Cliente (2/2)
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;
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
Dúvidas?38
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