• Domingo 5 de Mayo de 2024, 14:22

Autor Tema:  Help con constructor sobrecargado  (Leído 1379 veces)

tOWERR

  • Nuevo Miembro
  • *
  • Mensajes: 9
  • Nacionalidad: es
    • Ver Perfil
Help con constructor sobrecargado
« en: Martes 5 de Abril de 2011, 18:40 »
0
Hola, estoy haciendo en una clase un constructor sobre cargado en el cual le paso unos datos y esos datos los quiero meter en variables y esas variables utilizarlas en un metodo de ese constructor, os dejo aqui el codigo:
csharp Código:

Código: C#
  1.    
  2. public Conexion_BD(String server, String bd, String user, String pwd) {
  3.      
  4.                 // Variables.
  5.                 public String srv = server;
  6.                 public String BD = bd;
  7.                 public String us = user;
  8.                 public String pw = pwd;
  9.      
  10.                 // Metodo para conectar, se le pasa el servidor, la base de datos, el usuario y el password.
  11.                 public MySqlConnection conectar()
  12.                 {
  13.                     String datos = "Server=" + srv + ";Port=3306;Database=" + BD + ";Uid=" + us + ";Pwd=" + pw + ";";
  14.                     abrir(datos);
  15.      
  16.                     try {
  17.                         con.Open();
  18.                         return con;
  19.                     } // FIN try
  20.                     catch (MySqlException ex) {
  21.                         return null;
  22.                     } // FIN catch
  23.      
  24.                 } // FIN conectar
  25.      
  26.                 // Metodo abrir.
  27.                 public void abrir(string dat) {
  28.                     con = new MySqlConnection(dat);
  29.                 } // FIN abrir
  30.      
  31.         } // FIN Conexion_BD
  32.  
  33.  
Me dice que los nombres de las variables que le paso al constructor no existe en el contexto actual, ¿que puede ser?
¿Como puedo solucionarlo?
Un saludo.

tOWERR

  • Nuevo Miembro
  • *
  • Mensajes: 9
  • Nacionalidad: es
    • Ver Perfil
Re: Help con constructor sobrecargado
« Respuesta #1 en: Martes 5 de Abril de 2011, 18:57 »
0
Ya he solucionado el error que me daba, he creado las variables que asigno en el metodo en la clase en vez de en el metodo. Ahora me da un error de que me falta una llave en la linea 29, pero no veo ninguna linea que me falte. Os dejo el nuevo codigo:

Código: C#
  1.  
  2.     public Conexion_BD(String server, String bd, String user, String pwd) {
  3.      
  4.                 // Variables.
  5.                 srv = server;
  6.                 BD = bd;
  7.                 us = user;
  8.                 pw = pwd;
  9.      
  10.                 // Metodo para conectar, se le pasa el servidor, la base de datos, el usuario y el password.
  11.                 public MySqlConnection conectar()
  12.                 {
  13.                     String datos = "Server=" + srv + ";Port=3306;Database=" + BD + ";Uid=" + us + ";Pwd=" + pw + ";";
  14.                     abrir(datos);
  15.      
  16.                     try {
  17.                         con.Open();
  18.                         return con;
  19.                     } // FIN try
  20.                     catch (MySqlException ex) {
  21.                         return null;
  22.                     } // FIN catch
  23.      
  24.                 } // FIN conectar
  25.      
  26.                 // Metodo abrir.
  27.                 public void abrir(string dat) {
  28.                     con = new MySqlConnection(dat);
  29.                 } // FIN abrir
  30.         } // FIN Conexion_BD
  31.  
  32.  

Ayuda por favor.

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Help con constructor sobrecargado
« Respuesta #2 en: Martes 5 de Abril de 2011, 22:39 »
0
Tienes metdodos dentro de metodos (o metodos anidados), en C#, no puedes tener metodos anidados, cada metodo debe ser independiente uno de otro. Un constructor tambien es un metodo, solo que es de un tipo especial que se ejecuta automaticamente al crear la clase ;)

Si el objetivo de declararlos anidados, es que no tengas acceso a esos metodos fuera de la clase, debes declararlos como privados.

Código: C#
  1.  
  2.         public Conexion_BD(String server, String bd, String user, String pwd)
  3.         {
  4.             // Variables.
  5.             srv = server;
  6.             BD = bd;
  7.             us = user;
  8.             pw = pwd;
  9.         } // FIN Conexion_BD
  10.  
  11.         // Metodo para conectar, se le pasa el servidor, la base de datos, el usuario y el password.
  12.         // Si no deseas accede al metodo fuera de la clase, declaralo privado,
  13.         // no anidado al metodo Conexion_BD
  14.         public MySqlConnection conectar()
  15.         {
  16.             String datos = "Server=" + srv + ";Port=3306;Database=" + BD + ";Uid=" + us + ";Pwd=" + pw + ";";
  17.             abrir(datos);
  18.  
  19.             try
  20.             {
  21.                 con.Open();
  22.                 return con;
  23.             } // FIN try
  24.             catch (MySqlException ex)
  25.             {
  26.                 return null;
  27.             } // FIN catch
  28.  
  29.         } // FIN conectar
  30.  
  31.         // Metodo abrir.
  32.         public void abrir(string dat)
  33.         {
  34.             con = new MySqlConnection(dat);
  35.         } // FIN abrir
  36.  
  37.  

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================