 VB.NET 2005 - Criando uma 
aplicação completa via código II
     
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 IntegerGet Return cAlunoID End Get Set(ByVal value As Integer) cAlunoID = value End Set End Property 
    Public Property Nome() As StringGet Return cNome End Get Set(ByVal value As String) cNome = value End Set End Property 
    Public Property Endereco() As StringGet Return cEndereco End Get Set(ByVal value As String) cEndereco = value End Set End Property 
    Public Property Email() As StringGet 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
        Tryconn.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
        Tryconn.Open() Dim dr As SqlDataReader = cmd.ExecuteReader             Dim aluno As AlunosDetalhes
            If dr.HasRows ThenWhile 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