Factoria de proveedores (Parte 2)
Anteriormente comentaba las bondades de la factoria de proveedores de Visual Basic a la hora de crear una aplicación fácilmente migrable entre distintos motores de bases de datos.
Aquí dejo un ejemplo de código (algo muy sencillito).
Imports System.Data.Common Public Class identificacion 'CREO UN DATASET PARA RELLENARLO CON LA INFO DE LA TABLA Dim dataset As DataSet = New DataSet Private Sub identificacion_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'CREO El OBJETO FACTORIA E INDICO EL PROVEEDOR QUE VOY A USAR Dim factoria As DbProviderFactory = DbProviderFactories.GetFactory("System.Data.SqlClient") 'CREO EL CONEXIONBUILDER PARA PREPARAR LA CONEXION Dim parametrosConexion As DbConnectionStringBuilder = factoria.CreateConnectionStringBuilder 'PREPARO LA CADENA DE CONEXION With parametrosConexion .Add("Data Source", "localhost") .Add("Initial Catalog", "unica_db") .Add("Integrated Security", "SSPI") End With 'CREO EL OBJETO DE CONEXION Dim conexion As DbConnection = factoria.CreateConnection 'ESTABLEZCO LA CADENA DE CONEXION conexion.ConnectionString = parametrosConexion.ConnectionString 'ABRO LA CONEXION Try 'INTENTO LA CONEXION conexion.Open() Catch ex As Exception 'SI FALLA, MUESTRO UN MENSAJE Y CIERRO EL PROGRAMA MessageBox.Show("Error en la conexión con la base de datos. Si el problema persiste consulte con el Administrador del sistema", _ "Error en la conexión", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1) My.Forms.principal.Close() Me.Close() Exit Sub End Try 'PREPARO UN ADAPTADOR PARA OBTENER LA TABLA DE USUARIOS Dim adaptador As DbDataAdapter = factoria.CreateDataAdapter 'CREO UN COMANDO Dim comando As DbCommand = conexion.CreateCommand 'CREO LA CONSULTA comando.CommandText = "SELECT * FROM tbl_usuarios" 'ENLAZO EL ADAPTADOR AL COMANDO adaptador.SelectCommand = comando 'RELLENO EL DATASET dataset = New DataSet adaptador.Fill(dataset, "tbl_usuarios") End Sub End Class
Este es el codigo de un formulario que accede a una base de datos Sql server. Como podeis ver, establezo los parametros de la conexión en las primeras lineas de programa.
Pues bien. Si decidiese cambiar el tipo de base de datos, por ejemplo a Access, sólo deberia cambiar esas primeras lineas.
En otras versiones, si quisiese hacerlo, tendria que cambiar el codigo de prácticamente todos los objetos que he creado que sirven para relacionarse con la base de datos (comando, dataAdapter, etc).
Espero que haya quedado un poco más claro.
Aun no hay comentarios.