VB.NET 2005 - Criando uma aplicação completa via código II
Neste artigo eu vou mostrar como criar as classes contendo as regras de negócio e a camada de dados da aplicação que foi definida no artigo VB.NET 2005 - Criando uma aplicação completa via código I. Apenas para lembrar, não estou usando os assistentes do VB 2005; estou fazendo tudo via código e usando os controles disponíveis na barra de ferramentas do VB 2005.
Vamos começar criando um novo projeto no VB 2005 Express do tipo Windows Application usando a linguagem VB.NET. Eu chamei o projeto de AdnAcessoDados.
Vamos começar criando a primeira classe , esta classe que vou refere-se a classe que exibe os dados dos alunos. No menu Project selecione Add Class e informe o nome AlunosDetalhes.vb. A seguir inclua o seguinte código na classe AlunosDetalhes.
Imports System Public Class AlunosDetalhes Private cAlunoID As Integer Private cNome As String Private cEndereco As String Private cEmail As String Public Sub New() End Sub Public Sub New(ByVal AlunoID As Integer, ByVal Nome As String, ByVal Endereco As String, ByVal Email As String) Me.cAlunoID = AlunoID Me.cNome = Nome Me.cEndereco = Endereco Me.cEmail = Email End Sub Public Property AlunoID() As Integer Get Return cAlunoID End Get Set(ByVal value As Integer) cAlunoID = value End Set End Property Public Property Nome() As String Get Return cNome End Get Set(ByVal value As String) cNome = value End Set End Property Public Property Endereco() As String Get Return cEndereco End Get Set(ByVal value As String) cEndereco = value End Set End Property Public Property Email() As String Get Return cEmail End Get Set(ByVal value As String) cEmail = value End Set End Property End Class |
Esta classe define as propriedades AlunoID, Nome,Endereco e Email que são as informações dos alunos que eu desejo tratar e que estão armazenadas na tabela Alunos definida no artigo anterior.
Note que eu criei dois construtores (Sub New) para a classe, um vazio e outro onde atribuo os valores aos membros da classe.
A outra classe que vou implementar será responsável pelo acesso aos dados e pelas operações de selecionar, incluir, alterar e excluir dados da tabela Alunos.
No menu Project selecione a opção Add Class e informe o nome AcessoBD.vb. A seguir inclua o seguinte código nesta classe:
Imports System Imports System.Data Imports System.Data.SqlClient Imports System.Collections Imports System.Configuration Public Class AcessoBD Private conexaoBD As String Public Sub New() conexaoBD = My.Settings.strConn End Sub Public Function InsertAluno(ByVal aluno As AlunosDetalhes) As Integer Dim conn As SqlConnection = New SqlConnection(conexaoBD) Dim cmd As SqlCommand = conn.CreateCommand cmd.CommandType = CommandType.StoredProcedure cmd.CommandText = "procInsertAluno" cmd.Parameters.Add(New SqlParameter("@AlunoID", SqlDbType.Int)) cmd.Parameters("@AlunoID").Direction = ParameterDirection.Output cmd.Parameters.Add(New SqlParameter("@Nome", SqlDbType.NVarChar, 50)) cmd.Parameters("@Nome").Value = aluno.Nome cmd.Parameters.Add(New SqlParameter("@Endereco", SqlDbType.NVarChar, 50)) cmd.Parameters("@Endereco").Value = aluno.Endereco cmd.Parameters.Add(New SqlParameter("@Email", SqlDbType.NVarChar, 50)) cmd.Parameters("@Email").Value = aluno.Email Try conn.Open() Dim registrosAfetados As Integer = cmd.ExecuteNonQuery Dim alunoId As Integer If Not (registrosAfetados = 0) Then alunoId = CType(cmd.Parameters("@AlunoID").Value, Integer) Else alunoId = -1 End If conn.Close() Return alunoId Catch ex As SqlException Throw New ApplicationException("Erro de acesso aos dados") Finally conn.Close() End Try End Function Public Function UpdateAluno(ByVal aluno As AlunosDetalhes) As Integer Dim conn As SqlConnection = New SqlConnection(conexaoBD) Dim cmd As SqlCommand = conn.CreateCommand cmd.CommandType = CommandType.StoredProcedure cmd.CommandText = "procUpdateAluno" cmd.Parameters.Add(New SqlParameter("@AlunoID", SqlDbType.Int)) cmd.Parameters("@AlunoID").Value = aluno.AlunoID cmd.Parameters.Add(New SqlParameter("@Nome", SqlDbType.NVarChar, 20)) cmd.Parameters("@Nome").Value = aluno.Nome cmd.Parameters.Add(New SqlParameter("@Endereco", SqlDbType.NVarChar, 20)) cmd.Parameters("@Endereco").Value = aluno.Endereco cmd.Parameters.Add(New SqlParameter("@Email", SqlDbType.NVarChar, 50)) cmd.Parameters("@Email").Value = aluno.Email Try conn.Open() Dim registrosAfetados As Integer = cmd.ExecuteNonQuery Return registrosAfetados Catch ex As SqlException Throw New ApplicationException("Erro de acesso aos dados") Finally conn.Close() End Try End Function Public Function DeleteAluno(ByVal AlunoID As Integer) As Integer Dim conn As SqlConnection = New SqlConnection(conexaoBD) Dim cmd As SqlCommand = conn.CreateCommand cmd.CommandType = CommandType.StoredProcedure cmd.CommandText = "procDeleteAluno" cmd.Parameters.Add(New SqlParameter("@AlunoID", SqlDbType.Int)) cmd.Parameters("@AlunoID").Value = AlunoID Try conn.Open() Dim registrosAfetados As Integer = cmd.ExecuteNonQuery conn.Close() Return registrosAfetados Catch ex As SqlException Throw New ApplicationException("Erro ao excluir Aluno.") Finally conn.Close() End Try End Function Public Function GetAluno(ByVal AlunoID As Integer) As AlunosDetalhes Dim conn As SqlConnection = New SqlConnection(conexaoBD) Dim cmd As SqlCommand = conn.CreateCommand cmd.CommandType = CommandType.StoredProcedure cmd.CommandText = "procGetAluno" cmd.Parameters.Add(New SqlParameter("@AlunoID", SqlDbType.Int)) cmd.Parameters("@AlunoID").Value = AlunoID Try conn.Open() Dim dr As SqlDataReader = cmd.ExecuteReader Dim aluno As AlunosDetalhes If dr.Read Then aluno = New AlunosDetalhes(CType(dr("AlunoID"), Integer), CType(dr("AlunoNome"), String), _ CType(dr("AlunoEndereco"), String), CType(dr("AlunoEmail"), String)) Else aluno = Nothing End If dr.Close() conn.Close() Return aluno Catch ex As SqlException Throw New ApplicationException("Erro : " & Microsoft.VisualBasic.Chr(10) & "" + ex.Message) End Try End Function Public Function GetTodosAlunos() As AlunosDetalhes() Dim conn As SqlConnection = New SqlConnection(conexaoBD) Dim cmd As SqlCommand = conn.CreateCommand cmd.CommandType = CommandType.StoredProcedure cmd.CommandText = "procGetTodosAlunos" Dim arrrAluno As ArrayList = New ArrayList Try conn.Open() Dim dr As SqlDataReader = cmd.ExecuteReader Dim aluno As AlunosDetalhes If dr.HasRows Then While dr.Read aluno = New AlunosDetalhes(CType(dr("AlunoID"), Integer), CType(dr("AlunoNome"), String), _ CType(dr("AlunoEndereco"), String), CType(dr("AlunoEmail"), String)) arrrAluno.Add(aluno) End While Else aluno = Nothing End If dr.Close() conn.Close() Return CType(arrrAluno.ToArray(GetType(AlunosDetalhes)), AlunosDetalhes()) Catch ex As SqlException Throw New ApplicationException("Erro : " & Microsoft.VisualBasic.Chr(10) & "" + ex.Message) End Try End Function End Class |
A classe AcessoBD possui os seguintes métodos:
Os métodos para incluir, atualizar e excluir dados da tabela usam o método ExecuteNonQuery pois não retorna registros na operação. Para saber mais sobre este assunto leia o artigo: VB.NET - Operações com dados que não retornam registros.
Os métodos para obter dados da tabela usam o método ExecuteReader. Para mais detalhes acompanhe o artigo : VB.NET - Operações com dados que retornam registros.
A string de conexão com o banco de dados usada será armazenada usando o recurso My.Settings conforme os seguintes passos:
Estamos usando os seguintes namespaces nesta classe:
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Collections
Imports System.Configuration Com isto preparamos o terreno para criar a interface com o usuário e implementar as funcionalidades da aplicação.
Aguarde a continuação deste artigo em : VB.NET 2005 - Criando uma aplicação completa via código III
Até o próximo artigo .NET
José Carlos Macoratti