VB.NET - Brincando com Stored Procedures no SQL Server
Vamos brincar um pouco com storeds procedures no SQL Server ? Como brincar é uma das melhores formas de aprender você vai aprender brincando os seguintes conceitos neste artigo :
Conectar-se a um banco de dados no SQL Server
Criar Stored Procedures no SQL Server
Executar Stored Procedures no SQL Server e exibir o resultado em um DataGrid
Excluir Stored Procedures no SQL Server
Efetuar o tratamento de erros
Trabalhar com formulários MDI
Quanta coisa , não é mesmo . Acompanhe o artigo e você nem vai perceber quando chegar ao final...
Iniciando a brincadeira
Para poder brincar você vai precisar ter o SQL Server instalado na sua máquina local. Você poderia também usar o servidor remoto gratuito que eu indiquei no artigo : ASP.NET - Servidor ASP.NET grátis com acesso a SQL Server mas o código teria que ser adaptado para ASP.NET e então não vale.
A nossa brincadeira vai usar o banco de dados Northwind e as tabelas Orders e Customers.
Verifique se no seu SQL Server existe o banco de dados Northwind e as tabelas Orders e Customers. Você pode fazer isto usando o Enterprise Manager e verificar em seus bancos de dados e tabelas , conforme mostra a figura abaixo obtida para minha máquina local:
Vamos criar um projeto do tipo Windows Application com o nome de exemplo_sp . Nosso projeto possuirá 4 formulários e um módulo :
O formulário MDI Pai - Menu.vb - que conterá um Menu de opções .
O formulário Cria_sp.vb que irá criar a stored procedure no SQL Server
O formulário Executa_sp.vb que irá executar a stored procedure obter o resultado e exibir em um datagrid
O formulário Exclui_sp.vb que irá excluir a stored procedure do SQL Server
O módulo Modulo_sp.vb que irá criar a conexão com o SQL Server
Abaixo temos a figura exibindo os arquivos da solução :
A brincadeira vai começar com a uma conexão ao SQL Server , afinal , sem isto não será possível ter acesso ao banco de dados nem as tabelas. Vamos definir a string de conexão e as variáveis objetos como publicas no arquivo de módulo pois assim elas ficaram visíveis por toda a aplicação.
O
código do arquivo de modulo Modulo_sp.vb é dado abaixo :
Imports System.Data.SqlClient Module Module_sp Public con As String = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Northwind;Data Source=." 'define as variáveis objeto para conexão , dataadapter , dataset e formulários Public sqlcon As New SqlConnection(con) Public da As New SqlDataAdapter Public ds As DataSet Public mdiFilho As New Form End Module |
Note que eu estou usando o namespace : System.Data.SqlClient pois vou fazer uma conexão com o SQL Server.
O formulário Menu.vb contém um menu de opções criado via controle MainMenu :
O código deste formulário é o seguinte :
Public Class Menu Inherits System.Windows.Forms.Form Private
Sub Menu_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs)
Handles MyBase.Closing |
Criando uma stored procedure no SQL Server
Vamos brincar de criar uma stored procedure no SQL Server. Isto será feito no formulário Cria_sp.vb
O código deste formulário é dado abaixo:
Imports System.Data.SqlClient Public Class Cria_sp Inherits System.Windows.Forms.Form Dim txt_cria_sp As String Private Sub Create_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load txt_cria_sp &= "CREATE PROCEDURE exemplo_de_stored_procedure" & vbCrLf txt_cria_sp &= "@CustomerID nchar(5)" & vbCrLf txt_cria_sp &= "AS" & vbCrLf txt_cria_sp &= "SELECT c.CustomerID, c.CompanyName, o.OrderID, o.EmployeeID, o.ShipName from Customers c" & vbCrLf txt_cria_sp &= "JOIN Orders o ON c.CustomerID= o.CustomerID" & vbCrLf txt_cria_sp &= "WHERE c.CustomerID= @CustomerID" & vbCrLf & vbCrLf TextBox1.Text = txt_cria_sp End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim cmd As New SqlCommand(txt_cria_sp, sqlcon) sqlcon.Open() Try cmd.ExecuteNonQuery() MsgBox("A stored procedure : exemplo_de_stored_procedure , foi criada com sucesso", MsgBoxStyle.Information, Me.Text) Catch sqlex As SqlException MsgBox(" Erro Numero : " & sqlex.Number & vbCrLf & " Erro Descrição : " & sqlex.Message & vbCrLf & " Erro na linha no : " & sqlex.LineNumber) Catch exc As Exception MsgBox(exc.Message & " " & exc.StackTrace) Finally sqlcon.Close() End Try End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.Close() End Sub End Class |
A nossa storede procedure recebeu o nome de : exemplo_de_stored_procedure e foi criada com o comando CREATE PROCEDURE conforme o seguinte código:
txt_cria_sp
&= "CREATE PROCEDURE exemplo_de_stored_procedure" & vbCrLf
txt_cria_sp &= "@CustomerID nchar(5)" & vbCrLf
txt_cria_sp &= "AS" & vbCrLf
txt_cria_sp &= "SELECT c.CustomerID, c.CompanyName, o.OrderID, o.EmployeeID, o.ShipName
from Customers c" & vbCrLf
txt_cria_sp &= "JOIN Orders o ON c.CustomerID= o.CustomerID" & vbCrLf
txt_cria_sp &= "WHERE c.CustomerID= @CustomerID" & vbCrLf & vbCrLf
Nela estou selecionando os clientes da tabela Customers que possuem pedidos na tabela Orders. O parâmetro de entrada será o CustomerID.
O tratamento de erro captura SQLException e Exception usando o bloco try/Catch/Finally. Observe que estou sempre fechando a conexão no bloco Finally. Lembre-se que este bloco sempre será executado.
Executando a stored procedure
O formulário Executa_sp , mostrado abaixo , contém o código que executa a stored procedure , preenche um dataset e exibe o resultado em um datagrid.
Ao lado o formulário exibindo o resultado da execução da stored procedure para o código do cliente - CustomerID - igual a ALFKI |
O código do formulário é :
Public Class
Executa_sp Inherits System.Windows.Forms.Form
Private Sub Button1_Click(ByVal
sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click With input End Class |
Excluindo a stored Procedure
Para terminar a brincadeira vamos a formulário que exclui a stored procedure : Exclui_sp.
Seu código é dado a seguir:
Imports System.Data.SqlClient Public Class Exclui_sp Inherits System.Windows.Forms.Form Dim txt_excluir_sp As String Private Sub Drop_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load TextBox1.Clear() txt_excluir_sp &= "DROP PROCEDURE exemplo_de_stored_procedure" TextBox1.Text = txt_excluir_sp End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim cmd As New SqlCommand(txt_excluir_sp, sqlcon) sqlcon.Open() Try cmd.ExecuteNonQuery() MsgBox("A Stored Procedure 'exemplo_de_stored_procedure' foi excluida do SQL Server.", MsgBoxStyle.Information, Me.Text) Catch sqlex As SqlException MsgBox(" Erro Numero : " & sqlex.Number & vbCrLf & " Erro Descrição : " & sqlex.Message & vbCrLf & " Erro na linha no : " & sqlex.LineNumber) Catch exc As Exception MsgBox(exc.Message) Finally sqlcon.Close() End Try End Sub End Class |
A exclusão da stored procedure é feita pelo comando DROP PROCEDURE conforme abaixo:
txt_excluir_sp &= "DROP PROCEDURE exemplo_de_stored_procedure"
Em todos os formulários com exceção do Menu.vb temos o botão Sair cujo código é :
Me.Close() |
E acabou a brincadeira , até a próxima ...
Veja os Destaques e novidades do SUPER DVD VB (sempre atualizado) : clique e confira ! Quer migrar para o VB .NET ? Veja mais sistemas completos para a plataforma .NET no Super DVD .NET , confira... Quer aprender C# ??
Chegou o
Super DVD C# com exclusivo material de
suporte e vídeo aulas com curso básico sobre C# |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências: