Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/05/2013, 17:31
__KEWIN
 
Fecha de Ingreso: mayo-2013
Mensajes: 4
Antigüedad: 11 años
Puntos: 0
Respuesta: Problema con el pool de conexiones en una aplicacion de escritorio

Hola fegm_4 yo tengo esto al parecer es el mismo problema estoy listando 4 campos y son solo 4 registros no lo e probado en un jTable solo con un System.out.println(); pero me parece que demora un poco aquí dejo el código no estaría mal que lo pruebes.

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSource;

/**
*
* @author kewining
*/
public class Conexion4_BD {

/**
* @param args
*/
public static void main(String[] args) {
new Conexion4_BD();
}

/** Pool de conexiones */
private DataSource dataSource;

/**
* Inicializa el pool de conexiones BasicDataSource y realiza una insercion
* y una consulta
*/
public Conexion4_BD() {
inicializaDataSource();
//inserta();
realizaConsulta();
}

/**
* Inicializacion de BasicDataSource
*/
private void inicializaDataSource() {
BasicDataSource basicDataSource = new BasicDataSource();

basicDataSource.setDriverClassName("com.mysql.jdbc .Driver");
basicDataSource.setUsername("username");
basicDataSource.setPassword("pass");
basicDataSource.setUrl("jdbc:mysql://servidor:3306/bd");

// Opcional. Sentencia SQL que le puede servir a BasicDataSource
// para comprobar que la conexion es correcta.
basicDataSource.setValidationQuery("select 1");

dataSource = basicDataSource;
}

/**
* Realiza una insercion, pidiendo una conexion al dataSource y cerrandola
* inmediatamente despues, para liberarla.
*/
private void inserta() {
Connection conexion = null;
try {
// BasicDataSource nos reserva una conexion y nos la devuelve.
conexion = dataSource.getConnection();

// La insercion.
Statement ps = conexion.createStatement();
ps
.executeUpdate("insert into person values (null,22,'Pedro','Martinez')");

} catch (SQLException e) {
e.printStackTrace();
} finally {
liberaConexion(conexion);
}
}

/**
* Cierra la conexion. Al provenir de BasicDataSource, en realidad no se
* esta cerrando. La llamada a close() le indica al BasicDataSource que
* hemos terminado con dicha conexion y que puede asignarsela a otro que la
* pida.
*
* @param conexion
*/
private void liberaConexion(Connection conexion) {
try {
if (null != conexion) {
// En realidad no cierra, solo libera la conexion.
conexion.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}

/**
* Realiza una consulta a la base de datos y muestra los resultados en
* pantalla.
*/
private void realizaConsulta() {
Connection conexion = null;
try {
conexion = dataSource.getConnection();
Statement sentencia = conexion.createStatement();
ResultSet rs = sentencia.executeQuery("select * from tabla");

// La tabla tiene cuatro campos.
while (rs.next()) {
System.out.println(rs.getObject("campo1"));
System.out.println(rs.getObject("campo2"));
System.out.println(rs.getObject("campo3"));
System.out.println(rs.getObject("campo4"));
System.out.println("--------------");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// En el finally, para asegurar que se ejecuta, se cierra la
// conexion.
liberaConexion(conexion);
}
}
}