Categorias

Manipulando Dados com Stored Procedures e VB.Net

O banco de dados MS SQL Server, assim como outros bancos de dados relacionas, nos permite trabalhar com STORED PROCEDURES.

Um Procedimento Armazenado (Stored Procedure) é um conjunto de comandos implementados na linguagem T-SQL (Transact-SQL) que ficam armazenados dentro do servidor de banco de dados, no nosso caso, no MS SQL Server.

Tais comandos, ficam armazenados no banco de dados de forma pré-compilada, aguardando que algum usuário faça a sua execução.

No exemplo que iremos trabalhar, iremos criar o banco de dados PAISES, no banco de dados PAISES criaremos a tabela TB_PAISES, com os campos (CODIGO, NOME).
Além de criarmos a tabela TB_PAISES, criaremos procedimentos (Stored Procedures) para INCLUIR, ALTERAR e EXCLUIR dados na tabela.
Após fazermos a ligação do banco de dados PAISES com o VB.NET, poderemos invocar os procedimentos do banco de dados (INCLUIR, ALTERAR, EXCLUIR) para manipular os dados de forma mais prática.

Iniciaremos nosso trabalho criando o banco de dados PAISES, para isso acesso o SQL SERVER MANAGEMENT STUDIO EXPRESS.

 

Com a janela do SQL MANAGEMENT STUDIO EXPRESS aberta, crie uma nova query clicando no botão NEW QUERY.
A query deverá criar o banco de dados, a tabela e os procedimentos de inclusão, alteração e exclusão de dados, conforme o código abaixo:

//comando para criar o banco de dados
CREATE DATABASE PAISES

//comando para utilizar o banco de dados paises
USE PAISES



//cria a tabela tb_paises
CREATE TABLE TB_PAISES
(
   CODIGO_PAIS INT PRIMARY KEY,
   NOME_PAIS VARCHAR(60)
)


//cria a procedure INCLUI_PAIS
CREATE PROCEDURE INSERE_PAIS
   @CODIGO_PAIS INT,
   @NOME_PAIS VARCHAR(60)
AS
   INSERT INTO TB_PAISES (CODIGO_PAIS, NOME_PAIS)
   VALUES (@CODIGO_PAIS, @NOME_PAIS)

//cria a procedure ALTERA_PAIS
CREATE PROCEDURE ALTERA_PAIS
   @CODIGO_PAIS INT,
   @NOVO_NOME_PAIS VARCHAR(60)
AS
   UPDATE TB_PAISES SET NOME_PAIS=@NOVO_NOME_PAIS
   WHERE CODIGO_PAIS=@CODIGO_PAIS


//cria a procedure EXCLUI_PAIS
CREATE PROCEDURE EXCLUI_PAIS
   @CODIGO_PAIS INT
AS
   DELETE FROM TB_PAISES WHERE CODIGO_PAIS=@CODIGO_PAIS



Até agora você criou o banco de dados, a tabela e os procedimentos que irão manipular os dados, teste os procedimentos abaixo e verifique a funcionalidade dos procedimentos.


//testa o procedimento INCLUI_PAIS
EXEC INSERE_PAIS
   @CODIGO_PAIS=1,
   @NOME_PAIS='BRASIL'

EXEC INSERE_PAIS
   @CODIGO_PAIS=2,
   @NOME_PAIS='JAPÃO'

//TESTA O PROCEDIMENTO ALTERA_PAIS
EXEC ALTERA_PAIS
   @CODIGO_PAIS=2,
   @NOVO_NOME_PAIS='CHINA'

//TESTA O PROCEDIMENTO EXCLUI_PAIS
EXEC EXCLUI_PAIS
   @CODIGO_PAIS=4

//Após a execução de cada teste acima, faça uma consulta à tabela para //verificar os resultados
SELECT * FROM TB_PAISES

Crie um novo projeto no VB.Net e vincule o banco de dados PAISES ao projeto, para isto crie um novo DATA SOURCE: os procedimentos para vinculação do projeto ao banco de dados são os mesmos já vistos nas aulas passadas, com apenas uma particularidade:
- No momento de selecionar os objetos do banco de dados a serem vinculados, onde escolhíamos TABLES, iremos escolher agora TABLES e STORED PROCEDURES, conforme a imagem abaixo.
 

Desta forma estaremos vinculando o nosso projeto ao banco de dados, suas tables e seus procedures.
Feito a conexão com o banco, arraste o objeto TB_PAISES para a sua aplicação, em seguida crie 3 botões (INCLUIR, ALTERAR e EXCLUIR). O seu formulário deverá ter a aparência da imagem abaixo:
 

Execute a sua aplicação e em seguida pare a execução. Após fazer isso, você perceberá que foi criado o componente QueriesTableAdapter, na barra de componentes localizada a esquerda da tela. Arraste o componente para o seu projeto.


O componente QueriesTableAdapter é responsável por invocar os procedimentos criados no banco de dados (Inclui_pais, Altera_pais e Exclui_pais).
Tais procedimentos foram criados com parâmetros, ou seja, variáveis que teremos que informar no momento que os chamamos.


O código do programa ficará da seguinte forma: Observe que as variáveis CODIGO e NOME foram criadas logo no inicio, abaixo da declaração da classe FORM1, isto implica que tais variáveis pertencem a toda classe. Desta forma eu não preciso declará-las novamente dentro dos procedimentos que forem utilizá-las.


Public Class Form1
   Dim CODIGO As Integer
   Dim NOME As String

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'PAISESDataSet.TB_PAISES' table. You can move, or remove it, as needed.
        Me.TB_PAISESTableAdapter.Fill(Me.PAISESDataSet.TB_PAISES)
    End Sub




Private Sub BTN_INCLUIR_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_INCLUIR.Click
      CODIGO = InputBox("DIGITE O CODIGO DO PAÍS")
      NOME = InputBox("DIGITE O NOME DO PAÍS")
      Me.QueriesTableAdapter1.INSERE_PAIS(CODIGO, NOME)
      ATUALIZA_DADOS()
    End Sub
 

Private Sub BTN_ALTERA_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_ALTERA.Click
      CODIGO = InputBox("DIGITE O CODIGO DO PAÍS QUE DESEJA ALTERAR")
      NOME = InputBox("DIGITE O NOVO NOME DO PAÍS")
      Me.QueriesTableAdapter1.ALTERA_PAIS(CODIGO, NOME)
      ATUALIZA_DADOS()
   End Sub
 

Private Sub BTN_EXCLUI_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_EXCLUI.Click
      CODIGO = InputBox("DIGITE O CODIGO DO PAÍS QUE DESEJA EXCLUIR")
      Me.QueriesTableAdapter1.EXCLUI_PAIS(CODIGO)
      ATUALIZA_DADOS()
    End Sub


    Private Sub ATUALIZA_DADOS()
        Me.TB_PAISESTableAdapter.Fill(Me.PAISESDataSet.TB_PAISES)
    End Sub
 

Obs: observe que no final de cada procedimento (INCLUIR, ALTERAR e EXCLUIR)estamos chamando o procedimento ATUALIZA_DADOS, responsável por atualizar os dados exibidos na tela. Para isto, precisamos criar o procedimento ATUALIZA_DADOS, desta forma não precisamos utilizar o comando de atualização em todos procedimentos, basta chamar o procedimento ATUALIZA_DADOS.

Assim encerramos o exemplo de como criar STORED PROCEDURES e manipular dados utilizando este recurso. Iremos tirar dúvidas e praticar mais na sala de aula.