cambiar el tipo de variable

30/12/2008 - 03:22 por wtorres.inf | Informe spam
ante todo muchas por participar en este grupo, y pues tengo una duda,
se si se puede o no?
bueno les esplico lo que quiero hacer bueno esoy empezando con C# y
me salio esta duda, quiero hacer tres tipos de servidores de base de
datos, sqlite, postgresql, mysql pero bueno ia inclui las respectivas
librerias al proyecto, .
aqui empieza el problema.

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SQLite;
using MySql.Data;
using MySql.Data.MySqlClient;
using Npgsql;
using NpgsqlTypes;
using Npgsql.Design;

namespace MultipleDB
{
class db
{
private String server;//nombre del server localhost/127.0.0.0
private String basedatos;//nombre de la base de datos, en
sqlite funciona como url de la bd
private String userdb;//user db
private String passwdb;//contra del usuario db
public String tipodb;//tipo del server db
private Object conexion;
private Object DatApadter;



public db(string tipodb, string server, string basedatos,
string userdb, string passwdb)
{
this.tipodb = tipodb;
this.server = server;
this.basedatos = basedatos;
this.userdb = userdb;
this.passwdb = passwdb;

if (this.tipodb == "mysql")
{
this.conexion = new MySqlConnection();
}
else if (this.tipodb == "postgresql")
{
this.conexion = new NpgsqlConnection();
}
else
this.conexion = new SQLiteConnection();
}

}
}

masomenos eso es lo que quiero es forzar convertir la variable
conexion a varios tipos de clases dependiendo del tipo de servidor q
se elige

Gracias..
 

Leer las respuestas

#1 Alberto Poblacion
30/12/2008 - 10:20 | Informe spam
Tal como lo has hecho, declarando la variable "conexion" del tipo Object, te
funcionará, en el sentido de que puedes asignarle todos los tipos de
conexión, pero no te servirá de mucho ya que luego no podrás hacer cosas
tales como conexion.Open(), ya que Object no tiene el método Open.

Para resolver esto, lo que tienes que hacer es declarar "conexión" con un
tipo que sea común a todas las clases de conexión e implemente los métodos
que necesitas. Afortunadamente, el Framework (a partir de la versión 2.0)
tiene ya definido un tipo que te sirve, que es IDbConnection. Declarando
"conexion" con este tipo, puedes asignarle un objeto de cualquier clase que
implemente la interfaz IDbConnection, como por ejemplo SqlConnection u
OleDbConnection (no sé si SQLite y MySqlClient son lo bastante modernos para
traer ya implementada esta interfaz, que se introdujo en la versión 2.0 del
Framework).

"wtorres.inf" wrote in message
news:
ante todo muchas por participar en este grupo, y pues tengo una duda,
se si se puede o no?
bueno les esplico lo que quiero hacer bueno esoy empezando con C# y
me salio esta duda, quiero hacer tres tipos de servidores de base de
datos, sqlite, postgresql, mysql pero bueno ia inclui las respectivas
librerias al proyecto, .
aqui empieza el problema.

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SQLite;
using MySql.Data;
using MySql.Data.MySqlClient;
using Npgsql;
using NpgsqlTypes;
using Npgsql.Design;

namespace MultipleDB
{
class db
{
private String server;//nombre del server localhost/127.0.0.0
private String basedatos;//nombre de la base de datos, en
sqlite funciona como url de la bd
private String userdb;//user db
private String passwdb;//contra del usuario db
public String tipodb;//tipo del server db
private Object conexion;
private Object DatApadter;



public db(string tipodb, string server, string basedatos,
string userdb, string passwdb)
{
this.tipodb = tipodb;
this.server = server;
this.basedatos = basedatos;
this.userdb = userdb;
this.passwdb = passwdb;

if (this.tipodb == "mysql")
{
this.conexion = new MySqlConnection();
}
else if (this.tipodb == "postgresql")
{
this.conexion = new NpgsqlConnection();
}
else
this.conexion = new SQLiteConnection();
}

}
}

masomenos eso es lo que quiero es forzar convertir la variable
conexion a varios tipos de clases dependiendo del tipo de servidor q
se elige

Preguntas similares