InicioApuntes Y MonografiasCapa de datos multigestor (Parte 1)
Para empezar vamos a crear la capa de datos para poder conectarnos a 4 gestores de bases de datos, para lograr eso vamos a utilizar el controlador ODBC para cada gestor.
El controlador ODBC es una API estándar para el acceso a datos, se caracteriza por ser independiente del origen de datos, lenguaje o sistemas operativos.
No voy a seguir con mas conceptos para no aburrirlos ni aburrirme, así que pasemos a lo bueno


los gestores escogidos que vamos a usar para realizar las pruebas son los siguientes
-SqlServer
-Oracle
-MySql
-Postgress
pero si gustan añadir otro gestor creo q lo van a poder hacer sin ningún problema, por que por eso se caracteriza el ODBC
Empezamos creando un nuevo proyecto de biblioteca de clases en el Visual Studio.
Capa de datos multigestor (Parte 1)

Renombramos a la clase que viene por defecto a DataProvider, y su contenido es el siguiente.


using System;
using System.Collections.Generic;
using System.Text;

namespace DAL
{
public enum DataProvider
{
Oracle, SqlServer, MySql, PostgresSql
}
}

El objetivo de esa clase es solamente tener una lista de los gestores con los que vamos a trabajar, de esa forma no tenemos que escribirlos a cada momento.


Posteriormente nos creamos otra clase la cual nombraremos gDatos, o como uds gusten, yo por alguna razón me acostumbre a ese nombre.
añadimos las siguientes librerias q son nesesarias para conectarse al ODBC

using System.Data;
using System.Data.Odbc;

y empezamos creándonos las 3 primeras variables

private System.Data.Odbc.OdbcConnection OdbcCon;
private System.Data.Odbc.OdbcCommand OdbcCom;
private System.Data.Odbc.OdbcDataReader OdbcDR;


El primero es para realizar la conexión a ODBC Driver, el segundo es para mandar comando o consultas al gestor de base de datos, y la tercera es para leer datos devueltos en las consultas


luego nos creamos las propiedades de la clase.

public string ConexString
{ set; get; }
public string BaseDatos
{ set; get; }
public string Usuario
{ set; get; }
public string Password
{ set; get; }
public string Server
{ set; get; }
public string Puerto
{ set; get; }
public DataProvider TipoCon
{ set; get; }

No creo que haya problemas entendiendo las propiedades pero si alguien tiene duda es libre de preguntar.


continuamos creando el construnctor y el primer metodo

public gDatos(string _BaseDatos,
string _Usuario,
string _Password,
string _Server,
string _Puerto,
DataProvider _TipoCon)
{
BaseDatos = _BaseDatos;
Usuario = _Usuario;
Password = _Password;
Server = _Server;
Puerto = _Puerto;
TipoCon = _TipoCon;
GetConexionString();
}

public void GetConexionString()
{
switch (TipoCon)
{
case DataProvider.Oracle:
ConexString = "DRIVER={Microsoft ODBC for Oracle};SERVER="
+ Server + ";DATABASE=" + BaseDatos
+ ";UID=" + Usuario + ";PWD=" + Password;
break;
case DataProvider.SqlServer:
ConexString = "DRIVER={SQL Server};SERVER="
+ Server + ";DATABASE=" + BaseDatos
+ ";UID=" + Usuario + ";PWD=" + Password ;
break;
case DataProvider.MySql:
ConexString = "DRIVER={MySQL ODBC 5.1 Driver};SERVER="
+ Server + ";PORT=" + Puerto + ";DATABASE="
+ BaseDatos + ";UID=" + Usuario + ";PWD=" + Password + ";OPTION=3";
break;
case DataProvider.PostgresSql:
ConexString = "DRIVER={PostgreSQL ANSI(x64)};SERVER="
+ Server + ";PORT=" + Puerto + ";DATABASE="
+ BaseDatos + ";UID=" + Usuario + ";PWD=" + Password;
break;

}
}

el constructor lo que hace es inicializar las variables con los parámetros mandados, no es necesarios mandar todos los parámetros, por ejemplo en muchos casos el puerto no es necesario y podemos enviarle vació ("".

proseguimos creando una función que nos servirá para probar las conexiones

public bool TestConex()
{
bool exito = false;
OdbcCon = new System.Data.Odbc.OdbcConnection(ConexString);
try
{
if (OdbcCon.State == ConnectionState.Closed)
{
OdbcCon.Open();
exito = true;
}
}
catch (System.Data.Odbc.OdbcException Ex)
{
// aca poner alguna excepcion
throw new Exception("No se pudo conectar al servidor," +
"verifique que los parametros de conexion son correctos";
}
return exito;
}

y para probar nuestro avance creamos un formulario con los siguientes componentes.

MySQL
En el evento load del formulario colocamos el siguiente código

CBBProvider.Items.Add(DataProvider.MySql);
CBBProvider.Items.Add(DataProvider.Oracle);
CBBProvider.Items.Add(DataProvider.PostgresSql);
CBBProvider.Items.Add(DataProvider.SqlServer);

y por ultimo en el boton colocamos lo siguiente

gDatos g = new gDatos(TxtBaseDatos.Text, TxtUsuario.Text, TxtPassword.Text, TxtServidor.Text, "", (DataProvider)CBBProvider.SelectedItem);
try
{
if (g.TestConex())
TxtLog.AppendText("Conexion establesida a " + g.Server + "rn";
else
TxtLog.AppendText("Error al conectar a " + g.Server + "rn";
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

y tendriamos lo siguiente


para terminar esta primera parte paso a los posibles errores.

Punto 1
Verificar que la aplicación este diseñada para cualquier CPU, esto me mantuvo pensando un buen rato
eso lo pueden ver en la siguiente ventana
Clic derecho en el proyecto -> Propiedades



en esa ventana tienen que asegurarse que el parámetro "Destino de plataforma este en Any CPU" de lo contrario algunas conexiones no podrán realizarse.

Punto 2 es posible que cuando uds lean esto las verciones de los drivers cambien, o quieran utilizar otro driver, ese parametro se cambia en función al siguiente valor
csharp
En caso de no funcionar pueden consultar al todopoderoso google por la cadena de conexión para el respectivo driver

También se puede crear la cadena de conexión a traves del parámetro DSN que hay que configurar previamente, eso no lo voy a hacer acá por motivos que voy a explicar mas adelante.

si gustan pueden pasarse por mi nuevo blog en el que voy a completar todo este proyecto
http://desarrollandomitesis.blogspot.com/
Datos archivados del Taringa! original
10puntos
456visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
4visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

s
suazr🇦🇷
Usuario
Puntos0
Posts3
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.