Как проверить, что ResultSet содержит специально названное поле? - PullRequest
27 голосов
/ 15 октября 2010

Имея rs, экземпляр java.sql.ResultSet, как проверить, что он содержит столбец с именем "theColumn"?

Ответы [ 5 ]

33 голосов
/ 15 октября 2010

Вы можете использовать ResultSetMetaData , чтобы выполнить итерацию по столбцам ResultSet и посмотреть, соответствует ли имя столбца указанному вами имени столбца.

Пример:

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!");
    }
}
15 голосов
/ 15 октября 2010

Попробуйте использовать метод 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;
}
3 голосов
/ 15 октября 2010

Вы можете сделать:

rs.findColumn("theColum")

и проверьте SQLException

2 голосов
/ 22 июня 2016

Используйте класс 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;
}
0 голосов
/ 15 октября 2010

Используйте объект ResultSetMetaData , предоставленный объектом ResultSet через rs.getMetaData()

...