java - obtener - ¿Cómo puedo determinar si el nombre de la columna existe en ResultSet?
obtener nombre columna resultset java (4)
No estoy seguro si esto es más o menos eficiente que la respuesta de Erick, pero es más fácil.
String str;
try {
str = rs.getString(columnName);
} catch (java.sql.SQLException e) {
str = null;
}
Como ResultSet contiene los datos devueltos por el SQL dinámico, ¿hay algún método para determinar si el ResultSet contiene un nombre de columna en particular? Por ejemplo, si ejecuto rs.getString("Column_ABC");
pero Column_ABC realmente no existe, arrojará la excepción. ¿Cómo puedo probar si el ResultSet puede obtener datos de una columna llamada "Column_ABC"?
si no es rs.getString ("Column_ABC") = nada, entonces ''su código aquí
Use la clase ResultSetMetaData
.
public static boolean hasColumn(ResultSet rs, String columnName) throws SQLException {
ResultSetMetaData rsmd = rs.getMetaData();
int columns = rsmd.getColumnCount();
for (int x = 1; x <= columns; x++) {
if (columnName.equals(rsmd.getColumnName(x))) {
return true;
}
}
return false;
}
Lo que no entiendo es por qué alguna vez se necesitaría esta función. La consulta o el procedimiento almacenado que se está ejecutando debe tener resultados conocidos. Las columnas de la consulta deben ser conocidas. Necesitar una función como esta puede ser una señal de que hay un problema de diseño en alguna parte.
/**
* returns default value if column is not present in resultset
*
* @param rs
* @param columnLabel
* @param defaultValue
* @return
*/
@SuppressWarnings("unchecked")
private static <T> T getValueFromResultSet(final ResultSet rs,
String columnLabel, T defaultValue) {
try {
return (T) rs.getObject(columnLabel);
} catch (SQLException e) {
return defaultValue;
}
}
En la versión java> = 7 tiene la opción de pasar el tipo de clase en el método ResultSet # getObject