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

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

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

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

你可以做:

 rs.findColumn("theColum") 

并检查SQLException

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

通过rs.getMetaData()使用ResultSet对象提供的ResultSet对象