日々精進

新しく学んだことを書き留めていきます

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!");
    }
}

こういう感じでカラムの型もわかる。

    private static Integer getColumnType(ResultSet rs, String columnName) throws SQLException {
        ResultSetMetaData rsMetaData = rs.getMetaData();
        int numberOfColumns = rsMetaData.getColumnCount();

        for (int i = 1; i < numberOfColumns + 1; i++) {
            String name = rsMetaData.getColumnName(i);
            rsMetaData.getColumnType(i);
            // Get the name of the column's table name
            if (columnName.equals(name)) {
                return rsMetaData.getColumnType(i);
            }
        }
        return null;
    }

参考:

stackoverflow.com