Class Libray de acesso ao PostgreSQL.
Boa noite.
Estou tentando desenvolver uma class libray para acesso ao PostgreSQL, como mostrado no código a seguir:
Imports Npgsql
Imports NpgsqlTypes
Imports System.Data
Public Class PostgresqlDAL
Private PgConexao As NpgsqlConnection
Private PgComando As NpgsqlCommand
Private PgParametro As NpgsqlParameter
Private PgAdaptador As NpgsqlDataAdapter
Private PgTransacao As NpgsqlTransaction
Private PgDataReader As NpgsqlDataReader
Private Ds As DataSet
Private Dt As DataTable
Private Dtr As DataTableReader
''' <summary>
''' Fuñção interna para criar a conexão
''' </summary>
''' <param name="str_conexao">String da conexão</param>
''' <returns>Conexão</returns>
''' <remarks></remarks>
Private Function cria_conexao(ByVal str_conexao As String) As NpgsqlConnection
PgConexao = New NpgsqlConnection(str_conexao)
Return PgConexao
End Function
''' <summary>
''' Função interna para abrir a conexão no último momento
''' </summary>
''' <returns>Conexão</returns>
''' <remarks></remarks>
Private Function abrir_conexao() As NpgsqlConnection
PgConexao.Open()
Return PgConexao
End Function
''' <summary>
''' Função para fechar a conexão aberta
''' </summary>
''' <remarks></remarks>
Public Sub fechar_conexao()
If PgConexao.State = ConnectionState.Open Then
PgConexao.Close()
End If
End Sub
''' <summary>
''' Função para criar o comando Sql a ser executado
''' </summary>
''' <param name="str_comando">String com o comando a ser executado</param>
''' <param name="str_conexao">String com a conexão</param>
''' <returns>Comando SQl</returns>
''' <remarks></remarks>
Public Function criar_comando(ByVal str_comando As String, ByVal str_conexao As String) As NpgsqlCommand
PgComando = New NpgsqlCommand(str_comando, cria_conexao(str_conexao))
PgComando.CommandType = CommandType.Text
PgComando.CommandTimeout = 60
Return PgComando
End Function
''' <summary>
''' Função para criar os parametros para execução do comando Sql
''' </summary>
''' <param name="str_chave">Nome do parâmetro</param>
''' <param name="str_valor">Valor do parâmetro</param>
''' <param name="int_tipo">Tipo do parâmetro: 1 - Varchar, 2 - Inteiro, 3 - Inteiro Grande, 4 - Booleano, 5 - Char, 6 - Bytea, 7 - Data, 8 - Double, 9 - Endereço Ip, 10 - Numérico, 11 - Real, 12 - Texto, 13 - Time, 14 - TimeStamp </param>
''' <returns>Comando SQl</returns>
''' <remarks></remarks>
[b]Public Function criar_parametro(ByVal str_chave As String, ByVal str_valor As String, ByVal int_tipo As Integer) As NpgsqlCommand
Dim TipoParametro As New NpgsqlDbType
PgParametro = New NpgsqlParameter()
Try
Select Case int_tipo
Case 1 'Varchar
TipoParametro = NpgsqlDbType.Varchar
Case 2 'Inteiro
TipoParametro = NpgsqlDbType.Integer
Case 3 'Inteiro Grande
TipoParametro = NpgsqlDbType.Bigint
Case 4 'Boolean
TipoParametro = NpgsqlDbType.Boolean
Case 5 'Char
TipoParametro = NpgsqlDbType.Char
Case 6 'Bytea
TipoParametro = NpgsqlDbType.Bytea
Case 7 'Data
TipoParametro = NpgsqlDbType.Date
Case 8 'Double
TipoParametro = NpgsqlDbType.Double
Case 9 'Endereço IP
TipoParametro = NpgsqlDbType.Inet
Case 10 'Numérico
TipoParametro = NpgsqlDbType.Numeric
Case 11 'Real
TipoParametro = NpgsqlDbType.Real
Case 12 'Texto
TipoParametro = NpgsqlDbType.Text
Case 13 'Time
TipoParametro = NpgsqlDbType.Time
Case 14 'TimeStamp, Data e Hora
TipoParametro = NpgsqlDbType.Timestamp
End Select
PgParametro.ParameterName = str_chave.ToString
PgParametro.NpgsqlDbType = TipoParametro
PgParametro.Value = str_valor
PgComando.Parameters.Add(PgParametro)
Catch ex As Exception
Call Me.fechar_conexao()
End Try
Return PgComando
End Function[/b]
''' <summary>
''' Função para executar comandos de inserção, deleção, atualização
''' </summary>
''' <returns>Inteiro com a quantidade de registros afetados pela execução</returns>
''' <remarks></remarks>
Public Function executar_insertupdatedelete() As Integer
Dim i As Integer = 0
Try
Call Me.abrir_conexao()
i = PgComando.ExecuteNonQuery
Catch ex As Exception
Finally
Call Me.fechar_conexao()
End Try
Return i
End Function
''' <summary>
''' Função para executar comandos que retornem apenas um registro
''' </summary>
''' <returns>String com o resultado da execução do comando SQL</returns>
''' <remarks></remarks>
Public Function executar_escalar() As String
Dim str_resultado As String = ""
Try
Call Me.abrir_conexao()
str_resultado = CType(PgComando.ExecuteScalar, String)
Catch ex As Exception
Finally
Call Me.fechar_conexao()
End Try
Return str_resultado
End Function
''' <summary>
''' Função para executar comandos que retornem objetos do tipo DataReader
''' </summary>
''' <returns>NpgsqlDataReader</returns>
''' <remarks></remarks>
Public Function retornar_datareader() As NpgsqlDataReader
Try
Call Me.abrir_conexao()
PgDataReader = PgComando.ExecuteReader
Catch ex As Exception
Finally
Call Me.fechar_conexao()
End Try
Return PgDataReader
End Function
''' <summary>
''' Função para executar comandos que retornem objetos do tipo DataSet
''' </summary>
''' <returns>DataSet</returns>
''' <remarks></remarks>
Public Function retornar_dataset() As DataSet
Ds = New Data.DataSet
Try
Call Me.abrir_conexao()
PgAdaptador = New NpgsqlDataAdapter(PgComando)
PgAdaptador.Fill(Ds)
Catch ex As Exception
Finally
Call Me.fechar_conexao()
End Try
Return Ds
End Function
''' <summary>
''' Função para executar comandos que retornem objetos do tipo DataTable
''' </summary>
''' <param name="str_tabela">Nome a ser dado ao objeto DataTable</param>
''' <returns>DataTable</returns>
''' <remarks></remarks>
Public Function retornar_datatable(ByVal str_tabela As String) As DataTable
Dt = New DataTable(str_tabela)
Try
Call Me.abrir_conexao()
PgAdaptador = New NpgsqlDataAdapter(PgComando)
PgAdaptador.Fill(Dt)
Catch ex As Exception
Finally
Call Me.fechar_conexao()
End Try
Return Dt
End Function
''' <summary>
''' Função para executar comandos que retornem objetos do tipo DataTableReader
''' </summary>
''' <param name="str_tabela">Nome a ser dado ao objeto DataTableReader</param>
''' <returns>DataTableReader</returns>
''' <remarks></remarks>
Public Function retornar_datatablereader(ByVal str_tabela As String) As DataTableReader
Try
Call Me.abrir_conexao()
PgAdaptador = New NpgsqlDataAdapter(PgComando)
Dt = New DataTable(str_tabela)
PgAdaptador.Fill(Dt)
Dtr = Dt.CreateDataReader
Catch ex As Exception
Finally
Call Me.fechar_conexao()
End Try
Return Dtr
End Function
End ClassEntretanto na hora de adicionar parâmetros ao comando Sql, ele não efetua a adição dos parâmetros e nem gera erro nenhum,gostaria portanto de contar com a ajuda de vocês.
Quando eu vou chamar a função eu faço assim:
With PgSql
Try
.criar_comando("INSERT INTO advogaweb.log_sistema(fkusuario, descricao, ip) VALUES(:=usuario, :=descricao, :=ip)", PgConexao)
.criar_parametro("usuario", par_int_usuario, 2)
.criar_parametro("descricao", par_str_log.ToString, 1)
.criar_parametro("ip", "192.168.1.8", 9)
h = .executar_insertupdatedelete
Catch ex As Npgsql.NpgsqlException
str = ex.Message
End Try
End WithDiscussão (7)
Carregando comentários...