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 Sub2. 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