Hace un tiempo, tenía el mismo problema que enfrentar. Después de reflexionar sobre este diseño, decidimos hacerlo a continuación.
public static Properties execute(String string, String[] columnames) throws Exception {
Properties resulProperties = er.executeQuery(string, columnames);
return resulProperties;
}
Por alguna razón específica, he creado un campo en mi clase como se indica a continuación
private static ExecuteRequest er = new ExecuteRequest();
En clase se utiliza ExecuteRequest
continuación código.
public Properties executeQuery(String sqlstatement, String[] columnNames) throws Exception {
Properties prop = new Properties();
try {
prop = creteProperty(sqlstatement, columnNames);
} catch (Exception e) {
mlogger.report("Error executing sql statement");
throw (e);
}
return prop;
}
public Properties creteProperty(String sqlstatement, String[] columnNames) throws Exception {
Properties prop = new Properties();
try {
PreparedStatement stmt = ConnectionManager.getInstance().prepareStatement(sqlstatement);
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
for (int i = 0; i < columnNames.length; i++) {
String key = columnNames[i];
if (rs.getObject(key) != null) {
String value = (rs.getObject(key).toString());
prop.setProperty(key, value);
} else {
String value = "";
prop.setProperty(key, value);
}
}
}
rs.close();
} catch (Exception e) {
mlogger.report("Error executing sql statement");
throw (e);
}
return prop;
}
Puede utilizar este enfoque como una solución.
Debe devolver un 'Map' para evitar perder información sobre los tipos de datos reales devueltos. Y 'rs.getObject (1) .toString()' saltará con una NullPointerException si la tabla contiene valores NULL. –
Todos los tipos JDBC mapeados tienen un método toString(). Y sobre el nulo, no he tenido ningún problema. SELECCIONAR * Desde una de mis Tablas donde hay un campo FECHA con valores nulos, imprime "nulo" en la consola. – athspk
Por supuesto, tienen un método toString(). Pero convertir el String a lo "real" podría ser un problema.¿Cómo se sabe a qué objeto se deben convertir? ¿Qué pasa con el formato predeterminado que depende de la configuración regional (separador decimal, formatos de fecha, etc.)? Esto es como almacenar todo en una columna varchar en la base de datos ... –