Option Explicit On
Imports System.Data.Common
Public Class BaseDatos
Public Enum BBDD
SQL = 1
ODBC = 2
OLEDB = 3
End Enum
Private Conexion As IDbConnection = Nothing
Private Commando As IDbCommand = Nothing
Private Transaccion As IDbTransaction = Nothing
Private sCadenaConexion As String
Private _Factory As DbProviderFactory = Nothing
Private tipoBBDD As BBDD
Private pParametros() As IDbDataParameter
End Class
Notas:
- Option Explicit ON hay que meterlo al principio de cualquier clase que creemos. Esto es para que no nos permita crear variables sin definir el tipo, pues puede crear errores de compilacion.
- El tipo Enumerado nos servira para identificar el tipo de conexion a la Base de Datos.
El segundo paso es crear los distintos constructores de la clase:
- Constructor parametrizado, donde le pasamos el tipo de conexion (SQL,ODCB,OLEDB), el nombre de la base de datos, el usuario y la contraseña
Public Sub New(ByVal tipoConexion As BaseDatos.BBDD, _
ByVal sBaseDatos As String, _
ByVal sUsuario As String, _
ByVal sPass As String)
Try
Dim proveedor As String = ""
InicializarVariables()
Me.tipoBBDD = tipoConexion
Select Case Me.tipoBBDD
Case BBDD.SQL : proveedor = "System.Data.SqlClient"
Case BBDD.ODBC : proveedor = "System.Data.Odbc"
Case BBDD.OLEDB : proveedor = "System.Data.OleDb"
End Select
Me.sCadenaConexion = "DSN=" & sBaseDatos & ";UID=" & sUsuario & ";PWD=" & sPass
Me._Factory = DbProviderFactories.GetFactory(proveedor)
pParametros = Nothing
Catch ex As Exception
Throw New BaseDatosException("ERROR :" & ex.Message & " BASEDATOS.New(Parametros) ", ex)
End Try
End Sub
2. Constructor con parametros establecidos en el app.config del programa, el pasamos la key del proveedor y la key de la Base de Datos.Public Sub New(ByVal ProveedorBBDD As String, ByVal sKeyConfig As String)
Try
Dim proveedor As String = ConfigurationManager.AppSettings.Get(ProveedorBBDD)
Select Case Trim(proveedor)
Case "System.Data.SqlClient" : tipoBBDD = BBDD.SQL
Case "System.Data.Odbc" : tipoBBDD = BBDD.ODBC
Case "System.Data.OleDb" : tipoBBDD = BBDD.OLEDB
End Select
Me.sCadenaConexion = ConfigurationManager.AppSettings.Get(sKeyConfig)
Me._Factory = DbProviderFactories.GetFactory(proveedor)
pParametros = Nothing
Catch ex As Exception
Throw New BaseDatosException("ERROR :" & ex.Message & " BASEDATOS.New(sKeyConfig) ", ex)
End Try
End Sub
NOTA: el app.config es un fichero de configuracion que contiene parametros totalmente configurables y que se pueden utilizar en toda la solucion. Es como un equivalente a las constantes por asi decirlo. En este caso, el app.config tendria configurado el parametro Proveedor y la key de la base de datos es donde se identifica la cadena de conexion. Para acceder al app.config llamaremos a la funcion "ConfigurationManager", y para poder utilizarla debemos añadir la referencia "System.Configuration" en las referencias del proyecto.
3. Constructor con parametros, le pasamos el tipo de conexion y la cadena de conexion.
Public Sub New(ByVal tipoConexion As BaseDatos.BBDD, _
ByVal sCadenaConexion As String)
Try
Dim proveedor As String = ""
tipoBBDD = tipoConexion
Select Case tipoBBDD
Case BBDD.SQL : proveedor = "System.Data.SqlClient"
Case BBDD.ODBC : proveedor = "System.Data.Odbc"
Case BBDD.OLEDB : proveedor = "System.Data.OleDb"
End Select
Me.sCadenaConexion = sCadenaConexion
Me._Factory = DbProviderFactories.GetFactory(proveedor)
pParametros = Nothing
Catch ex As ConfigurationErrorsException
Throw New BaseDatosException("ERROR :" & ex.Message & " BASEDATOS.New(tipoConexion,CadenaConexion) ", ex)
End Try
End Sub



4 comentarios:
buena explicación estaré al tanto del performance.
iniziaclizarvariables()??
InicializarVariables() es una funcion privada en la clase cuya mision es inicializar todos los atributos de la clase, y es llamada en todos al inicio en todos los constructores.
Podrias mostrar la configuracion del archivo app.config ?
Publicar un comentario