Artigos / Tekever.eu

Artigos de desenvolvimento e opinião em tecnologia.

Secções:

Linux | Windows | .NET / ASP | LAMP | Java | Só Conversa |

 


Classes de Acesso - MySQL

  2008-01-25




Galera vou começar uma série de artigos sobre o desenvolvimento de classes de acesso a bases de dados, irei postar aqui classes para acesso ao MySql (Este post), depois tratarei do PostgreSql e por fim do FireBird.

Importando os namespaces necessários.
Imports System
Imports System.Data
Imports MySql.Data.MySqlClient

Namespace CamadaDados

Public Class MySqlClasse

Criando as instâncias dos Objetos.

  Private MeuDataReader As MySqlDataReader
Private MeuAdaptador As MySqlDataAdapter
Private MinhaTransacao As MySqlTransaction
Private MeuDataTable As DataTable
Private MeuDataSet As DataSet
Private MeuDataTableReader As DataTableReader
Private Conexao, ConexaoTransacao As MySqlConnection
Private Comando, ComandoTransacao As MySqlCommand
Private Parametro, ParametroTransacao As MySqlParameter



Função para criar a conexão, recebendo um parametro que é exatamente a string de conexão.
         Private Function CriarConexao(ByVal StrConexao As String) As
MySqlConnection
Conexao = New MySqlConnection(StrConexao)
Return Conexao
End Function


Função para abrir a conexão existente, perceba que esta é private ou seja acessível apenas dentro da classe.
         Private Function AbrirConexao() As MySqlConnection
Conexao.Open()
Return Conexao
End Function


Função para fechar a conexão, perceba que esta é private ou seja acessível apenas dentro da classe.
         Private Function FecharConexao() As MySqlConnection
Conexao.Close()
Return Conexao
End Function


Função para fechar a conexão, perceba que esta é pública para que seja possível o acesso de fora da classe, recebendo como parâmetro um valor para determinar se deve ser forçado o fechamento ou não.
         Public Function FecharConexao(ByVal ForcarFechamento As
Boolean) As Boolean
If ForcarFechamento Then
If Conexao.State = ConnectionState.Open Then
Try
Conexao.Close()
Return True
Catch ex As Exception
Return False
End Try
Else
Return True
End If
End If
End Function


Função para criar o comando Sql, recebendo como parametro o comando Sql a ser executado e a String de conexão, que vai ser repassada para a função interna CriarConexao.
 
Public Function CriarComando(ByVal StrComando As String, ByVal
StrConexao As String) _
As MySqlCommand
Comando = New MySqlCommand(StrComando)
Comando.Connection = CriarConexao(StrConexao)
Comando.CommandType = CommandType.Text
Return Comando
End Function


Função para chamar uma procedure, quando necessário.
         Public Function CriarProcedure(ByVal Strprocedure As String)
As MySqlCommand
Comando = New MySqlCommand(Strprocedure)
Comando.CommandType = CommandType.StoredProcedure
Return Comando
End Function


Função para criar os parametros do comando ou da procedure, veja que recebe como parâmetros o nome do Parametro, o Valor, o Tipo do parâmetro e o Tamanho.
         Public Function CriarParametro(ByVal StrParametro As String,
ByVal StrValor As String, _
ByVal IntTipo As Integer, ByVal IntTamanho As Integer) As
MySqlCommand
Parametro = New MySqlParameter
Parametro.ParameterName = StrParametro
Select Case (IntTipo)
Case 1
Parametro.MySqlDbType = MySqlDbType.String
Case 2
Parametro.MySqlDbType = MySqlDbType.Int32
Case 3
Parametro.MySqlDbType = MySqlDbType.Date
Case 4
Parametro.MySqlDbType = MySqlDbType.Blob
Case 5
Parametro.MySqlDbType = MySqlDbType.LongBlob
Case 6
Parametro.MySqlDbType = MySqlDbType.Datetime
Case 7
Parametro.MySqlDbType = MySqlDbType.Int64
Case 8
Parametro.MySqlDbType = MySqlDbType.Timestamp
Case 9
Parametro.MySqlDbType = MySqlDbType.LongText
Case 10
Parametro.MySqlDbType = MySqlDbType.Double
Case 11
Parametro.MySqlDbType = MySqlDbType.Decimal
Case 12
Parametro.MySqlDbType = MySqlDbType.Year
Case Else
Parametro.MySqlDbType = MySqlDbType.String
End Select
Parametro.Size = IntTamanho
Parametro.Value = StrValor
Comando.Parameters.Add(Parametro)
Return Comando
End Function


Função para Executar o comando SQL criado anteriormente e retornar os valores num DataReader, lembrando que não posso fechar a conexão aqui, pois o Objeto DataReader é um objeto do tipo conectado.
         Public Function RetornarDatareader() As MySqlDataReader
Try
AbrirConexao()
MeuDataReader = Comando.ExecuteReader
Catch ex As Exception
FecharConexao()
End Try
Return MeuDataReader
End Function


Função para executar o comando Sql criado anteriormente e retornar o resultado num objeto DataTableReader, este Objeto tem a velocidade de um DataReader e as funcionalidades de um DataTable, veja que aqui eu fecho a conexão, ou seja este objeto é desconectado.
         Public Function RetornarDataTableReader(ByVal StrNomeTabela As
String) _
As DataTableReader
Try
AbrirConexao()
MeuAdaptador = New MySqlDataAdapter(Comando)
MeuDataTable = New DataTable(StrNomeTabela)
MeuAdaptador.Fill(MeuDataTable)
MeuDataTableReader = MeuDataTable.CreateDataReader
Catch ex As Exception
FecharConexao()
Finally
FecharConexao()
End Try
Return MeuDataTableReader
End Function


Função para executar o comando Sql criado anteriormente e retornar o resultado num objeto do tipo DataTable.
         Public Function RetornarDataTable(ByVal StrNomeTabela As
String) As DataTable
MeuDataTable = New DataTable(StrNomeTabela)
Try
AbrirConexao()
MeuAdaptador = New MySqlDataAdapter(Comando)
MeuAdaptador.Fill(MeuDataTable)
Catch ex As Exception
FecharConexao()
Finally
FecharConexao()
End Try
Return MeuDataTable
End Function


Função para executar o comando Sql criado anteriormente e retornar o resultado num objeto do tipo DataSet. Por estar trabalhando com desenvolvimento OO não uso esta função na minha aplicação, desenvolvi apenas para deixar a classe completa.
         Public Function RetornarDataSet() As DataSet
MeuDataSet = New DataSet
Try
AbrirConexao()
MeuAdaptador = New MySqlDataAdapter(Comando)
MeuAdaptador.Fill(MeuDataSet)
Catch ex As Exception
FecharConexao()
Finally
FecharConexao()
End Try
Return MeuDataSet
End Function


Função para executar comandos que não retornam valores, o inteiro retornado é apenas indicativo da quantidade de registros afetados pelo comando Sql.
         Public Function ExecutarInsertUpdateDelete() As Integer
Dim Qt As Integer = 0
Try
AbrirConexao()
Qt = Comando.ExecuteNonQuery
Catch ex As Exception
FecharConexao()
Finally
FecharConexao()
End Try
Return Qt
End Function


Função para executar comandos Sql que retornam apenas um registro (Agregação), como Sum, Count, retornar também a chave primária do registro. Este comando é bem performático.


Criando as instâncias dos Objetos.
         Public Function ExecutarEscalar() As String
Dim Retorno As String = ""
Try
AbrirConexao()
Retorno = CType(Comando.ExecuteScalar, String)
Catch ex As Exception
FecharConexao()
Finally
FecharConexao()
End Try
Return Retorno
End Function


End Class

End Namespace




Escrito por Guilherme de Carvalho Carneiro
Website do autor: http://guilhermedotnet.spaces.live.com
Dados do autor: www.advogaweb.com.br

Comentários

Faça um comentário

Comentário

Nome
E-mail

Este comentário só ficará válido depois de fazer clique no link que lhe será enviado já a seguir para o e-mail indicado. Como tal garanta que o seu e-mail está válido e operacional, se não receber o nosso e-mail verifique os seus filtros de SPAM, ou a caixa de Lixo/Trash do seu cliente de e-mail.

 

Avaliar artigo

Avalie este artigo

 



Nome
E-mail

Este voto só ficará contabilizado depois de fazer clique no link que lhe será enviado já a seguir para o e-mail indicado. Como tal garanta que o seu e-mail está válido e operacional, se não receber o nosso e-mail verifique os seus filtros de SPAM, ou a caixa de Lixo/Trash do seu cliente de e-mail.

 

 

 

 

Recomendar este artigo a alguém

Envie a alguém conhecido

De:  
Nome E-mail
 
Para:  
Nome E-mail
Será enviado um link da página deste artigo para o e-mail que indicar como destino.