Files
2025-06-09 13:37:06 +02:00

844 lines
27 KiB
Java

/**
* @(#) 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;
/**
* Gestin de accesos de conexin, recuperacin y actualizacin de registros en la base de datos.
* @author <a href="mailto:sistemas@imqnavarra.com">Dpto. Informtica</a>.
* @version 1.0, 24/09/2003
*/
public class DataStore
{
/**
* Obtencin de la conexin a la base de datos.
* <br>La implementacin del mtodo se hace en el DataStore correspondiente a cada base de datos.
* @return El objeto de conexin a la base de datos.
* @throws
*/
public java.sql.Connection obtenerConexion() throws ExcepcionTarisan
{
Connection conexion = null;
return conexion;
}
/**
* Modifica la conexin para que se trate de una conexin transaccional.
* @param conexion La conexin que modifiaremos para soportar transacciones.
* @return El objeto de conexin 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 transaccin iniciada por el usuario.
* @param conexion Conexin que contiene la transaccin 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 transaccin iniciada por el usuario.
* @param conexion La conexin que contiene la transaccin 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 conexin a la base de datos.
* <br>La implementacin del mtodo se hace en el DataStore correspondiente a cada base de datos.
* @param conexion La conexin 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.
* <br>El proceso que se sigue es el siguiente:<ol>
* <li>obtiene la conexin</li>
* <li>prepara la sentencia: objeto <code>PreparedStatement</code></li>
* <li>ejecuta la sentencia</li>
* <li>recoge el objeto <code>ResultSet</code></li>
* <li>cierra el <code>ResultSet</code></li>
* <li>cierra la sentencia</li>
* <li>libera la conexin</li>
* <li>retorna el <code>ResultSet</code> o null segn el resultado de la seleccin</li>
* </ol><br>
* @param sqlSelect La sentencia SQL completa de seleccin (incluidas sus condiciones) en la base de datos.
* @return El Vector con los registros seleccionados (todos pertenencientes a la clase <code>Object</code>).
* @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 seleccin 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 seleccin 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.
* <br>El proceso que se sigue es el siguiente:<ol>
* <li>prepara la sentencia: objeto <code>PreparedStatement</code></li>
* <li>ejecuta la sentencia</li>
* <li>recoge el objeto <code>ResultSet</code></li>
* <li>retorna el <code>ResultSet</code> o null segn el resultado de la seleccin</li>
* </ol><br>
* @param conexion El objeto <code>Connection</code> de conexin a la base de datos.
* @param sqlSelect La sentencia SQL completa de seleccin (incluidas sus condiciones) en la base de datos.
* @return El ResultSet con los registros seleccionados o null si se ha producido algn 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 seleccin 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.
* <br>El proceso que se sigue es el siguiente:<ol>
* <li>prepara la sentencia: objeto <code>PreparedStatement</code></li>
* <li>carga cada uno de las condiciones del array en la sentencia, en su orden correspondiente</li>
* <li>ejecuta la sentencia</li>
* <li>recoge el objeto <code>ResultSet</code></li>
* <li>retorna el <code>ResultSet</code> o null segn el resultado de la seleccin</li>
* </ol><br>
* @param conexion El objeto <code>Connection</code> de conexin a la base de datos.
* @param sqlSelect La sentencia SQL de seleccin 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 algn 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 seleccin del ResultSet: " + sqle + " " + sqlSelect + " (" + Utilidades.generarStringDeArray(aCondiciones) + ")");
throw new ExcepcionTarisan(sqle.toString());
}
}
return rs;
}
/**
* Inserta un registro en la base de datos.
* <br>El proceso que se sigue es el siguiente:<ol>
* <li>obtiene la conexin</li>
* <li>prepara la sentencia: objeto <code>PreparedStatement</code></li>
* <li>ejecuta la sentencia</li>
* <li>cierra la sentencia</li>
* <li>libera la conexin</li>
* <li>retorna true o false segn el resultado de la insercin</li>
* </ol><br>
* @param sqlInsert La sentencia SQL de insercin completa, incluidos los valores.
* @return El valor booleano indicando si se ha realizado correctamente la insercin.
* @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, "Insercin de registro correcta " + sqlInsert);
this.liberarConexion(conexion);
}
else
{
resultado = false;
}
}
catch(SQLException sqle)
{
LogTarisan.logger.log(NivelLog.ERROR, "Error en la insercin de registro: " + sqle + " " + sqlInsert);
throw new ExcepcionTarisan(sqle.toString());
}
return resultado;
}
/**
* Inserta un registro en la base de datos utilizando la conexin que se le pasa por parmetro.
* Utilizado para las transacciones.
* <br>El proceso que se sigue es el siguiente:<ol>
* <li>prepara la sentencia: objeto <code>PreparedStatement</code></li>
* <li>ejecuta la sentencia</li>
* <li>cierra la sentencia</li>
* <li>retorna true o false segn el resultado de la insercin</li>
* </ol><br>
* @param sqlInsert La sentencia SQL de insercin completa, incluidos los valores.
* @param conexion La conexin utilizada para ejecutar la sentencia.
* @return El valor booleano indicando si se ha realizado correctamente la insercin.
* @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, "Insercin de registro correcta " + sqlInsert);
}
else
{
resultado = false;
}
}
catch(SQLException sqle)
{
LogTarisan.logger.log(NivelLog.ERROR, "Error en la insercin de registro: " + sqle + " " + sqlInsert);
throw new ExcepcionTarisan(sqle.toString());
}
return resultado;
}
/**
* Inserta un registro en la base de datos.
* <br>El proceso que se sigue es el siguiente:<ol>
* <li>obtiene la conexin</li>
* <li>prepara la sentencia: objeto <code>PreparedStatement</code></li>
* <li>carga cada uno de los valores del array en la sentencia, en su orden correspondiente</li>
* <li>ejecuta la sentencia</li>
* <li>cierra la sentencia</li>
* <li>libera la conexin</li>
* <li>retorna true o false segn el resultado de la insercin</li>
* </ol>
* @param sqlInsert La sentencia SQL de insercin 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 insercin.
* @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, "Insercin 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 insercin de registro: " + sqle + " " + sqlInsert + " (" + Utilidades.generarStringDeArray(aValores) + ")");
throw new ExcepcionTarisan(sqle.toString());
}
return resultado;
}
/**
* Inserta un registro en la base de datos utilizando la conexin que se le pasa por parmetro.
* Utilizado para las transacciones.
* <br>El proceso que se sigue es el siguiente:<ol>
* <li>prepara la sentencia: objeto <code>PreparedStatement</code></li>
* <li>carga cada uno de los valores del array en la sentencia, en su orden correspondiente</li>
* <li>ejecuta la sentencia</li>
* <li>cierra la sentencia</li>
* <li>retorna true o false segn el resultado de la insercin</li>
* </ol>
* @param sqlInsert La sentencia SQL de insercin completa, incluidos los valores.
* @param aValores El array de objetos con los valores a insertar en la sentencia SQL.
* @param conexion La conexin utilizada para ejecutar la sentencia.
* @return El valor booleano indicando si se ha realizado correctamente la insercin.
* @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, "Insercin de registro correcta " + sqlInsert + " (" + Utilidades.generarStringDeArray(aValores) + ")");
}
else
{
resultado = false;
}
}
catch(SQLException sqle)
{
resultado = false;
LogTarisan.logger.log(NivelLog.ERROR, "Error en la insercin de registro: " + sqle + " " + sqlInsert + " (" + Utilidades.generarStringDeArray(aValores) + ")");
throw new ExcepcionTarisan(sqle.toString());
}
return resultado;
}
/**
* Modifica registros de la base de datos.
* <br>El proceso que se sigue es el siguiente:<ol>
* <li>obtiene la conexin</li>
* <li>prepara la sentencia: objeto <code>PreparedStatement</code></li>
* <li>ejecuta la sentencia</li>
* <li>cierra la sentencia</li>
* <li>libera la conexin</li>
* <li>retorna true o false segn el resultado de la modificacin</li>
* </ol>
* @param sqlUpdate La sentencia SQL de modificacin completa, incluidos los valores y las condiciones.
* @return El valor booleano indicando si se ha realizado correctamente la modificacin.
* @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, "Modificacin de registros correcta " + sqlUpdate);
this.liberarConexion(conexion);
}
else
{
resultado = false;
}
}
catch(SQLException sqle)
{
LogTarisan.logger.log(NivelLog.ERROR, "Error en la modificacin de registros: " + sqle + " " + sqlUpdate);
throw new ExcepcionTarisan(sqle.toString());
}
return resultado;
}
/**
* Modifica registros de la base de datos utilizando la conexin que se le pasa por parmetro.
* Utilizado para las transacciones.
* <br>El proceso que se sigue es el siguiente:<ol>
* <li>prepara la sentencia: objeto <code>PreparedStatement</code></li>
* <li>ejecuta la sentencia</li>
* <li>cierra la sentencia</li>
* <li>retorna true o false segn el resultado de la modificacin</li>
* </ol>
* @param sqlUpdate La sentencia SQL de modificacin completa, incluidos los valores y las condiciones.
* @param conexion La conexin utilizada para ejecutar la sentencia.
* @return El valor booleano indicando si se ha realizado correctamente la modificacin.
* @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, "Modificacin de registros correcta " + sqlUpdate);
}
else
{
resultado = false;
}
}
catch(SQLException sqle)
{
LogTarisan.logger.log(NivelLog.ERROR, "Error en la modificacin de registros: " + sqle + " " + sqlUpdate);
throw new ExcepcionTarisan(sqle.toString());
}
return resultado;
}
/**
* Modifica registros de la base de datos.
* <br>El proceso que se sigue es el siguiente:<ol>
* <li>obtiene la conexin</li>
* <li>prepara la sentencia: objeto <code>PreparedStatement</code></li>
* <li>carga cada uno de los valores del array en la sentencia, en su orden correspondiente</li>
* <li>carga cada uno de las condiciones del array en la sentencia, en su orden correspondiente</li>
* <li>ejecuta la sentencia</li>
* <li>cierra la sentencia</li>
* <li>libera la conexin</li>
* <li>retorna true o false segn el resultado de la modificacin</li>
* </ol>
* @param sqlInsert La sentencia SQL de insercin 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 insercin.
* @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, "Modificacin 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 modificacin 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 conexin que se le pasa por parmetro.
* Utilizado para las transacciones.
* <br>El proceso que se sigue es el siguiente:<ol>
* <li>prepara la sentencia: objeto <code>PreparedStatement</code></li>
* <li>carga cada uno de los valores del array en la sentencia, en su orden correspondiente</li>
* <li>carga cada uno de las condiciones del array en la sentencia, en su orden correspondiente</li>
* <li>ejecuta la sentencia</li>
* <li>cierra la sentencia</li>
* <li>retorna true o false segn el resultado de la modificacin</li>
* </ol>
* @param sqlInsert La sentencia SQL de insercin 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 conexin utilizada para ejecutar la sentencia.
* @return El valor booleano indicando si se ha realizado correctamente la insercin.
* @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, "Modificacin 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 modificacin de registros: " + sqle + " " + sqlUpdate + " (" + Utilidades.generarStringDeArray(aValores) + ") (" + Utilidades.generarStringDeArray(aCondiciones) + ")");
throw new ExcepcionTarisan(sqle.toString());
}
return resultado;
}
/**
* Elimina registros de la base de datos.
* <br>El proceso que se sigue es el siguiente:<ol>
* <li>obtiene la conexin</li>
* <li>prepara la sentencia: objeto <code>PreparedStatement</code></li>
* <li>ejecuta la sentencia</li>
* <li>cierra la sentencia</li>
* <li>libera la conexin</li>
* <li>retorna true o false segn el resultado de la eliminacin</li>
* </ol><br>
* @param sqlDelete La sentencia SQL de modificacin 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, "Eliminacin de registros correcta " + sqlDelete);
this.liberarConexion(conexion);
}
else
{
resultado = false;
}
}
catch(SQLException sqle)
{
LogTarisan.logger.log(NivelLog.ERROR, "Error en la eliminacin de registros: " + sqle + " " + sqlDelete);
throw new ExcepcionTarisan(sqle.toString());
}
return resultado;
}
/**
* Elimina registros de la base de datos utilizando la conexin que se le pasa por parmetro.
* Utilizado para las transacciones.
* <br>El proceso que se sigue es el siguiente:<ol>
* <li>prepara la sentencia: objeto <code>PreparedStatement</code></li>
* <li>ejecuta la sentencia</li>
* <li>cierra la sentencia</li>
* <li>retorna true o false segn el resultado de la eliminacin</li>
* </ol><br>
* @param sqlDelete La sentencia SQL de modificacin completa, incluidos los valores.
* @param conexion La conexin 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, "Eliminacin de registros correcta " + sqlDelete);
}
else
{
resultado = false;
}
}
catch(SQLException sqle)
{
LogTarisan.logger.log(NivelLog.ERROR, "Error en la eliminacin de registros: " + sqle + " " + sqlDelete);
throw new ExcepcionTarisan(sqle.toString());
}
return resultado;
}
/**
* Elimina registros de la base de datos.
* <br>El proceso que se sigue es el siguiente:<ol>
* <li>obtiene la conexin</li>
* <li>prepara la sentencia: objeto <code>PreparedStatement</code></li>
* <li>carga cada uno de las condiciones del array en la sentencia, en su orden correspondiente</li>
* <li>ejecuta la sentencia</li>
* <li>cierra la sentencia</li>
* <li>libera la conexin</li>
* <li>retorna true o false segn el resultado de la eliminacin</li>
* </ol>
* @param sqlDelete La sentencia SQL de insercin 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 insercin.
* @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, "Eliminacin 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 eliminacin de registros: " + sqle + " " + sqlDelete + " (" + Utilidades.generarStringDeArray(aCondiciones) + ")");
throw new ExcepcionTarisan(sqle.toString());
}
return resultado;
}
/**
* Elimina registros de la base de datos utilizando la conexin que se le pasa por parmetro.
* Utilizado para las transacciones.
* <br>El proceso que se sigue es el siguiente:<ol>
* <li>prepara la sentencia: objeto <code>PreparedStatement</code></li>
* <li>carga cada uno de las condiciones del array en la sentencia, en su orden correspondiente</li>
* <li>ejecuta la sentencia</li>
* <li>cierra la sentencia</li>
* <li>retorna true o false segn el resultado de la eliminacin</li>
* </ol>
* @param sqlDelete La sentencia SQL de insercin completa, incluidos los valores.
* @param aCondiciones El array de objetos con las condiciones a buscar en la sentencia SQL.
* @param conexion La conexin utilizada para ejecutar la sentencia.
* @return El valor booleano indicando si se ha realizado correctamente la insercin.
* @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, "Eliminacin de registros correcta " + sqlDelete + " (" + Utilidades.generarStringDeArray(aCondiciones) + ")");
}
else
{
resultado = false;
}
}
catch(SQLException sqle)
{
resultado = false;
LogTarisan.logger.log(NivelLog.ERROR, "Error en la eliminacin de registros: " + sqle + " " + sqlDelete + " (" + Utilidades.generarStringDeArray(aCondiciones) + ")");
throw new ExcepcionTarisan(sqle.toString());
}
return resultado;
}
}