如何检查ResultSet是否包含特定命名的字段?

时间:2010-10-15 13:19:05

标签: java jdbc resultset

拥有rs java.sql.ResultSet的一个实例,如何检查它是否包含一个名为“theColumn”的列?

5 个答案:

答案 0 :(得分:33)

您可以使用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!");
    }
}

答案 1 :(得分:15)

尝试使用方法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;
}

答案 2 :(得分:3)

你可以这样做:

rs.findColumn("theColum")

并检查SQLException

答案 3 :(得分:2)

使用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;
}

答案 4 :(得分:0)

通过ResultSet

使用rs.getMetaData()对象提供的ResultSetMetaData对象