Clases en C#

Iniciado por [u]nsigned, 15 Junio 2012, 17:50 PM

0 Miembros y 1 Visitante están viendo este tema.

[u]nsigned

Hola, bueno les cuento que estoy creando una clase para usar a modo de 'handler' para MySql.

El codigo de la misma es este:
Código (csharp) [Seleccionar]

//MySQL.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data;
using MySql.Data.MySqlClient;

namespace Pruebas
{
    class MySql
    {
        private MySqlConnection Conexion;

        public MySql(String Host, String User, String Password, String Port="3306"){
            try
            {
                String path = String.Format("DataSource={0};User={1};Password={2};Port={3}", Host, User, Password, Port);
                this.Conexion = new MySqlConnection(path);
            }
            catch (Exception ex)
            {
                Console.WriteLine("No de pudo conectar con MySQL: "+ex.Message);
            }
        }

        public bool SelectDataBase(String db)
        {
            try
            {
                if (db == String.Empty) return false;
                this.Conexion.ChangeDatabase(db);
                return true;
            }
            catch (Exception ex) { Console.WriteLine("No se pudo seleccionar la DD.BB: "+ex.Message); return false; }
        }

        ~MySql()
        {
            this.Conexion.Close();
        }

    }
}



Y en mi Form1.cs tengo este codigo:

Código (csharp) [Seleccionar]

//Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data;
using MySql.Data.MySqlClient;

namespace Pruebas
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            MySql mysql = new MySql("localhost","root","xxxx");
            mysql.SelectDataBase("pruebas");
        }
    }
}


Deberia funcionar, pero al ejecutar mi aplicacion, en la ventana de resultados obtengo esto:

Excepción del tipo 'System.InvalidOperationException' en MySql.Data.dll
No se pudo seleccionar la DD.BB: The connection is not open.


Lo que me dice es que no se puede elegir la base indicada porque no hay una conexion abierta. Ahora lo que yo me pregunto es por qué no se abre la conexion, pero tampoco se dispara un Exception cuando intento conectar.

Es decir o se tendria que conectar o generarme una excepcion...alguna ayuda??  :huh:

Saludos y muchas gracias!!!

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

Pablo Videla

En que momento abriste la conexión? No la veo.

[u]nsigned

Tienes razon, me eh olvidado el this.Conexion.Open();...soy un retrasado mental  :laugh:

Muchas gracias!!!

Saludos

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

Pablo Videla

Cita de: El As del Club Paris en 15 Junio 2012, 18:02 PM
Tienes razon, me eh olvidado el this.Conexion.Open();...soy un retrasado mental  :laugh:

Muchas gracias!!!

Saludos

Suele pasar  :xD :xD :xD

Saludos!