none
crear clase de conexion con postgres

    Pregunta

  • hola estoy creando una clase de conexion el cual le quiero el cual contiene lo siguiente:

    using System.Windows.Forms;
    using Npgsql;
    namespace Project
    {
        public class csConexion
        {
            static NpgsqlConnection conexion;
            static public NpgsqlConnection getConexion()
            {
                    conexion = new NpgsqlConnection("User Id=postgres; Port= 5432; Password=09876; Database=persona; Host=localhost; Commandtimeout=900; Pooling=false");
                    return conexion;

            }
        }
    }

    Bueno hasta ay me funciona correctamente pero lo que necesito es que cuando la conexion falla me arroje un mensaje de error.

    Y en lo otro que me pudieran apoyar es que tambien necesito la parte de desconexion.

    Desde ya gracias por el apoyo .

    viernes, 06 de abril de 2018 15:15

Todas las respuestas

  •  lo que necesito es que cuando la conexion falla me arroje un mensaje de error.

    Fijate que en ese codigo solo devuelves el objeto conexion, pero ahi la conexion no se usa. El sitio donde se nota si la conexion falla es en donde le haces el Open(). Presumiblemente esto se hace en el codigo llamante de esa subrutina. Ahi es donde tienes que meter un try...catch alrededor del Open y presentar el error en el catch.

    Ojo conlo de "presentar un mensaje de error". Esto unicamente debe hacerse desde la capa de presentacion, tu capa de acceso a datos nunca debe "presntar" nada. Lo correcto en capa de datos (e incluso en capa de negocio si es que la tienes) es hacer un "throw" para devolver el error a la capa superior, de forma que el error vaya "subiendo" hasta la capa de presentacion y ahi es donde un try...catch lo intercepta y presenta el mensaje oportuno.

    Para que funcione bien la apertura y desconexion, el patron recomendado seria este:

    using (NpgsqlConnection miConexion = csConexion.getConexion())
    {
        try
        {
            miConexion .Open();
            // Aqui trabajar con miconexion
            // No hace falta cerrarla porque al salir del using se hace automaticamente un Dispose y el Dispose la cierra.
        }
        catch (...)
        {
             // Aqui hacer lo que sea oportuno con el error,
             // y al final para que "suba" poner un "throw"
        }
    }


    viernes, 06 de abril de 2018 15:28
  • Muchísimas gracias por el apoyo y la corrección del planteamiento que esta haciendo.
    viernes, 06 de abril de 2018 15:32