Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: [u]nsigned en 15 Junio 2012, 17:50 pm



Título: Clases en C#
Publicado por: [u]nsigned en 15 Junio 2012, 17:50 pm
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
  1. //MySQL.cs
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using MySql.Data;
  7. using MySql.Data.MySqlClient;
  8.  
  9. namespace Pruebas
  10. {
  11.    class MySql
  12.    {
  13.        private MySqlConnection Conexion;
  14.  
  15.        public MySql(String Host, String User, String Password, String Port="3306"){
  16.            try
  17.            {
  18.                String path = String.Format("DataSource={0};User={1};Password={2};Port={3}", Host, User, Password, Port);
  19.                this.Conexion = new MySqlConnection(path);
  20.            }
  21.            catch (Exception ex)
  22.            {
  23.                Console.WriteLine("No de pudo conectar con MySQL: "+ex.Message);
  24.            }
  25.        }
  26.  
  27.        public bool SelectDataBase(String db)
  28.        {
  29.            try
  30.            {
  31.                if (db == String.Empty) return false;
  32.                this.Conexion.ChangeDatabase(db);
  33.                return true;
  34.            }
  35.            catch (Exception ex) { Console.WriteLine("No se pudo seleccionar la DD.BB: "+ex.Message); return false; }
  36.        }
  37.  
  38.        ~MySql()
  39.        {
  40.            this.Conexion.Close();
  41.        }
  42.  
  43.    }
  44. }
  45.  
  46.  

Y en mi Form1.cs tengo este codigo:

Código
  1. //Form1.cs
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Windows.Forms;
  10. using MySql.Data;
  11. using MySql.Data.MySqlClient;
  12.  
  13. namespace Pruebas
  14. {
  15.    public partial class Form1 : Form
  16.    {
  17.        public Form1()
  18.        {
  19.            InitializeComponent();
  20.        }
  21.  
  22.        private void Form1_Load(object sender, EventArgs e)
  23.        {
  24.            MySql mysql = new MySql("localhost","root","xxxx");
  25.            mysql.SelectDataBase("pruebas");
  26.        }
  27.    }
  28. }
  29.  

Deberia funcionar, pero al ejecutar mi aplicacion, en la ventana de resultados obtengo esto:
Código:
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!!!


Título: Re: Clases en C#
Publicado por: Pablo Videla en 15 Junio 2012, 17:57 pm
En que momento abriste la conexión? No la veo.


Título: Re: Clases en C#
Publicado por: [u]nsigned en 15 Junio 2012, 18:02 pm
Tienes razon, me eh olvidado el this.Conexion.Open();...soy un retrasado mental  :laugh:

Muchas gracias!!!

Saludos


Título: Re: Clases en C#
Publicado por: Pablo Videla en 15 Junio 2012, 18:26 pm
Tienes razon, me eh olvidado el this.Conexion.Open();...soy un retrasado mental  :laugh:

Muchas gracias!!!

Saludos

Suele pasar  :xD :xD :xD

Saludos!