代码之家  ›  专栏  ›  技术社区  ›  Ken Chan

如何确定结果集中是否存在列名?

  •  53
  • Ken Chan  · 技术社区  · 14 年前

    作为 ResultSet 包含从动态SQL返回的数据,如果有任何方法可以确定 结果集

    例如,如果我跑 rs.getString("Column_ABC") 但是 "Column_ABC"

    可以从名为 “ABC列”

    4 回复  |  直到 4 年前
        1
  •  119
  •   Mohsen    12 年前

    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
  •  12
  •   Drew Stephens    5 年前
    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
  •  6
  •   Zip184    10 年前

    不确定这是否比埃里克的答案更有效,但它更容易。

    String str;
    
    try {
        str = rs.getString(columnName);
    } catch (java.sql.SQLException e) {
        str = null;
    }
    
        4
  •  -1
  •   sanket patwardhan    5 年前

        5
  •  -4
  •   VivekJ    8 年前
    /**
     * returns default value if column is not present in resultset
     * 
     * @param rs
     * @param columnLabel
     * @param defaultValue
     * @return
     */
    @SuppressWarnings("unchecked")
    private static <T> T getValueFromResultSet(final ResultSet rs,
            String columnLabel, T defaultValue) {
        try {
            return (T) rs.getObject(columnLabel);
        } catch (SQLException e) {
            return defaultValue;
        }
    }
    

    在java version>=7中,您可以选择在ResultSet#getObject方法中传递类类型

        6
  •  -17
  •   Amit    14 年前

    如果没有rs.getString字符串(“列ABC”)=然后什么都没有 '您的代码在这里'