CLASSE DAL PROFISSIONAL.NOVA TENTATIVA

MARCOS 10/10/2012 17:01:15
#411759
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

KERPLUNK 10/10/2012 17:15:22
#411761
Ok, vou fazer um projetinho pra vc como exatamente tem que ser, mas em C#, pode ser?
MARCOS 10/10/2012 17:17:42
#411762
Aceito qualquer ajuda,Kerlumk !!!
Mas....Ainda esta muito longe do ideal,para uma classe DAL profissional?????
KERPLUNK 10/10/2012 17:34:54
#411763
Não muito. Você está ignorando o conceito de Entidade, só isso...
KERPLUNK 11/10/2012 09:06:44
#411792
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.
KERPLUNK 11/10/2012 09:09:56
#411794
Resposta escolhida
IMPORTANTE: Quando fizer o restore do backup do banco, o database deve se chamar [Ô]MeuBanco[Ô]
KERPLUNK 11/10/2012 09:39:49
#411800
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...
MARCOS 11/10/2012 10:06:54
#411806
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.

KURTGU 11/10/2012 11:27:13
#411818
Kerplunk bem que poderia fazer algo do tipo com bd mysql....hehhehehe iria ajuda bastante....
KERPLUNK 11/10/2012 11:55:40
#411822
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
KURTGU 11/10/2012 12:06:26
#411823
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