Java – Leyendo valores de un ResultSet despues de haber cerrado la conexion a la base de datos
abril 9, 2008
Cuando queremos leer datos de un ResultSet despues de haber cerrado la conexion (por ejemplo, si utilizamos una “Helper Class” para el acceso a datos), nos lanza una excepcion de tipo “java.sql.SQLException: Closed Connection: next”.
Para evitar esto hay que utilizar una clase que implemente la interfaz “CachedRowSet” tales como: “com.sun.rowset.CachedRowSetImpl” u “oracle.jdbc.rowset.OracleCachedRowSet”.
Si nos conectamos a una base de datos de Oracle debemos utilizar un OracleCachedRowSet porque si utilizamos un CachedRowSetImpl nos dara la excepcion java.lang.NumberFormatException: For input string: “4294967295″ – que no nos da ninguna pista de lo que ocasiono el error –
Siempre hay mas compatibilidad entre tipos del mismo proveedor ya que muchas veces la implementacion de las interfaces varia. Y si nos fijamos bien, el ResultSet que nos regresa un executeQuery es de tipo OracleResultSetImpl, asi que se lleva mejor con el OracleCachedRowSet a la hora de llenarlo.
Bueno, aqui dejo un ejemplo de como utilizarlo:
ResultSet resultSet = null;
String campo1;
Integer campo2;
try {
String sql =
“SELECT * FROM TABLA”;
resultSet = executeQuery(sql);
if(resultSet.next()) {
campo1=resultSet.getString(“CAMPO1″);
campo2 = resultSet.getInt(“CAMPO2″);
}
resultSet.close();
} catch (Exception exc) {
throw new RuntimeException(exc);
}
public ResultSet executeQuery(String sql) {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
OracleCachedRowSet cachedRowSet=null;
try {
Class.forName(“oracle.jdbc.OracleDriver”);
connection =
DriverManager.getConnection(databaseURL, databaseUserName,
databaseUserPassword);
connection.setAutoCommit(false);
preparedStatement = connection.prepareStatement(sql);
resultSet = preparedStatement.executeQuery();
cachedRowSet=new OracleCachedRowSet();
cachedRowSet.populate(resultSet);
resultSet.close();
preparedStatement.close();
return cachedRowSet;
} catch (Exception exc) {
throw new RuntimeException(exc);
} finally {
try {
if ((connection != null) && (!connection.isClosed())) {
connection.close();
}
} catch (Exception exc) {
throw new RuntimeException(exc);
}
}
}
utilizando la “ñ” en jdeveloper
abril 4, 2008
Muchas veces mientras diseñamos nuestras clases, nos encontramos con propiedades a las cuales nos gustaria poner nombres que contienen la letra “ñ”. Un ejemplo seria una propiedad llamada año, antes lo resolviamos cambiando estos nombres por palabras como “anyo”,algunos inclusive con ano
) jajaja y otros utilizandolas en ingles (year).
Tal vez sea muy quisquilloso pero me gusta utilizarla tal cual -año-.
El Visual Studio si nos permite utilizarlas y la verdad es que me acostumbre, cuando utilice el jdeveloper en windows tampoco tuve ningun problema, hasta que copie una aplicacion a mi pc con linux y entonces fue que paso algo. Primero me cambio las ñ’s por unos simbolos raros, entonces lo que hice fue cambiar esos simbolos por las ñ’s, pero a la hora de compilar me arrojaba un error de IllegalCharacter donde encontraba las ñ’s.
La razon de esto es el “character set” que utiliza el jdeveloper. En windows utiliza el cp1252 y en linux por default el UTF-8. Intente cambiando el character set en linux por el cp1252 en las preferencias del jdeveloper pero seguia marcando el error IllegalCharacter, entonces lo intente con el ISO-8859-1 y voila!! ahora puedo utilizar las preciosas ñ’s de nuestro idioma.

Nota: El character set que este establecido por default en el jdeveloper depende de la configuracion regional del sistema operativo.
VMware – Soporte para dispositivos usb en ubuntu linux
abril 3, 2008
En ubuntu 7.10 el VMware server 1.0.5 no detecta los dispositivos usb. Para que los reconozca y poder accesarlos mediante el menu VM->Removable Devices->USB Devices es necesario agregar un controlador usb en la configuración de la maquina virtual y ejecutar el comando
mount -t usbfs none /proc/bus/usb
referencias: http://kelvinchufei.blogspot.com/2007/01/add-usb-device-in-vmware.html

