some image

Codes and Tags

Conectar JAVA con PostgreSQL (JDBC) 2

Etiquetas: Blog, Programación No comments

Bien aquí esta el código para conectarse a una BD PostgreSQL utilizando JDBC : 

 


/***
 * Clase que permita relizar una conexion a una BD utilizando
 * JDBC.
 * 
 * Driver postgresql : http://jdbc.postgresql.org/download.html
 * Driver mysql      : http://www.mysql.com/products/connector/
 * Lista de drivers API JDBC : http://developers.sun.com/product/jdbc/drivers

 * @author [D-m-K], Between Codes and Tags
 */

import java.sql.*;

public class Conexion {

	// Datos de conexion
	private final String driver = "org.postgresql.Driver";
	private final String name_db = "jdbc:postgresql://localhost:5432/betweencodes";
	private final String user_db = "postgres";
	private final String pass_db = "master";
	private Connection con;
	private PreparedStatement pst;

	/**
	 * Constructor que realiza la conexion cuando se instancia un objeto
	 * Conexion
	 */
	Conexion() {
		try {
			// Driver de conexion, en este caso estoy utilizando el de
			// postgresql
			Class.forName(driver);
			// Creo una conexion con la base de datos a partir de los datos de
			// conexion
			con = DriverManager.getConnection(name_db, user_db, pass_db);
		} catch (Exception e) {
			// Si ocurre un error lo capturo
			e.printStackTrace();
		}
	}

	/**
	 * A partir de una consulta SQL realizada por el usuario obtiene un
	 * resultado
	 * 
	 * @param sql
	 * @return
	 */
	public void consulta(String sql) {
		// Declaracion en null del resultSet
		System.out.println("Consulta : " + sql + "\n");
		try {
			// Para contar los registros
			int registros = 0;
			// Preparo la sentencia sql a ejecutar
			pst = con.prepareStatement(sql);
			// Obtengo los datos de la consulta en un resultset
			ResultSet rs = pst.executeQuery();
			// Guardo los datos del ResultSet en un ResultSetMetadata para jugar
			// un poco mas
			ResultSetMetaData rsm = rs.getMetaData();

			// Obtengo los nombres de las columnas 😀
			for (int i = 1; i <= rsm.getColumnCount(); i++) {
				System.out.print("" + rsm.getColumnName(i) + " | ");
			}
			System.out.println("");

			while (rs.next()) {
				for (int i = 1; i <= rsm.getColumnCount(); i++) {
					System.out.print(rs.getString(i) + " | ");
				}
				registros++;
				System.out.println("");
			}

			System.out.println("\nCantidad de registros : " + registros);
			System.out
					.println("------------------------------------------------- \n");
			// Libero los datos del PreparedStatement, automaticamente tambien
			// se libera el ResultSet
			pst.close();
		} catch (SQLException e) {
			// Capturo la excepcion en caso de error
			e.printStackTrace();
		}
	}

	/**
	 * Se encarga de ejecutar sentencias DML del tipo : UPDATE, DELETE,
	 * INSERT...
	 * 
	 * @param sql
	 */
	public void sentencia(String sql) {
		// Declaracion en null del resultSet
		System.out.println("Sentencia : " + sql + "\n");
		try {
			// Preparo la sentencia sql a ejecutar
			pst = con.prepareStatement(sql);
			// Obtengo los datos de la consulta en un resultset
			// Para contar los registros afectados
			int registros = pst.executeUpdate();

			System.out.println("\nCantidad de registros afectados : "
					+ registros);
			System.out
					.println("------------------------------------------------- \n");
			// Libero los datos del PreparedStatement, automaticamente tambien
			// se libera el ResultSet
			pst.close();
		} catch (SQLException e) {
			// Capturo la excepcion en caso de error
			e.printStackTrace();
		}
	}

	/**
	 * Metodo que permite cerrar la conexion realizada a la BD
	 */
	public void desconectar() {
		try {
			// Cierro todas las conexiones con la base de datos
			// Automaticamente libero memoria y cierro las conexiones abiertas
			// en el objeto Connection
			con.close();
		} catch (Exception e) {
			// Controlo cualquier excepcion generada durante el cierre de la
			// conexion
			e.printStackTrace();
		}
	}

	/**
	 * Ejemplo de la utilizacion de la clase Conexion
	 * 
	 * @param args
	 */
	public static void main(String args[]) {
		// Creacion de objeto conexion para crear una conexion a la Base de
		// datos
		Conexion c = new Conexion();
		// Ejecucion de consulta : Retorna los datos en pantalla
		c.consulta("SELECT * FROM usuario");
		c.consulta("SELECT count(1) FROM usuario");
		c.consulta("SELECT id, login, page_url FROM usuario WHERE login LIKE '%a%'");
		// Ejecucion de INSERT, UPDATE y DELETE
		c.sentencia("INSERT INTO usuario (login,pass,name,page_url) VALUES ('uno',md5('1'),'El usuario 1','No tiene')");
		c.sentencia("INSERT INTO usuario (login,pass,name,page_url) VALUES ('dos',md5('2'),'El usuario 2','tampoco')");
		c.sentencia("UPDATE usuario SET page_url = 'http://www.google.com' WHERE login = 'cocoman'");
		c.sentencia("DELETE FROM usuario WHERE name LIKE '%usuario%'");
		// Desconexion a la Base de datos
		c.desconectar();
	}

}

Resultados obtenidos luego de la ejeución

Consulta : SELECT * FROM usuario

id | login | pass | name | page_url |
6 | dmk | e10adc3949ba59abbe56e057f20f883e | [D-m-K] | http://dmk-ricteam.blogspot.com/ |
8 | Checho | 900150983cd24fb0d6963f7d28e17f72 | DonChecho | http://www.seedcol.net/ |
9 | ghost | d16fb36f0911f878998c136191af705e | Ghost | http://developeando.net/ |
11 | Disegin | 68053af2923e00204c3ca7c6a3150cf7 | Disegin | http://disegin.info/es/ |
10 | Urban | 250cf8b51c773f3f8dc8b4be867a9a02 | ElTales | http://www.brianur.info/ |
7 | cocoman | 202cb962ac59075b964b07152d234b70 | CocoMan | http://www.google.com | 

Cantidad de registros : 6
------------------------------------------------- 

Consulta : SELECT count(1) FROM usuario

count |
6 | 

Cantidad de registros : 1
------------------------------------------------- 

Consulta : SELECT id, login, page_url FROM usuario WHERE login LIKE '%a%'

id | login | page_url |
10 | Urban | http://www.brianur.info/ |
7 | cocoman | http://www.google.com | 

Cantidad de registros : 2
------------------------------------------------- 

Sentencia : INSERT INTO usuario (login,pass,name,page_url) VALUES ('uno',md5('1'),'El usuario 1','No tiene')

Cantidad de registros afectados : 1
------------------------------------------------- 

Sentencia : INSERT INTO usuario (login,pass,name,page_url) VALUES ('dos',md5('2'),'El usuario 2','tampoco')

Cantidad de registros afectados : 1
------------------------------------------------- 

Sentencia : UPDATE usuario SET page_url = 'http://www.google.com' WHERE login = 'cocoman'

Cantidad de registros afectados : 1
------------------------------------------------- 

Sentencia : DELETE FROM usuario WHERE name LIKE '%usuario%'

Cantidad de registros afectados : 2
-------------------------------------------------

About Edwin Torres

Related Posts

  • Logo Java
  • Logo Java
  • Logo Java
  • Logo Java

Add your comment