/** * @(#) DataStore.java */ package com.tarisan.persistencia; import com.tarisan.excepcion.*; import com.tarisan.log.*; import com.tarisan.util.Utilidades; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Vector; /** * Gesti�n de accesos de conexi�n, recuperaci�n y actualizaci�n de registros en la base de datos. * @author Dpto. Inform�tica. * @version 1.0, 24/09/2003 */ public class DataStore { /** * Obtenci�n de la conexi�n a la base de datos. *
La implementaci�n del m�todo se hace en el DataStore correspondiente a cada base de datos. * @return El objeto de conexi�n a la base de datos. * @throws */ public java.sql.Connection obtenerConexion() throws ExcepcionTarisan { Connection conexion = null; return conexion; } /** * Modifica la conexi�n para que se trate de una conexi�n transaccional. * @param conexion La conexi�n que modifiaremos para soportar transacciones. * @return El objeto de conexi�n transaccional a la base de datos. * @throws */ public Connection iniciarTransaccion(Connection conexion) throws ExcepcionTarisan { try { conexion.setAutoCommit(false); return conexion; } catch(SQLException ex) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la creacion de la conexion transaccional: " + ex ); throw new ExcepcionTarisan(ex.getMessage()); } } /** * Confirma la transacci�n iniciada por el usuario. * @param conexion Conexi�n que contiene la transacci�n a confirmar. * @throws */ public void confirmarTransaccion(Connection conexion) throws ExcepcionTarisan { try { conexion.commit(); conexion.setAutoCommit(true); } catch(SQLException ex) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la confirmacion de la transaccion: " + ex ); throw new ExcepcionTarisan(ex.getMessage()); } } /** * Deshace la transacci�n iniciada por el usuario. * @param conexion La conexi�n que contiene la transacci�n a deshacer. * @throws */ public void deshacerTransaccion(Connection conexion) throws ExcepcionTarisan { try { conexion.rollback(); conexion.setAutoCommit(true); } catch(SQLException ex) { LogTarisan.logger.log(NivelLog.ERROR, "Error al deshacer la transaccion: " + ex ); throw new ExcepcionTarisan(ex.getMessage()); } } /** * Libera la conexi�n a la base de datos. *
La implementaci�n del m�todo se hace en el DataStore correspondiente a cada base de datos. * @param conexion La conexi�n a liberar. * @throws */ public void liberarConexion(Connection conexion) throws ExcepcionTarisan { try { conexion.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * Selecciona registros de la base de datos retornando un Vector con el resultado obtenido. *
El proceso que se sigue es el siguiente:
    *
  1. obtiene la conexi�n
  2. *
  3. prepara la sentencia: objeto PreparedStatement
  4. *
  5. ejecuta la sentencia
  6. *
  7. recoge el objeto ResultSet
  8. *
  9. cierra el ResultSet
  10. *
  11. cierra la sentencia
  12. *
  13. libera la conexi�n
  14. *
  15. retorna el ResultSet o null seg�n el resultado de la selecci�n
  16. *

* @param sqlSelect La sentencia SQL completa de selecci�n (incluidas sus condiciones) en la base de datos. * @return El Vector con los registros seleccionados (todos pertenencientes a la clase Object). * @throws */ public Vector seleccionar(String sqlSelect) throws ExcepcionTarisan { Vector vResultado = new Vector(); Connection conexion = null; try { conexion = this.obtenerConexion(); } catch(ExcepcionTarisan sqle) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selecci�n del Vector: " + sqle + "(" + sqlSelect + ")"); } if(conexion != null) { try { PreparedStatement ps = conexion.prepareStatement(sqlSelect, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet rs = ps.executeQuery(); while(rs.next()) { vResultado.addElement(rs.getString(1)); } rs.close(); ps.close(); this.liberarConexion(conexion); LogTarisan.logger.log(NivelLog.DEBUG, "Vector obtenido " + vResultado + " (" + sqlSelect + ")"); } catch(SQLException sqle) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selecci�n del Vector: " + sqle + "(" + sqlSelect + ")"); throw new ExcepcionTarisan(sqle.getMessage()); } } return vResultado; } /** * Selecciona registros de la base de datos retornando un ResultSet con el resultado obtenido. *
El proceso que se sigue es el siguiente:
    *
  1. prepara la sentencia: objeto PreparedStatement
  2. *
  3. ejecuta la sentencia
  4. *
  5. recoge el objeto ResultSet
  6. *
  7. retorna el ResultSet o null seg�n el resultado de la selecci�n
  8. *

* @param conexion El objeto Connection de conexi�n a la base de datos. * @param sqlSelect La sentencia SQL completa de selecci�n (incluidas sus condiciones) en la base de datos. * @return El ResultSet con los registros seleccionados o null si se ha producido alg�n error. * @throws */ public ResultSet seleccionar(Connection conexion, String sqlSelect) throws ExcepcionTarisan { ResultSet rs = null; if(conexion != null) { try { PreparedStatement ps = conexion.prepareStatement(sqlSelect, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); LogTarisan.logger.log(NivelLog.DEBUG, "Lanzamos la query:"+sqlSelect); rs = ps.executeQuery(); LogTarisan.logger.log(NivelLog.DEBUG, "ResultSet obtenido " + rs + " (" + sqlSelect + ")"); } catch(SQLException sqle) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selecci�n del ResultSet: " + sqle + "(" + sqlSelect + ")"); throw new ExcepcionTarisan(sqle.toString()); } } return rs; } /** * Selecciona registros de la base de datos retornando un ResultSet con el resultado obtenido. *
El proceso que se sigue es el siguiente:
    *
  1. prepara la sentencia: objeto PreparedStatement
  2. *
  3. carga cada uno de las condiciones del array en la sentencia, en su orden correspondiente
  4. *
  5. ejecuta la sentencia
  6. *
  7. recoge el objeto ResultSet
  8. *
  9. retorna el ResultSet o null seg�n el resultado de la selecci�n
  10. *

* @param conexion El objeto Connection de conexi�n a la base de datos. * @param sqlSelect La sentencia SQL de selecci�n en la base de datos. * @param aCondiciones El array de objetos con las condiciones a buscar en la sentencia SQL. * @return El ResultSet con los registros seleccionados o null si se ha producido alg�n error. * @throws */ public ResultSet seleccionar(Connection conexion, String sqlSelect, Object[] aCondiciones) throws ExcepcionTarisan { ResultSet rs = null; if(conexion != null) { try { LogTarisan.logger.log(NivelLog.DEBUG, "Se va a ejecutar la sql: " + sqlSelect + ", con las condiciones " + aCondiciones.toString()); PreparedStatement ps = conexion.prepareStatement(sqlSelect, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); for(int i = 0; i < aCondiciones.length; i++) { ps.setObject(i+1, aCondiciones[i]); } LogTarisan.logger.log(NivelLog.DEBUG, "Se ejecuta la conexion: " + ps.toString()); rs = ps.executeQuery(); //LogTarisan.logger.log(NivelLog.DEBUG, "ResultSet obtenido " + rs + " " + sqlSelect + " (" + Utilidades.generarStringDeArray(aCondiciones) + ")"); StringBuffer sql = new StringBuffer(sqlSelect); LogTarisan.logger.log(NivelLog.DEBUG, "ResultSet obtenido " + rs + " " + Utilidades.obtenerSentenciaSQL(sql, null, aCondiciones) ); } catch(SQLException sqle) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selecci�n del ResultSet: " + sqle + " " + sqlSelect + " (" + Utilidades.generarStringDeArray(aCondiciones) + ")"); throw new ExcepcionTarisan(sqle.toString()); } } return rs; } /** * Inserta un registro en la base de datos. *
El proceso que se sigue es el siguiente:
    *
  1. obtiene la conexi�n
  2. *
  3. prepara la sentencia: objeto PreparedStatement
  4. *
  5. ejecuta la sentencia
  6. *
  7. cierra la sentencia
  8. *
  9. libera la conexi�n
  10. *
  11. retorna true o false seg�n el resultado de la inserci�n
  12. *

* @param sqlInsert La sentencia SQL de inserci�n completa, incluidos los valores. * @return El valor booleano indicando si se ha realizado correctamente la inserci�n. * @throws */ public boolean insertar(String sqlInsert) throws ExcepcionTarisan { boolean resultado = true; Connection conexion = null; try { conexion = this.obtenerConexion(); if(conexion != null) { PreparedStatement ps = conexion.prepareStatement(sqlInsert); ps.executeUpdate(); ps.close(); LogTarisan.logger.log(NivelLog.DEBUG, "Inserci�n de registro correcta " + sqlInsert); this.liberarConexion(conexion); } else { resultado = false; } } catch(SQLException sqle) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la inserci�n de registro: " + sqle + " " + sqlInsert); throw new ExcepcionTarisan(sqle.toString()); } return resultado; } /** * Inserta un registro en la base de datos utilizando la conexi�n que se le pasa por par�metro. * Utilizado para las transacciones. *
El proceso que se sigue es el siguiente:
    *
  1. prepara la sentencia: objeto PreparedStatement
  2. *
  3. ejecuta la sentencia
  4. *
  5. cierra la sentencia
  6. *
  7. retorna true o false seg�n el resultado de la inserci�n
  8. *

* @param sqlInsert La sentencia SQL de inserci�n completa, incluidos los valores. * @param conexion La conexi�n utilizada para ejecutar la sentencia. * @return El valor booleano indicando si se ha realizado correctamente la inserci�n. * @throws */ public boolean insertar(String sqlInsert, Connection conexion) throws ExcepcionTarisan { boolean resultado = true; try { if(conexion != null) { PreparedStatement ps = conexion.prepareStatement(sqlInsert); ps.executeUpdate(); ps.close(); LogTarisan.logger.log(NivelLog.DEBUG, "Inserci�n de registro correcta " + sqlInsert); } else { resultado = false; } } catch(SQLException sqle) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la inserci�n de registro: " + sqle + " " + sqlInsert); throw new ExcepcionTarisan(sqle.toString()); } return resultado; } /** * Inserta un registro en la base de datos. *
El proceso que se sigue es el siguiente:
    *
  1. obtiene la conexi�n
  2. *
  3. prepara la sentencia: objeto PreparedStatement
  4. *
  5. carga cada uno de los valores del array en la sentencia, en su orden correspondiente
  6. *
  7. ejecuta la sentencia
  8. *
  9. cierra la sentencia
  10. *
  11. libera la conexi�n
  12. *
  13. retorna true o false seg�n el resultado de la inserci�n
  14. *
* @param sqlInsert La sentencia SQL de inserci�n completa, incluidos los valores. * @param aValores El array de objetos con los valores a insertar en la sentencia SQL. * @return El valor booleano indicando si se ha realizado correctamente la inserci�n. * @throws */ public boolean insertar(String sqlInsert, Object[] aValores) throws ExcepcionTarisan { boolean resultado = true; Connection conexion = null; try { conexion = this.obtenerConexion(); if(conexion != null) { PreparedStatement ps = conexion.prepareStatement(sqlInsert); for(int i = 0; i < aValores.length; i++) { ps.setObject(i+1, aValores[i]); } ps.executeUpdate(); ps.close(); LogTarisan.logger.log(NivelLog.DEBUG, "Inserci�n de registro correcta " + sqlInsert + " (" + Utilidades.generarStringDeArray(aValores) + ")"); this.liberarConexion(conexion); } else { resultado = false; } } catch(SQLException sqle) { resultado = false; LogTarisan.logger.log(NivelLog.ERROR, "Error en la inserci�n de registro: " + sqle + " " + sqlInsert + " (" + Utilidades.generarStringDeArray(aValores) + ")"); throw new ExcepcionTarisan(sqle.toString()); } return resultado; } /** * Inserta un registro en la base de datos utilizando la conexi�n que se le pasa por par�metro. * Utilizado para las transacciones. *
El proceso que se sigue es el siguiente:
    *
  1. prepara la sentencia: objeto PreparedStatement
  2. *
  3. carga cada uno de los valores del array en la sentencia, en su orden correspondiente
  4. *
  5. ejecuta la sentencia
  6. *
  7. cierra la sentencia
  8. *
  9. retorna true o false seg�n el resultado de la inserci�n
  10. *
* @param sqlInsert La sentencia SQL de inserci�n completa, incluidos los valores. * @param aValores El array de objetos con los valores a insertar en la sentencia SQL. * @param conexion La conexi�n utilizada para ejecutar la sentencia. * @return El valor booleano indicando si se ha realizado correctamente la inserci�n. * @throws */ public boolean insertar(String sqlInsert, Object[] aValores, Connection conexion) throws ExcepcionTarisan { boolean resultado = true; try { if(conexion != null) { PreparedStatement ps = conexion.prepareStatement(sqlInsert); for(int i = 0; i < aValores.length; i++) { ps.setObject(i+1, aValores[i]); } ps.executeUpdate(); ps.close(); LogTarisan.logger.log(NivelLog.DEBUG, "Inserci�n de registro correcta " + sqlInsert + " (" + Utilidades.generarStringDeArray(aValores) + ")"); } else { resultado = false; } } catch(SQLException sqle) { resultado = false; LogTarisan.logger.log(NivelLog.ERROR, "Error en la inserci�n de registro: " + sqle + " " + sqlInsert + " (" + Utilidades.generarStringDeArray(aValores) + ")"); throw new ExcepcionTarisan(sqle.toString()); } return resultado; } /** * Modifica registros de la base de datos. *
El proceso que se sigue es el siguiente:
    *
  1. obtiene la conexi�n
  2. *
  3. prepara la sentencia: objeto PreparedStatement
  4. *
  5. ejecuta la sentencia
  6. *
  7. cierra la sentencia
  8. *
  9. libera la conexi�n
  10. *
  11. retorna true o false seg�n el resultado de la modificaci�n
  12. *
* @param sqlUpdate La sentencia SQL de modificaci�n completa, incluidos los valores y las condiciones. * @return El valor booleano indicando si se ha realizado correctamente la modificaci�n. * @throws */ public boolean actualizar(String sqlUpdate) throws ExcepcionTarisan { boolean resultado = true; Connection conexion = null; try { conexion = this.obtenerConexion(); if(conexion != null) { PreparedStatement ps = conexion.prepareStatement(sqlUpdate); ps.executeUpdate(); ps.close(); LogTarisan.logger.log(NivelLog.DEBUG, "Modificaci�n de registros correcta " + sqlUpdate); this.liberarConexion(conexion); } else { resultado = false; } } catch(SQLException sqle) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la modificaci�n de registros: " + sqle + " " + sqlUpdate); throw new ExcepcionTarisan(sqle.toString()); } return resultado; } /** * Modifica registros de la base de datos utilizando la conexi�n que se le pasa por par�metro. * Utilizado para las transacciones. *
El proceso que se sigue es el siguiente:
    *
  1. prepara la sentencia: objeto PreparedStatement
  2. *
  3. ejecuta la sentencia
  4. *
  5. cierra la sentencia
  6. *
  7. retorna true o false seg�n el resultado de la modificaci�n
  8. *
* @param sqlUpdate La sentencia SQL de modificaci�n completa, incluidos los valores y las condiciones. * @param conexion La conexi�n utilizada para ejecutar la sentencia. * @return El valor booleano indicando si se ha realizado correctamente la modificaci�n. * @throws */ public boolean actualizar(String sqlUpdate, Connection conexion) throws ExcepcionTarisan { boolean resultado = true; try { if(conexion != null) { PreparedStatement ps = conexion.prepareStatement(sqlUpdate); ps.executeUpdate(); ps.close(); LogTarisan.logger.log(NivelLog.DEBUG, "Modificaci�n de registros correcta " + sqlUpdate); } else { resultado = false; } } catch(SQLException sqle) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la modificaci�n de registros: " + sqle + " " + sqlUpdate); throw new ExcepcionTarisan(sqle.toString()); } return resultado; } /** * Modifica registros de la base de datos. *
El proceso que se sigue es el siguiente:
    *
  1. obtiene la conexi�n
  2. *
  3. prepara la sentencia: objeto PreparedStatement
  4. *
  5. carga cada uno de los valores del array en la sentencia, en su orden correspondiente
  6. *
  7. carga cada uno de las condiciones del array en la sentencia, en su orden correspondiente
  8. *
  9. ejecuta la sentencia
  10. *
  11. cierra la sentencia
  12. *
  13. libera la conexi�n
  14. *
  15. retorna true o false seg�n el resultado de la modificaci�n
  16. *
* @param sqlInsert La sentencia SQL de inserci�n completa, incluidos los valores. * @param aValores El array de objetos con los valores a actualizar en la sentencia SQL. * @param aCondiciones El array de objetos con las condiciones a buscar en la sentencia SQL. * @return El valor booleano indicando si se ha realizado correctamente la inserci�n. * @throws */ public boolean actualizar(String sqlUpdate, Object[] aValores, Object[] aCondiciones) throws ExcepcionTarisan { boolean resultado = true; Connection conexion = null; try { conexion = this.obtenerConexion(); if(conexion != null) { PreparedStatement ps = conexion.prepareStatement(sqlUpdate); int cont = 1; for(int i = 0; i < aValores.length; i++) { ps.setObject(cont++, aValores[i]); } for(int i = 0; i < aCondiciones.length; i++) { ps.setObject(cont++, aCondiciones[i]); } ps.executeUpdate(); ps.close(); LogTarisan.logger.log(NivelLog.DEBUG, "Modificaci�n de registros correcta " + sqlUpdate + " (" + Utilidades.generarStringDeArray(aValores) + ") (" + Utilidades.generarStringDeArray(aCondiciones) + ")"); this.liberarConexion(conexion); } else { resultado = false; } } catch(SQLException sqle) { resultado = false; LogTarisan.logger.log(NivelLog.ERROR, "Error en la modificaci�n de registros: " + sqle + " " + sqlUpdate + " (" + Utilidades.generarStringDeArray(aValores) + ") (" + Utilidades.generarStringDeArray(aCondiciones) + ")"); throw new ExcepcionTarisan(sqle.toString()); } return resultado; } /** * Modifica registros de la base de datos utilizando la conexi�n que se le pasa por par�metro. * Utilizado para las transacciones. *
El proceso que se sigue es el siguiente:
    *
  1. prepara la sentencia: objeto PreparedStatement
  2. *
  3. carga cada uno de los valores del array en la sentencia, en su orden correspondiente
  4. *
  5. carga cada uno de las condiciones del array en la sentencia, en su orden correspondiente
  6. *
  7. ejecuta la sentencia
  8. *
  9. cierra la sentencia
  10. *
  11. retorna true o false seg�n el resultado de la modificaci�n
  12. *
* @param sqlInsert La sentencia SQL de inserci�n completa, incluidos los valores. * @param aValores El array de objetos con los valores a actualizar en la sentencia SQL. * @param aCondiciones El array de objetos con las condiciones a buscar en la sentencia SQL. * @param conexion La conexi�n utilizada para ejecutar la sentencia. * @return El valor booleano indicando si se ha realizado correctamente la inserci�n. * @throws */ public boolean actualizar(String sqlUpdate, Object[] aValores, Object[] aCondiciones, Connection conexion) throws ExcepcionTarisan { boolean resultado = true; try { if(conexion != null) { PreparedStatement ps = conexion.prepareStatement(sqlUpdate); int cont = 1; for(int i = 0; i < aValores.length; i++) { ps.setObject(cont++, aValores[i]); } for(int i = 0; i < aCondiciones.length; i++) { ps.setObject(cont++, aCondiciones[i]); } ps.executeUpdate(); ps.close(); LogTarisan.logger.log(NivelLog.DEBUG, "Modificaci�n de registros correcta " + sqlUpdate + " (" + Utilidades.generarStringDeArray(aValores) + ") (" + Utilidades.generarStringDeArray(aCondiciones) + ")"); } else { resultado = false; } } catch(SQLException sqle) { resultado = false; LogTarisan.logger.log(NivelLog.ERROR, "Error en la modificaci�n de registros: " + sqle + " " + sqlUpdate + " (" + Utilidades.generarStringDeArray(aValores) + ") (" + Utilidades.generarStringDeArray(aCondiciones) + ")"); throw new ExcepcionTarisan(sqle.toString()); } return resultado; } /** * Elimina registros de la base de datos. *
El proceso que se sigue es el siguiente:
    *
  1. obtiene la conexi�n
  2. *
  3. prepara la sentencia: objeto PreparedStatement
  4. *
  5. ejecuta la sentencia
  6. *
  7. cierra la sentencia
  8. *
  9. libera la conexi�n
  10. *
  11. retorna true o false seg�n el resultado de la eliminaci�n
  12. *

* @param sqlDelete La sentencia SQL de modificaci�n completa, incluidos los valores. * @return El valor booleano indicando si se ha realizado correctamente el borrado. * @throws */ public boolean borrar(String sqlDelete) throws ExcepcionTarisan { boolean resultado = true; Connection conexion = null; try { conexion = this.obtenerConexion(); if(conexion != null) { PreparedStatement ps = conexion.prepareStatement(sqlDelete); ps.executeUpdate(); ps.close(); LogTarisan.logger.log(NivelLog.DEBUG, "Eliminaci�n de registros correcta " + sqlDelete); this.liberarConexion(conexion); } else { resultado = false; } } catch(SQLException sqle) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la eliminaci�n de registros: " + sqle + " " + sqlDelete); throw new ExcepcionTarisan(sqle.toString()); } return resultado; } /** * Elimina registros de la base de datos utilizando la conexi�n que se le pasa por par�metro. * Utilizado para las transacciones. *
El proceso que se sigue es el siguiente:
    *
  1. prepara la sentencia: objeto PreparedStatement
  2. *
  3. ejecuta la sentencia
  4. *
  5. cierra la sentencia
  6. *
  7. retorna true o false seg�n el resultado de la eliminaci�n
  8. *

* @param sqlDelete La sentencia SQL de modificaci�n completa, incluidos los valores. * @param conexion La conexi�n utilizada para ejecutar la sentencia. * @return El valor booleano indicando si se ha realizado correctamente el borrado. * @throws */ public boolean borrar(String sqlDelete, Connection conexion) throws ExcepcionTarisan { boolean resultado = true; try { if(conexion != null) { PreparedStatement ps = conexion.prepareStatement(sqlDelete); ps.executeUpdate(); ps.close(); LogTarisan.logger.log(NivelLog.DEBUG, "Eliminaci�n de registros correcta " + sqlDelete); } else { resultado = false; } } catch(SQLException sqle) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la eliminaci�n de registros: " + sqle + " " + sqlDelete); throw new ExcepcionTarisan(sqle.toString()); } return resultado; } /** * Elimina registros de la base de datos. *
El proceso que se sigue es el siguiente:
    *
  1. obtiene la conexi�n
  2. *
  3. prepara la sentencia: objeto PreparedStatement
  4. *
  5. carga cada uno de las condiciones del array en la sentencia, en su orden correspondiente
  6. *
  7. ejecuta la sentencia
  8. *
  9. cierra la sentencia
  10. *
  11. libera la conexi�n
  12. *
  13. retorna true o false seg�n el resultado de la eliminaci�n
  14. *
* @param sqlDelete La sentencia SQL de inserci�n completa, incluidos los valores. * @param aCondiciones El array de objetos con las condiciones a buscar en la sentencia SQL. * @return El valor booleano indicando si se ha realizado correctamente la inserci�n. * @throws */ public boolean borrar(String sqlDelete, Object[] aCondiciones) throws ExcepcionTarisan { boolean resultado = true; Connection conexion = null; try { conexion = this.obtenerConexion(); if(conexion != null) { PreparedStatement ps = conexion.prepareStatement(sqlDelete); for(int i = 0; i < aCondiciones.length; i++) { ps.setObject(i+1, aCondiciones[i]); } ps.executeUpdate(); ps.close(); LogTarisan.logger.log(NivelLog.DEBUG, "Eliminaci�n de registros correcta " + sqlDelete + " (" + Utilidades.generarStringDeArray(aCondiciones) + ")"); this.liberarConexion(conexion); } else { resultado = false; } } catch(SQLException sqle) { resultado = false; LogTarisan.logger.log(NivelLog.ERROR, "Error en la eliminaci�n de registros: " + sqle + " " + sqlDelete + " (" + Utilidades.generarStringDeArray(aCondiciones) + ")"); throw new ExcepcionTarisan(sqle.toString()); } return resultado; } /** * Elimina registros de la base de datos utilizando la conexi�n que se le pasa por par�metro. * Utilizado para las transacciones. *
El proceso que se sigue es el siguiente:
    *
  1. prepara la sentencia: objeto PreparedStatement
  2. *
  3. carga cada uno de las condiciones del array en la sentencia, en su orden correspondiente
  4. *
  5. ejecuta la sentencia
  6. *
  7. cierra la sentencia
  8. *
  9. retorna true o false seg�n el resultado de la eliminaci�n
  10. *
* @param sqlDelete La sentencia SQL de inserci�n completa, incluidos los valores. * @param aCondiciones El array de objetos con las condiciones a buscar en la sentencia SQL. * @param conexion La conexi�n utilizada para ejecutar la sentencia. * @return El valor booleano indicando si se ha realizado correctamente la inserci�n. * @throws */ public boolean borrar(String sqlDelete, Object[] aCondiciones, Connection conexion) throws ExcepcionTarisan { boolean resultado = true; try { if(conexion != null) { PreparedStatement ps = conexion.prepareStatement(sqlDelete); for(int i = 0; i < aCondiciones.length; i++) { ps.setObject(i+1, aCondiciones[i]); } ps.executeUpdate(); ps.close(); LogTarisan.logger.log(NivelLog.DEBUG, "Eliminaci�n de registros correcta " + sqlDelete + " (" + Utilidades.generarStringDeArray(aCondiciones) + ")"); } else { resultado = false; } } catch(SQLException sqle) { resultado = false; LogTarisan.logger.log(NivelLog.ERROR, "Error en la eliminaci�n de registros: " + sqle + " " + sqlDelete + " (" + Utilidades.generarStringDeArray(aCondiciones) + ")"); throw new ExcepcionTarisan(sqle.toString()); } return resultado; } }