web-dev-qa-db-fra.com

Comment vérifier qu'un ResultSet contient un champ spécifiquement nommé?

Ayant rs, une instance de Java.sql.ResultSet, comment vérifier qu'elle contient une colonne nommée "theColumn"?

26
Ivan

Vous pouvez utiliser ResultSetMetaData pour parcourir les colonnes ResultSet et voir si le nom de la colonne correspond au nom de la colonne que vous avez spécifiée.

Exemple:

ResultSetMetaData rsMetaData = rs.getMetaData();
int numberOfColumns = rsMetaData.getColumnCount();

// get the column names; column indexes start from 1
for (int i = 1; i < numberOfColumns + 1; i++) {
    String columnName = rsMetaData.getColumnName(i);
    // Get the name of the column's table name
    if ("theColumn".equals(columnName)) {
        System.out.println("Bingo!");
    }
}
32
Buhake Sindi

Essayez d’utiliser la méthode ResultSet # findColumn (String)

private boolean isThere(ResultSet rs, String column)
{
  try
  {
    rs.findColumn(column);
    return true;
  } catch (SQLException sqlex)
  {
    logger.debug("column doesn't exist {}", column);
  }
  return false;
}
15
Boris Pavlović

Tu peux faire:

rs.findColumn("theColum")

et vérifiez SQLException

3
Alois Cochard

Utilisez la classe 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;
}
2
madx

Utilisez l'objet ResultSetMetaData fourni par l'objet ResultSet via rs.getMetaData()

0
darri