Problemas Clase Conexion
-
Wednesday, November 10, 2010 8:24 PM
Saludos,
Tengo algunos problemitas con unas clase que conexion que estoy haciendo me da problemas al tratar de vincularlas con mi form de Login
Ayuda por favor con mi problemaImports System Imports System.Collections Imports System.Data Public Class Config #Region "Variables Privadas" Private vServer As String = "" Private vPort As String = "" Private vDBase As String = "" Private vUser As String = "" Private vPass As String = "" #End Region #Region "Enumeración de Proveedores de Datos" Public Enum ProveedorCNX As Integer prv_firebird = 0 prv_mysql = 1 prv_postgresql = 2 prv_sqlite = 3 End Enum #End Region #Region "Propiedades Públicas" Public Property Server() As String Get Return vServer End Get Set(ByVal value As String) vServer = value End Set End Property Public Property Port() As String Get Return vPort End Get Set(ByVal Value As String) vPort = Value End Set End Property Public Property Database() As String Get Return vDBase End Get Set(ByVal value As String) vDBase = value End Set End Property Public Property User() As String Get Return vUser End Get Set(ByVal value As String) vUser = value End Set End Property Public Property Pass() As String Get Return vPass End Get Set(ByVal value As String) vPass = value End Set End Property #End Region #Region "Función Cadena de Conexión" Public Function ConexionSTR(ByVal objProveedor As ProveedorCNX) As String Dim cnxSTR As String = "" Select Case objProveedor Case ProveedorCNX.prv_firebird cnxSTR = "DataSource=" & vServer & ";" + "Port=" & vPort & ";" + "Database=" & vDBase & ";" + "User=" & vUser & ";" + "Password=" & vPass & ";" Case ProveedorCNX.prv_mysql cnxSTR = "Server=" & vServer & ";" + "Port=" & vPort & ";" + "Database=" & vDBase & ";" + "Uid=" & vUser & ";" + "Pwd=" & vPass & ";" Case ProveedorCNX.prv_postgresql cnxSTR = "Server=" & vServer & ";" + "Port=" & vPort & ";" + "Database=" & vDBase & ";" + "User Id=" & vUser & ";" + "Password=" & vPass & ";" Case ProveedorCNX.prv_sqlite cnxSTR = "Data Source=" & vDBase & ";" + "Version=3;" + "Password=" & vPass & ";" Case Else Throw New Exception("Método no implementado en la clase de Conexion" & vbCrLf _ & vbCrLf & "Por favor comuníquese con los administradores del Sistema") End Select Return cnxSTR End Function #End Region End Class '*************************************************** 'PostgreSQL.vb<br/> <br/> Imports System Imports System.Collections Imports System.Data Imports Npgsql Public Class PostgreSQL 'Heredo a la Clase Config Inherits Config Private WithEvents pgCnx As NpgsqlConnection Public Event NpgsqlError(ByVal Err As ErrObject, ByVal Ex As Exception, ByVal Sql As String) Public Sub pgOpenCnx(ByVal Server As String, ByVal Port As String, ByVal User As String, ByVal Pass As String, ByVal DB As String) Try MyBase.Server = Server MyBase.Port = Port MyBase.User = User MyBase.Pass = Pass MyBase.Database = DB pgCnx = New NpgsqlConnection pgCnx.ConnectionString = MyBase.ConexionSTR(Config.ProveedorCNX.prv_postgresql) pgCnx.Open() Catch pgEX As NpgsqlException RaiseEvent NpgsqlError(Err, pgEX, "") Catch Ex As Exception RaiseEvent NpgsqlError(Err, Ex, "") End Try End Sub Private Sub pgsql_estado(ByVal sender As Object, ByVal e As StateChangeEventArgs) Handles pgCnx.StateChange If e.CurrentState = ConnectionState.Closed Or e.CurrentState = ConnectionState.Broken Then If MsgBox("Se ha perdido la conexión con PostgreSQL" & vbCrLf & vbCrLf & _ "¿Desea intentar una reconexión con el servidor?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then pgCnx.Open() End If End If End Sub
Nestor Davila Muñoz
Junior Developer (VB.Net-PostgreSQL-SQLite-ASP.Net)
"No es mas grande aquel que nunca falla, si no el que nunca se da por vencido"
All Replies
-
Wednesday, November 10, 2010 8:30 PMModerator
hola
pero cual es el problema que da al vincular ?
recibes un mensaje de error ?
o es otro el problema
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina -
Wednesday, November 10, 2010 8:31 PM
Hola nestor,
Podrías ser un poco más especifico e indicarnos cual es el problema. Algún error? advertencia? algo que no aparece?
Saludos,
Jason Ulloa
Mi Blog -
Wednesday, November 10, 2010 8:33 PM
Exacto tengo problema
RaiseEvent NpgsqlError(Err, pgEX, "" )
Me prodrías ayudar la correcta forma de hacer una conexion!! y como enlazarla???
Nestor Davila Muñoz
Junior Developer (VB.Net-PostgreSQL-SQLite-ASP.Net)
"No es mas grande aquel que nunca falla, si no el que nunca se da por vencido" -
Wednesday, November 10, 2010 8:37 PMA first chance exception of type 'Npgsql.NpgsqlException' occurred in Npgsql.dll
Nestor Davila Muñoz
Junior Developer (VB.Net-PostgreSQL-SQLite-ASP.Net)
"No es mas grande aquel que nunca falla, si no el que nunca se da por vencido" -
Wednesday, November 10, 2010 8:58 PM
¿Qué versión del Npgsql está utilizando?.Revisa estos enlaces y dinos si te han dado alguna orientación
Saludos,
Jason Ulloa
Mi Blog -
Wednesday, November 10, 2010 9:00 PMListo ya los reviso!!! Millon gracias ahora esta bien mi clase? o creen que debo arreglarla
Nestor Davila Muñoz
Junior Developer (VB.Net-PostgreSQL-SQLite-ASP.Net)
"No es mas grande aquel que nunca falla, si no el que nunca se da por vencido" -
Wednesday, November 10, 2010 9:46 PMModerator
hola
me hago una pregunta, porque necesitas de esa clase, si es para definir la conexion porque no usas un archivo de configuracion, es mas practico
[ADO.NET] – Parte 5 - Ejemplos Simples – Operaciones CRUD
en el ejmeplo uso sql server, pero en tu caso es igual solo que usaras NpgsqlConnection, en lugar de SqlConnection
y no te complicas con la clase, ademas el app.config puedes editarlo con el notepad cuando cambie la conexion
esto lo comento porque he visto varias d eestas clases que al final en lugar de ayudar terminan complicando
el uso del Using para englobar las conxiones tambien es practico
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina -
Wednesday, November 10, 2010 9:50 PM
Saludos,
Bueno en su momente pense crear una clase x cada proveedor de datos PostgreSQL, MySQL etc pero pense mejor e irme x postgresql no mas
Pero supongo que querras que abra y cierre la conexion x cada insert, upodate y delete como lei en un articulo tuyo... Que beneficio adquiero al hacerlo asi vs tener la conexion abierta hasta q se cierre la conexion
Nestor Davila Muñoz
Junior Developer (VB.Net-PostgreSQL-SQLite-ASP.Net)
"No es mas grande aquel que nunca falla, si no el que nunca se da por vencido" -
Thursday, November 11, 2010 3:15 AMModerator
hola
Que beneficio adquiero al hacerlo asi vs tener la conexion abierta hasta q se cierre la conexion
ado.net por debajo maneja un pool de conexiones, por lo tanto si usas el Using para definir cada conexion a la db, pareciera ques e esta cerando y abriendo continuamente, pero esto no es asi
el propio ado.net no cierra la conexion al instante, la mantiene, por lo tanto al volver a usarla solo la reactiva, por esi eso que haces en tu clase ado.net ya lo contempla, no necesitas controlar tu mismo als conexiones esten abiertas mientras procesas con esta
si bien esta explciacion es para sql server
ojo por ahi en Postgres deberas habilitarlo
First ASP.NET application against Postgresql
en el link usa
Server=192.168.10.4;Port=5432;Userid=postgres;Password=stefan;Protocol=3;SSL=false;Pooling=true; MinPoolSize=1;MaxPoolSize=20;Encoding=UNICODE;Timeout=15;SslMode=Disable;Database=test"
pero esto solo seria cuestion de investigar un poco ams en detalle el provider para ver como implementa esta funcionalidad
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marked As Answer by Chentico Davila Thursday, November 11, 2010 3:34 AM
-
Thursday, November 11, 2010 3:34 AM
Saludos Leandro,
Pues si conozco el manejo de Npgsql... lo que faltaba era esa explicacion que me das y los links de apoyo.
Muchas Gracias por la ayuda.
Nestor Davila Muñoz
Junior Developer (VB.Net-PostgreSQL-SQLite-ASP.Net)
"No es mas grande aquel que nunca falla, si no el que nunca se da por vencido"

