asp.net 0 Denunciar post Postado Abril 27, 2008 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 With Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Abril 28, 2008 Voê tem um try que apenas alimenta uma variável str, se dar um mostrar essa variável na tela ela esta em branco? Acho que pode estar ocorrendo algum erro. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
asp.net 0 Denunciar post Postado Abril 28, 2008 Boa noite. Mas no caso estou fazendo isto apenas para saber se ele tem gerado algum erro. Fiz isto apenas para adicionar um Break Point. Estou desconfiado que o problema seja na hora de adicionar os parâmetros, porque se eu der um comando tipo Seletc sem usar claúsula where ele retorna tranquilo os registros. 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 With Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Abril 29, 2008 Não entendi seu último post. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
asp.net 0 Denunciar post Postado Abril 30, 2008 No caso eu tinha dito apenas que aquela string era para trabalhar com um Breakpoint. No caso eu consegui resolver o problema de adicionar parâmetros, mas no caso do tipo de parâmetro Inet, que é o campo no Postgresql para gravar endereços IP eu não estou conseguindo pegar o endereço IP do usuário logado no sistema e converter para este tipo de parâmetro. Como eu posso pegar o endereço Ip do usuário logado e converté-lo para este tipo, que creio eu seria no .net System.Net.IPAddresses Depois que eu terminar a ClassLibrary posso compartilhar com o fórum de .Net para melhorarmos tal código e quem sabe criarmos uma rede de geração de códigos aqui no Brasil, e num futuro termos um CodePlex 100% Brazil. Não entendi seu último post. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Abril 30, 2008 Mas você esta tentando gravar este ip pelo .net ou pelo próprio banco? Pois se for pelo asp.net você poderia criar o campo como varchar mesmo, acho que seria mais fácil. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
asp.net 0 Denunciar post Postado Maio 2, 2008 No caso como eu posso pegar o endereço IP do usuário em Asp.Net? Estou usando Vb.Net Mas você esta tentando gravar este ip pelo .net ou pelo próprio banco? Pois se for pelo asp.net você poderia criar o campo como varchar mesmo, acho que seria mais fácil. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Maio 3, 2008 De uma olhada neste tópico: http://forum.imasters.com.br/index.php...8416&hl=ip* Abraços... Compartilhar este post Link para o post Compartilhar em outros sites