Ver Mensaje Individual
  #3 (permalink)  
Antiguo 01/05/2007, 23:13
Avatar de Nighter
Nighter
 
Fecha de Ingreso: enero-2007
Mensajes: 97
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Conexion java postgre

esta muy bien lo que explica PETERQB pero recuaerdo algunos ayeres cuando me inicie en esto de las bases de datos con java que me fue un poco dificil ya que solo encontraba ejemplos, sin tratar de ofender, algo complicados como el del buen PETER, por eso quei te mando una clase en la que he trabajado ya desde hace un rato y la he ido haciendo un poco mas robusta a la vez, cualquiera que la vea, por favor, sientase libre de mejorarla, es versatil, ya que se le puede agregar cualquier url de conexion para cualquier manejador y todo lo demas funciona (hasta ahora no me ha fallado despues de 3 años de uso), ok in mas preambulo aqui esta la clase Conector:

Código PHP:

package server
;

import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.Connection;
import java.util.Properties;
import java.sql.SQLException;
import javax.swing.JOptionPane
import org.postgresql.util.PSQLException;

public class 
Conector 

 private 
int numeroCols

 private 
Connection conn;    
 private 
ResultSet result;
 private 
Statement statement;
 private 
String rutaConexion;
  
{
 
numeroCols = -1;
}

 protected 
Conector(Properties prop
 {
  
rutaConexion "jdbc:postgresql://localhost:5432/omdb";
      
  
inicializarConexion(rutaConexionprop);
 }
 
 protected 
Conector(String hostString puertoProperties prop
 {
  
rutaConexion "jdbc:postgresql://" host ":"puerto +"/omdb";
      
  
inicializarConexion(rutaConexionprop);
 }
 
 private final 
void inicializarConexion(String rutaConexionProperties prop)
 {      
  try 
  {
   Class.
forName("org.postgresql.Driver");
   
conn java.sql.DriverManager.getConnection(rutaConexionprop);
   
statement conn.createStatement(ResultSet.TYPE_FORWARD_ONLYResultSet.CONCUR_UPDATABLEResultSet.HOLD_CURSORS_OVER_COMMIT);
  }
  catch(
PSQLException e)
  {
   
JOptionPane.showMessageDialog(null,e.getMessage()+". Acceso denegado","Error al acceder al sistema",JOptionPane.ERROR_MESSAGE);
   
System.exit(1);
  }
  catch (
SQLException e
  {
   
JOptionPane.showMessageDialog(null,e.getMessage()+". No se pudo accesar a la base de datos","Sin acceso, no se obtuvo conexion",JOptionPane.ERROR_MESSAGE);
   
System.exit(1);
  }  
  catch (
ClassNotFoundException e
  {
   
JOptionPane.showMessageDialog(null,e.getMessage()+". No se pudo establecer conexion con la base de datos","Sin conexion, el controlador no esta presente",JOptionPane.ERROR_MESSAGE);
   
System.exit(1);
  }
 } 
 
 public final 
ResultSet selectQuery(String querythrows PSQLExceptionSQLException 
 
{
  
result statement.executeQuery(query);       
  return 
result;    
 }

 public final 
void IUD(String querythrows PSQLExceptionSQLException 
 
{
  
statement.executeUpdate(query);         
 }
 
 public final 
void sp(String querythrows PSQLExceptionSQLException 
 
{
  
statement.execute(query);         
 }
  
 protected final 
void close() throws PSQLExceptionSQLException 
 
{
  if(
result != null)
   
result.close();
   
  if(
statement != null)
   
statement.close();
   
  if(
conn != null)
   
conn.close();     
 }

Clase Servidor (nunca me ha gustado hacer una conexion directa con la clase conexion mejor uso Singleton (creacion de solo una instancia) en la clase servidor)

Código PHP:
package server;

import java.util.Properties;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import org.postgresql.util.PSQLException;

public class 
Servidor 
{
 public static 
Conector conexion;
 public static 
Properties prop;
 
 
//Singleton
 
private final static Servidor servidor = new Servidor();
 
 private 
Servidor()
 {
  
prop = new Properties();
 }
 
 public static final 
void close()
 {
  
/*Debenos de recordar cerrar todos los flujos abiertos, como la base de batos o archivos o la impresora etc*/
  
try
  {        
   
conexion.close();
  }
  catch(
PSQLException e)
  {
   
JOptionPane.showMessageDialog(null,e.getMessage()+". Intento de cierre denegado por DBMS","Error al cerrar la conexion",JOptionPane.ERROR_MESSAGE);
   
System.exit(1);
  }
  catch (
SQLException e
  {
   
JOptionPane.showMessageDialog(null,e.getMessage()+". Intento de cierre denegado","Sin acceso, no se obtuvo cierre de conexion",JOptionPane.ERROR_MESSAGE);
   
System.exit(1);
  } 
 }
 
 
/**Metodo que intenta establecer la conexion con la base se datos*/
 
public static void attCon() 
 {
  
conexion = new Conector(prop);  
 }

por ultimo no olvides que debes tener los jar de postgresql incrustados en tu proyecto para que esto funcione ok?

espero que te sirva cualquier duda mi mail: [email protected]

Última edición por Nighter; 01/05/2007 a las 23:25