【发布时间】:2011-04-25 22:46:21
【问题描述】:
拥有rs,java.sql.ResultSet 的一个实例,如何检查它是否包含名为“theColumn”的列?
【问题讨论】:
拥有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!");
}
}
【讨论】:
ResultSetMetaData.getColumnLabel 如果有兴趣获取 SQL 查询的 AS 子句定义的名称,可以使用
尝试使用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;
}
【讨论】:
使用ResultSet对象通过rs.getMetaData()提供的ResultSetMetaData对象
【讨论】: