1. ホーム
  2. java

[解決済み] ResultSetにカラム名が存在するかどうかを確認するにはどうすればよいですか?

2023-07-17 17:35:31

質問内容

このような場合 ResultSet には動的 SQL から返されたデータが含まれるので、もし ResultSet は、特定のカラム名を含んでいますか?

例えば、もし私が rs.getString("Column_ABC") を実行しても "Column_ABC" が本当に存在しない場合、例外を投げ出します。

どのようにすれば ResultSet という名前のカラムからデータを取得できるかどうかをテストするには "Column_ABC" ?

どのように解決するのですか?

を使用します。 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;
}

私が理解できないのは、なぜこの関数が必要なのかということです。 実行されるクエリやストアドプロシージャは、結果が分かっているはずです。 クエリのカラムは既知のものでなければなりません。 このような関数が必要であるということは、どこかに設計上の問題があることを示しているのかもしれません。