CLASSE DAL PROFISSIONAL.NOVA TENTATIVA
Boa tarde,Colegas!
Depois de muitas dúvidas sanadas pelos colegas em tópicos anteriores, estou postando
novamente minha classe . Lembrando que meu objetivo é o seguinte:
Criar uma classe DAL,que eu possa utilizar em projetos OO em .NET. Tanto para aplicações
WinfForm ,quanto WEBForm.
Tendo isto em mente,peço novamente aos colegas para não ter [ô]Dó[Ô].Apontem as falhas que perceberem e
eu agradeço.
--------------------------------------------------------------------------------------------------------------------------------
Imports System.Data.SqlClient
Public Class ClFonteDados
#Region [Ô]Declaração de variáveis[Ô]
Dim StringDeConexao As String
Dim Con As SqlConnection
Dim Adap As SqlDataAdapter
Dim Cmd As SqlCommand
Dim Dr As SqlDataReader
#End Region
#Region [Ô]Construtor[Ô]
Public Sub New()
[ô]------------------------
[ô]Define String de conexão
[ô]------------------------
[ô]Sql Server
StringDeConexao = [Ô][Ô]
End Sub
#End Region
#Region [Ô]Create[Ô]
Public Function Create(ByVal Cl As ClCliente) As Boolean
Try
[ô]Cria objeto conexão
Con = New SqlConnection(StringDeConexao)
[ô]Verifica conexão
Select Case Con.State
Case Is = ConnectionState.Closed
[ô]Abre conexão
Con.Open()
[ô]Cria objeto de comando
Cmd = New SqlCommand([Ô]Create[Ô], Con)
[ô]Define tipo de comando
Cmd.CommandType = CommandType.StoredProcedure
[ô]Adiciona parâmetros
Cmd.Parameters.AddWithValue([Ô]@nome[Ô], Cl.nome)
Cmd.Parameters.AddWithValue([Ô]@End[Ô], Cl.endereco)
Cmd.Parameters.AddWithValue([Ô]@Tel[Ô], Cl.tel)
[ô]Executa
Cmd.ExecuteNonQuery()
[ô]Retorna valor
Return True
Case Else
[ô]Retorna valor
Return False
End Select
Catch ex As SqlException
[ô]Registra Log exceção
[ô]Log
[ô]Trata exceção
Throw New Exception(ex.Message)
[ô]Retorna valor
Return False
Finally
[ô]Fecha conexão
Select Case Con.State
Case Is = ConnectionState.Open
Con.Close()
Case Else
End Select
[ô]Descarta objetos
Con.Dispose()
Cmd.Dispose()
End Try
End Function
#End Region
#Region [Ô]Read[Ô]
Public Function Read(ByVal Cl As ClCliente) As SqlDataReader
Try
[ô]Cria objeto conexão
Con = New SqlConnection(StringDeConexao)
[ô]Verifica conexão
Select Case Con.State
Case Is = ConnectionState.Closed
[ô]Abre conexão
Con.Open()
[ô]Cria conexão
Dim cmd As SqlCommand = Con.CreateCommand
[ô]Define instrução Sql
cmd.CommandText = [Ô]Select * From Tb_Cliente Where Nome = [ô] [Ô][Ô] & Cl.nome & [Ô][ô][Ô]
[ô]Executa
Dr = cmd.ExecuteReader()
[ô]Retorna valor
Return Dr
Case Else
[ô]Retorna valor
Return Nothing
End Select
Catch ex As Exception
[ô]Registra Log exceção
[ô]Log
[ô]Trata exceção
Throw New Exception(ex.Message)
[ô]Retorna valor
Return Nothing
Finally
[ô]Fecha conexão
Select Case Con.State
Case Is = ConnectionState.Open
Con.Close()
Case Else
End Select
[ô]Descarta objetos
Con.Dispose()
Cmd.Dispose()
End Try
End Function
#End Region
#Region [Ô]Update[Ô]
Public Function Update(ByVal Cl As ClCliente) As Boolean
Try
[ô]Cria objeto conexão
Con = New SqlConnection(StringDeConexao)
[ô]Verifica conexão
Select Case Con.State
Case Is = ConnectionState.Closed
[ô]Abre conexão
Con.Open()
[ô]Cria objeto de comando
Cmd = New SqlCommand([Ô]Update[Ô], Con)
[ô]Define tipo de comando
Cmd.CommandType = CommandType.StoredProcedure
[ô]Adiciona parâmetros
Cmd.Parameters.AddWithValue([Ô]@Cod[Ô], Cl.Cod)
Cmd.Parameters.AddWithValue([Ô]@nome[Ô], Cl.nome)
Cmd.Parameters.AddWithValue([Ô]@End[Ô], Cl.endereco)
Cmd.Parameters.AddWithValue([Ô]@Tel[Ô], Cl.tel)
[ô]Executa
Cmd.ExecuteNonQuery()
[ô]Retorna valor
Return True
Case Else
[ô]Retorna valor
Return False
End Select
Catch ex As Exception
[ô]Registra Log exceção
[ô]Log
[ô]Trata exceção
Throw New Exception(ex.Message)
[ô]Retorna valor
Return False
Finally
[ô]Fecha conexão
Select Case Con.State
Case Is = ConnectionState.Open
Con.Close()
Case Else
End Select
[ô]Descarta objetos
Con.Dispose()
Cmd.Dispose()
End Try
End Function
#End Region
#Region [Ô]Delete[Ô]
Public Function Delete(ByVal Cl As ClCliente) As Boolean
Try
[ô]Cria objeto conexão
Con = New SqlConnection(StringDeConexao)
[ô]Verifica conexão
Select Case Con.State
Case Is = ConnectionState.Closed
[ô]Abre conexão
Con.Open()
[ô]Cria objeto de comando
Cmd = New SqlCommand([Ô]Delete[Ô], Con)
[ô]Define tipo de comando
Cmd.CommandType = CommandType.StoredProcedure
[ô]Adiciona parâmetros
Cmd.Parameters.AddWithValue([Ô]@Cod[Ô], Cl.Cod)
[ô]Executa
Cmd.ExecuteNonQuery()
[ô]Retorna valor
Return True
Case Else
[ô]Retorna valor
Return False
End Select
Catch ex As Exception
[ô]Registra Log exceção
[ô]Log
[ô]Trata exceção
Throw New Exception(ex.Message)
[ô]Retorna valor
Return False
Finally
[ô]Fecha conexão
Select Case Con.State
Case Is = ConnectionState.Open
Con.Close()
Case Else
End Select
[ô]Descarta objetos
Con.Dispose()
Cmd.Dispose()
End Try
End Function
#End Region
End Class
Depois de muitas dúvidas sanadas pelos colegas em tópicos anteriores, estou postando
novamente minha classe . Lembrando que meu objetivo é o seguinte:
Criar uma classe DAL,que eu possa utilizar em projetos OO em .NET. Tanto para aplicações
WinfForm ,quanto WEBForm.
Tendo isto em mente,peço novamente aos colegas para não ter [ô]Dó[Ô].Apontem as falhas que perceberem e
eu agradeço.
--------------------------------------------------------------------------------------------------------------------------------
Imports System.Data.SqlClient
Public Class ClFonteDados
#Region [Ô]Declaração de variáveis[Ô]
Dim StringDeConexao As String
Dim Con As SqlConnection
Dim Adap As SqlDataAdapter
Dim Cmd As SqlCommand
Dim Dr As SqlDataReader
#End Region
#Region [Ô]Construtor[Ô]
Public Sub New()
[ô]------------------------
[ô]Define String de conexão
[ô]------------------------
[ô]Sql Server
StringDeConexao = [Ô][Ô]
End Sub
#End Region
#Region [Ô]Create[Ô]
Public Function Create(ByVal Cl As ClCliente) As Boolean
Try
[ô]Cria objeto conexão
Con = New SqlConnection(StringDeConexao)
[ô]Verifica conexão
Select Case Con.State
Case Is = ConnectionState.Closed
[ô]Abre conexão
Con.Open()
[ô]Cria objeto de comando
Cmd = New SqlCommand([Ô]Create[Ô], Con)
[ô]Define tipo de comando
Cmd.CommandType = CommandType.StoredProcedure
[ô]Adiciona parâmetros
Cmd.Parameters.AddWithValue([Ô]@nome[Ô], Cl.nome)
Cmd.Parameters.AddWithValue([Ô]@End[Ô], Cl.endereco)
Cmd.Parameters.AddWithValue([Ô]@Tel[Ô], Cl.tel)
[ô]Executa
Cmd.ExecuteNonQuery()
[ô]Retorna valor
Return True
Case Else
[ô]Retorna valor
Return False
End Select
Catch ex As SqlException
[ô]Registra Log exceção
[ô]Log
[ô]Trata exceção
Throw New Exception(ex.Message)
[ô]Retorna valor
Return False
Finally
[ô]Fecha conexão
Select Case Con.State
Case Is = ConnectionState.Open
Con.Close()
Case Else
End Select
[ô]Descarta objetos
Con.Dispose()
Cmd.Dispose()
End Try
End Function
#End Region
#Region [Ô]Read[Ô]
Public Function Read(ByVal Cl As ClCliente) As SqlDataReader
Try
[ô]Cria objeto conexão
Con = New SqlConnection(StringDeConexao)
[ô]Verifica conexão
Select Case Con.State
Case Is = ConnectionState.Closed
[ô]Abre conexão
Con.Open()
[ô]Cria conexão
Dim cmd As SqlCommand = Con.CreateCommand
[ô]Define instrução Sql
cmd.CommandText = [Ô]Select * From Tb_Cliente Where Nome = [ô] [Ô][Ô] & Cl.nome & [Ô][ô][Ô]
[ô]Executa
Dr = cmd.ExecuteReader()
[ô]Retorna valor
Return Dr
Case Else
[ô]Retorna valor
Return Nothing
End Select
Catch ex As Exception
[ô]Registra Log exceção
[ô]Log
[ô]Trata exceção
Throw New Exception(ex.Message)
[ô]Retorna valor
Return Nothing
Finally
[ô]Fecha conexão
Select Case Con.State
Case Is = ConnectionState.Open
Con.Close()
Case Else
End Select
[ô]Descarta objetos
Con.Dispose()
Cmd.Dispose()
End Try
End Function
#End Region
#Region [Ô]Update[Ô]
Public Function Update(ByVal Cl As ClCliente) As Boolean
Try
[ô]Cria objeto conexão
Con = New SqlConnection(StringDeConexao)
[ô]Verifica conexão
Select Case Con.State
Case Is = ConnectionState.Closed
[ô]Abre conexão
Con.Open()
[ô]Cria objeto de comando
Cmd = New SqlCommand([Ô]Update[Ô], Con)
[ô]Define tipo de comando
Cmd.CommandType = CommandType.StoredProcedure
[ô]Adiciona parâmetros
Cmd.Parameters.AddWithValue([Ô]@Cod[Ô], Cl.Cod)
Cmd.Parameters.AddWithValue([Ô]@nome[Ô], Cl.nome)
Cmd.Parameters.AddWithValue([Ô]@End[Ô], Cl.endereco)
Cmd.Parameters.AddWithValue([Ô]@Tel[Ô], Cl.tel)
[ô]Executa
Cmd.ExecuteNonQuery()
[ô]Retorna valor
Return True
Case Else
[ô]Retorna valor
Return False
End Select
Catch ex As Exception
[ô]Registra Log exceção
[ô]Log
[ô]Trata exceção
Throw New Exception(ex.Message)
[ô]Retorna valor
Return False
Finally
[ô]Fecha conexão
Select Case Con.State
Case Is = ConnectionState.Open
Con.Close()
Case Else
End Select
[ô]Descarta objetos
Con.Dispose()
Cmd.Dispose()
End Try
End Function
#End Region
#Region [Ô]Delete[Ô]
Public Function Delete(ByVal Cl As ClCliente) As Boolean
Try
[ô]Cria objeto conexão
Con = New SqlConnection(StringDeConexao)
[ô]Verifica conexão
Select Case Con.State
Case Is = ConnectionState.Closed
[ô]Abre conexão
Con.Open()
[ô]Cria objeto de comando
Cmd = New SqlCommand([Ô]Delete[Ô], Con)
[ô]Define tipo de comando
Cmd.CommandType = CommandType.StoredProcedure
[ô]Adiciona parâmetros
Cmd.Parameters.AddWithValue([Ô]@Cod[Ô], Cl.Cod)
[ô]Executa
Cmd.ExecuteNonQuery()
[ô]Retorna valor
Return True
Case Else
[ô]Retorna valor
Return False
End Select
Catch ex As Exception
[ô]Registra Log exceção
[ô]Log
[ô]Trata exceção
Throw New Exception(ex.Message)
[ô]Retorna valor
Return False
Finally
[ô]Fecha conexão
Select Case Con.State
Case Is = ConnectionState.Open
Con.Close()
Case Else
End Select
[ô]Descarta objetos
Con.Dispose()
Cmd.Dispose()
End Try
End Function
#End Region
End Class
Ok, vou fazer um projetinho pra vc como exatamente tem que ser, mas em C#, pode ser?
Aceito qualquer ajuda,Kerlumk !!!
Mas....Ainda esta muito longe do ideal,para uma classe DAL profissional?????
Mas....Ainda esta muito longe do ideal,para uma classe DAL profissional?????
Não muito. Você está ignorando o conceito de Entidade, só isso...
Ok, fiz um exemplo simples pra você. Para funcionar, você precisa ter o SQL Express instalado e a instância dele deve se chamar [Ô]SQLEXPRESS[Ô]. No arquivo anexo, tem um arquivo chamado [Ô]backup.bak[Ô], é o banco de dados para essa aplicação. Basta restaurar na sua instância SQLEXPRESS, abrir a solution e rodar. é um exemplo bem simplificado com só uma tabela, que eu criei usando isto. é um programa que eu fiz que [Ô]gera[Ô] o código CRUD para um banco de dados, inclusive se esse banco tiver tabelas dependentes uma da outra, isto é, com FK. Nesse caso ele gera propriedades em cada entidade relativa à essa dependência.
IMPORTANTE: Quando fizer o restore do backup do banco, o database deve se chamar [Ô]MeuBanco[Ô]
O CRUD incluÃdo, tem todas as funcionalidades de um sistema CRUD, Inserção, Alteração, Deleção e Procura. Incluindo, formação dinâmica de parâmetros de consulta, com operador variável. Você simplesmente cria uma lista de argumentos de procura e passa para a função de procura, que monta a query dinamicamente, a executa e retorna uma lista de objetos correspondentes. A connectionstring fica em um arquivo encriptado, fora da aplicação. Possui capacidade de criar LOG de tudo que o crud executar, incluindo as consultas. Enfim, é completinho...
Muito obrigado,Kerlunk!
Não tenho o SqlServer Express instalado.Irei providenciar a instalação e fazer a instalação.
Em seguida vou começar a estudar seu exemplo.
Não tenho o SqlServer Express instalado.Irei providenciar a instalação e fazer a instalação.
Em seguida vou começar a estudar seu exemplo.
Kerplunk bem que poderia fazer algo do tipo com bd mysql....hehhehehe iria ajuda bastante....
Na verdade, é bem simples, praticamente a mesma coisa. Estou trabalhando para melhorar esse gerador de CRUD, ele vai gerar para SQL Server(MDF e service), MySQL e Oracle
quando fizer pra usar em bd mysql da um toque....to instalando o sql pra testar aqui...
Tópico encerrado , respostas não são mais permitidas