Inicio > Java, Linux, NetBeans, PostgreSQL, Ubuntu > Método estático para conexión a PostgreSQL

Método estático para conexión a PostgreSQL

Hace poco viendo algo de código, estuve analizando la forma de realizar conexiones a PostgreSQL desde una aplicación web hecha en JSP, y llegue a crearme un método estático para la realizar la conexión y almacenar los datos (usuario y password) la primera vez que la instancie. Esto hará que cuando quiera conectarme a realizar alguna consulta o transacción solo llamaria al método con los datos ya almacenados.

conexion_1.png

Estos métodos los utilizo para poder almacenar y obtener los datos, a continucacion creo el metodo estático de conexion.

conexion_2.png

Una vez realizado esto solo tendria que ingresar los datos e instanciarla una vez

conexion_3.png

Una vez instanciada la clase conexión solo lo llamaria de ahora en adelante en cualquier clase donde quiera realizar alguna conexión de la siguiente forma: Por ejemplo aquí hago una consulta a dos tabla para validar un usuario.

conexion_4.png

 

Esto solo es una forma de realizarlo y esta sujeta a cambios y/o sugerencias.

PD: El driver de conexión para PostgreSQL lo descargue de aquí

  1. Pepian
    Noviembre 5, 2007 a las 12:15 am | #1

    solo una cosa que seria bueno…
    usar un StringBuilder para la cadena de consulta en ves de usar “sql = (“SELECT * ………..”+loginUsuario.toUppercase ….. ) xq esto lo q hace es crear instancias de la cadena cosa q no es bueno (motivo: ya sabemos xq …) entonces quedaria algo asi:
    StringBuilder sb = new StringBuilder();
    sb.lenght() = 0 // por si las moscas
    sb.append(“SELECT ………………..”);
    sb.append(“WHERE ……”);

    nos vemos compare….

  2. Nuel
    Enero 30, 2008 a las 7:47 pm | #2

    Me parece que aplicando el patron de instancia única tambien se podria tener una sola instanca de una Clase Conexion, aca el codigo que uso para conectarme a una BD postgresql la ventaja es que solo la propia clase puede crear una instancia de ella misma. Aca el codigo:

    public class Conexion {
    private Conexion(){
    try{
    Class.forName(“org.postgresql.Driver”);
    psqlCon=DriverManager.getConnection(url,username,pass);
    }catch(Exception ex){
    System.out.println(ex.getMessage());
    }
    }

    public static void setUrl(String myUrl){
    url=myUrl;
    }

    public static void setUsername(String myUser){
    username=myUser;
    }

    public static void setPassword(String myPass){
    pass=myPass;
    }

    public static Conexion getConexion(){
    if(conexion==null)
    conexion=new Conexion();
    return conexion;
    }

    public Connection getConnection(){
    return psqlCon;
    }

    private static Conexion conexion;
    private static String url;
    private static String username;
    private static String pass;
    private Connection psqlCon;
    }

  3. luchito
    Julio 10, 2008 a las 3:16 pm | #3

    no tendran codigo para conexion en java con netbeans pero no dirigido a web? es decir en aplicacion java

  4. nachxs
    Julio 11, 2008 a las 3:31 pm | #4

    luchito puedes utilizar las mismas clases, no veo la diferencia, solo lo instancias desde tu aplicativo.

  5. eloisa
    Julio 30, 2008 a las 3:44 pm | #5

    Hola!!, chicos voy a integrar 2 sistemas en uno que voy a hacer, o sea que utilizaria las 2 bd de los sistemas hechos mas la bd del sistemas actual, el punto es si puedo acceder desde una sola aplicación a las 3 bd al mismo tiempo, o sea instanciar las 3, para no tener que normalizar las 3 bd y formar una sola, ya q cada sistema aproximadamente tienen 128 tablas cada uno. :(
    Pliss alguna idea o link donde pueda conseguir información al respecto

  6. nachxs
    Julio 30, 2008 a las 9:03 pm | #6

    Hola eloisa, claro que si puedes hacerlo, lo primero que tendrias que ver es si es que vas ha manejar las 3 instancias en la misma clase o crear una clase distintinta para cada instancia, como veras yo creo una clase llamada “conexion” y dentro de ella el metodo estatico “conexionBD”, lo que podrias hacer es crear otros metodos estaticos para las otras conexiones, obviamente seteando las URL diferentes para cada conexion.

    Espero haberte dado un alcanze. cualquier duda solo escribelo.

    Saludos.

  7. eloisa
    Agosto 4, 2008 a las 2:22 pm | #7

    Hola nachxs, gracias por la idea!!
    me parece fantastica, voy a intentar con eso…
    :)

  8. nachxs
    Agosto 4, 2008 a las 9:11 pm | #8

    De nada eloisa, estamos para ayudarnos :)

    Saludos.

  9. Manuel
    Septiembre 25, 2008 a las 2:41 pm | #9

    Oye nachxs, tengo problema para conectar mi proyect de web service con jboss lo he hecho con glassfish y si funciona pero con el servidor jboss no puedo conectarme, leí tu articulo y me pareció muy bueno. Saludos.

  10. nachxs
    Septiembre 25, 2008 a las 4:06 pm | #10

    Hola Manuel, primero que todo agradecerte por el tiempo para el leer el blog, me seria mas facil si me pudieras proporcionar mas detalle del problema que tienes, para asi tratar de darle una solucion

  11. Manuel
    Septiembre 25, 2008 a las 4:42 pm | #11

    cuando ejecuto el proyecto cliente dice que no encuentra el servidor jboss.

    lo he probado con un proyecto mas pequño donde hago una operacion de suma y tambien dice que el servidor no está disponible,¿poque será?

  12. ulises
    Noviembre 25, 2008 a las 2:48 pm | #12

    hola
    muy buen blog, tengo una duda, esto lo puesdes usar con jsp, pero con portlets, es lo mismo quiero manejar una bd, ya la tengo en postgres uso pgAdmin 8.3, la conexion en entbean ya esta hecho, pero estas clases como funcionarian en el portlet.

  13. nachxs
    Noviembre 25, 2008 a las 10:18 pm | #13

    Hola ulises, gracias por leer el blog. Bueno con respecto a tu pregunta, segun tengo entendido portlets es un framework (nunca lo use) que tiene un gran parecido a el framework struts (si lo use). Hace poco escribi un post en donde te muestra una forma de trabajar sesiones con struts, quizas te pueda ayudar, lo que tendrias que hacer solo seria instanciar la clase de conexion dentro de la clase action.

    De todas maneras, es una buena oportunidad para probar este framework y asi poder escribir un pequeño articulo.

    Saludos.

  14. diego
    Febrero 10, 2009 a las 1:05 am | #14

    Hola nachxs, un gusto en saludar, lei el post de las sesiones con struts y con ello di mi primer paso en esto. Estoy haciendo un trabajo en struts y soy renovato en esto y estoy pegado en conectarme a la base de datos(postgresql). He probado millones de formas y esta es la millon +1XD. probe con este ejemplo escribiendo un action, no me tira ningun error pero tampoco ingresa los valores(lo modifique para que ingresara datos). para empezar ¿Como puedo conectar postgres a Struts? ¿Necesito algun Framework en especial ? estoy analizando tu ejemplo y lo que tampoco entiendo es por donde le metes los datos de conexion a la base de datos ? (user y pass) donde lo instancias ??

    porfa ayudame que estoy muy colgado.

    Bytes … y gracias

    • nachxs
      Febrero 10, 2009 a las 9:24 am | #15

      Hola Diego, gusto de saludarte. A ver, mas o menos te explico, struts es un framework que utiliza MVC(Modelo Vista Controlador), esto quiere decir que vas manejar como minimo 3 capas de desarrollo, la parte Interfaz que es la que ve el usuario, la parte de logica de negocio y la parte de acceso a datos. Cuando tu quieres conectar tu aplicacion struts a postgresql tendrias que tener una clase en la logica de negocio que te realizaria el seteo u obtencion de datos para asi obtener la conexion. Si te fijas la clase “Validar” es una clase que yo la tengo dentro de una capa intermedia y la clase “ValidaUsuario” es una clase que la tengo en la capa de acceso a datos. Yo puedo crear una pagina jsp y setear los datos directamente con etiquetas struts y asi mandarle los datos a la clase Conexion, una vez enviado estos datos la clase “Validar” haria el resto, pero para esto validar tendria que estar asociado a un action para asi realizar el forward respectivo ya sea cuando tienes un FAILURE o un SUCESS.
      Espero haberme explicado, tu sabes que a veces es un poco complicado explicarlo con palabras =P

      Saludos.

  15. david
    Mayo 8, 2009 a las 12:44 pm | #16

    quisiera saber en que parte es donde se crea el archivo para la conexion, ojala me puedas ayudar
    Saludos.

  16. david
    Mayo 8, 2009 a las 12:49 pm | #17

    no se nada de netbeans y estoy superhipermegaarchiperdido y no se por donde empezar

    les dejo mi correo por si alguien me quiere agregar para darme una ayudadita.

    davideze25@hotmail.com

  17. Camilo
    Julio 10, 2009 a las 11:30 am | #18

    Nachxs este es uno de los mejores ejemplos que he encontrado y mas cercano al web sevice que debo desarrollar. El problema mio es el siguiente. El web service mio deberá funcionar de la siguiente manera. El cliente deberá hacer una consulta sobre una vista que ellos nos entregaran, lo cual no es problema ya he generado las conexiones a las posibles vistas y base de datos, de la consulta que se hace sobre la vista saca unos datos que los meto en un arraylist lo cual también ya hice. El servidor web service debe recibir los datos que el cliente le envía en este caso el (arraylist) y ingresarlos a la base de datos.
    Problemas:
    * No se como enviar el objeto (arraylist del cliente), al servidor.

    Estoy trabajando con eclipse, jdk 1.5 y jboss 4.2.3 GA

    Alguna posible solucion con la cual me podrías ayudar?

    • nachxs
      Julio 10, 2009 a las 4:07 pm | #19

      Hola Camilo, gracias por el comentario.
      Bueno tengo una pregunta, el webservices lo estas implementando tu?? si fuera asi, porque a tu webservices no le creas con input del tipo arraylist??, o que tipo de dato recibe tu webservices??

      Saludos.

      • Camilo
        Julio 10, 2009 a las 4:18 pm | #20

        En si sería buenisimo que por el web service se pudiera enviar el objeto, en este caso el arraylist completo pero por lo que me he dado cuenta, es que con java no se puede, caso contrario de .net, por que en java si nos damos cuenta lo que el servidor web service interpreta es un xml generado cuando el cliente realiza las operaciones. Otra opcion que he pensado es desempaquetar la lista en una clase que llame web service, y mediante un ciclo enviarle los datos al xml para que los interprete. El problemilla es que no se como hacerlo. De casualidad tu no tienes un ejemplo de envio de datos desde el lado cliente al servidor web service que me facilitaras?

  18. nachxs
    Julio 10, 2009 a las 4:37 pm | #21

    A ver Camilo, por un webservice si se puede recibir un objeto del tipo ArrayList, te estoy enviando un pequeño ejemplo que implemente asi rapido para que lo analizes, segun lo que te entendi, tu quieres enviar a tu webservice un objeto arraylist.

    Espero sea lo que necesitas.

    Saludos.

  19. Kacemaly
    Septiembre 18, 2009 a las 1:10 pm | #22

    Hola, me pueden ayudar por favor. Estoy haciendo una conexion a una base de datos con java y postgre. Tengo mi clase conectar (donde esta toda la conexion) y mi clase en donde tengo diferentes metodos, que insertan, borran, etc. Como mando llamar todos esos metodos a mi clase conectar???? Me pueden ayudar por favor………

    • nachxs
      Septiembre 18, 2009 a las 1:26 pm | #23

      Hola Kacemaly, bueno supongamo que tu clase de conexion se llama Conexion.java y dentro de esta clase tienes el metodo llamado getConexion(). Entonces tu en tu metodo de insercion deberias tener algo como esto:

      Connection con = null;
      Statement smt = null;
      ResultSet rs = null;
      ….
      Conexion conectar = new Conexion();
      conn = connectar.getConexion()
      ….
      sql=(“aqui_tu_sql;”);
      smt = conn.createStatement();
      rs = smt.executeQuery(sql);
      if (rs.next()){
      return “OK”;
      }
      …..

      Espero te sea de utilidad, en todo caso si no me avisas para enviarte un pequeño proyecto que tenga a la mano.

  20. edgar
    Octubre 22, 2009 a las 1:40 pm | #24

    Hola que tal nachxs muchas gracias por el blog lo he encontrado muy muy interesante estoy tratando de diseñar un sistema que maneje una base de datos utilizando postgres y netbeans e intentado basarme en el ejemplo que viene en el net beans por default pero me no me corre tu ya lo has probado…este ejemplo se genera asi… file–new project–java–java desktop application–database application y genera la interfaz y todo pero al momento de correr me manda excepciones y no veo como es que trabaja en si…Me podrias ayudar con esto o mandarme algun ejemplo de algo muy parecido de antemano muchas gracias

  1. Julio 12, 2008 a las 1:32 am | #1