17.4.8 ResultSetMetaDataインタフェース
- 〈この項の構成〉
(1) 概要
ResultSetMetaDataインタフェースでは,主に次の機能が提供されます。
-
ResultSet(結果セット)の各列に対する,データ型及びデータ長などのメタ情報の返却
(2) メソッド
ResultSetMetaDataインタフェースのメソッド一覧を次の表に示します。なお,表に記載されていないメソッドはサポートしていません。サポートしていないメソッドを指定すると,SQLExceptionを投入します。
メソッド |
提供ドライバ |
機能 |
|
---|---|---|---|
JDBC2.0 |
JDBC4.0 |
||
○ |
○ |
指定された列番号のテーブルでのカタログ名を返します。 |
|
○ |
○ |
カラムに対するJavaクラスの完全指定された名前を返します。 |
|
○ |
○ |
このResultSetオブジェクトの列数を返します。 |
|
○ |
○ |
指定された列の通常の最大幅を,文字数で返します。 |
|
○ |
○ |
印刷や表示に使用する列の推奨タイトルを返します。 |
|
○ |
○ |
指定した列の名前を返します。 |
|
○ |
○ |
指定した列のSQLデータ型を返します。 |
|
○ |
○ |
指定された列の,データベース固有の形名を返します。 |
|
○ |
○ |
指定された列のサイズを返します。 |
|
○ |
○ |
指定された列の,小数点以下のけた数を返します。 |
|
○ |
○ |
指定された列のテーブルスキーマを返します。 |
|
○ |
○ |
指定された列のテーブル名を返します。 |
|
○ |
○ |
指定された列が自動的に番号付けされて,読み込み専用として扱われるかどうかを返します。 |
|
○ |
○ |
列の大文字と小文字が区別されるかどうかを返します。 |
|
○ |
○ |
指定された列が,通貨の値かどうか返します。 |
|
○ |
○ |
指定された列の書き込みが,成功するかどうかを返します。 |
|
○ |
○ |
指定した列にNULLをセットできるかどうかを返します。 |
|
○ |
○ |
指定された列が,読み取り専用かどうかを返します。 |
|
○ |
○ |
指定された列をwhere節で使用できるかどうかを返します。 |
|
○ |
○ |
指定された列の値が,符号付数値かどうかを返します。 |
|
○ |
○ |
指定された列への書き込みを,成功させることができるかどうかを返します。 |
(a) getCatalogName(int column)
- 【機能】
-
指定された列番号のテーブルでのカタログ名を返します。
- 【形式】
public synchronized String getCatalogName(int column) throws SQLException
- 【引数】
-
- int column:
-
1から始まる列番号
- 【戻り値】
-
Stringオブジェクト
- 【機能詳細】
-
常にnullを返します。
- 【発生する例外】
-
column指定値が0以下,又は列数より大きい場合,SQLExceptionを投入します。
(b) getColumnClassName(int column)
- 【機能】
-
カラムに対するJavaクラスの完全指定された名前を返します。
- 【形式】
public synchronized String getColumnClassName(int column) throws SQLException
- 【引数】
-
- int column:
-
1から始まる列番号
- 【戻り値】
-
Stringオブジェクト
- 【機能詳細】
-
列に対してResultSet#getObjectメソッドを実行した結果,返却するJavaクラスの型をString型で返します。列のデータ型と返却値を次の表に示します。ただし,繰返し列の場合は"java.sql.Array"を返却します。
表17‒63 getColumnClassNameで返却する文字列 列のHiRDBのデータ型
返却する文字列
BLOB
"java.lang.Object"
BINARY
"java.lang.Object"
INTEGER
"java.lang.Integer"
SMALLINT
"java.lang.Integer"
FLOAT
DOUBLE PRECISION
"java.lang.Double"
SMALLFLT
REAL
"java.lang.Float"
DECIMAL
NUMERIC
"java.math.BigDecimal"
CHAR
"java.lang.String"
MCHAR
"java.lang.String"
NCHAR
"java.lang.String"
VARCHAR
"java.lang.String"
MVARCHAR
"java.lang.String"
NVARCHAR
"java.lang.String"
DATE
"java.sql.Date"
TIME
"java.sql.Time"
TIMESTAMP
"java.sql.Timestamp"
BOOLEAN(DatabaseMetaDataから生成したResultSetにだけ存在する列)
"java.lang.Boolean"
- 【発生する例外】
-
column指定値が0以下,又は列数より大きい場合,SQLExceptionを投入します。
(c) getColumnCount()
- 【機能】
-
このResultSetオブジェクトの列数を返します。
- 【形式】
public synchronized int getColumnCount()
- 【引数】
-
なし。
- 【戻り値】
-
- int型:
-
列数
- 【発生する例外】
-
なし。
(d) getColumnDisplaySize(int column)
- 【機能】
-
指定された列の通常の最大幅を,文字数で返します。
- 【形式】
public synchronized int getColumnDisplaySize(int column) throws SQLException
- 【引数】
-
- int column:
-
1から始まる列番号
- 【戻り値】
-
- int型:
-
最大文字数
- 【機能詳細】
-
指定された列の通常の最大幅を,文字数で返します。getColumnDisplaySizeで返却する最大文字数を次の表に示します。
表17‒64 getColumnDisplaySizeで返却する最大文字数 列のHiRDBのデータ型
返却する最大文字数
BLOB(n)
BINARY(n)
n
INTEGER
11
SMALLINT
6
FLOAT
DOUBLE PRECISION
23
SMALLFLT
REAL
13
DECIMAL(n,m)
NUMERIC(n,m)
n+2
CHAR(n)
MCHAR(n)
NCHAR(n)
VARCHAR(n)
MVARCHAR(n)
NVARCHAR(n)
n
DATE
10
TIME
8
TIMESTAMP(n)
n>0の場合:19+(n+1)
n=0の場合:19
BOOLEAN(DatabaseMetaDataから生成したResultSetにだけ存在する列)
5
- 【発生する例外】
-
column指定値が0以下,又は列数より大きい場合,SQLExceptionを投入します。
(e) getColumnLabel(int column)
- 【機能】
-
印刷や表示に使用する列の推奨タイトルを返します。
PrdbResultSetMetaData#getColumnNameでの返却値と同じ値(列名)を返します。詳細については,「getColumnName(int column)」を参照してください。
- 【形式】
public synchronized String getColumnLabel(int column) throws SQLException
- 【引数】
-
- int column:
-
1から始まる列番号
- 【戻り値】
-
Stringオブジェクト
- 【発生する例外】
-
column指定値が0以下,又は列数より大きい場合,SQLExceptionを投入します。
(f) getColumnName(int column)
- 【機能】
-
指定した列の名前を返します。
- 【形式】
public synchronized String getColumnName(int column) throws SQLException
- 【引数】
-
- int column:
-
1から始まる列番号
- 【戻り値】
-
Stringオブジェクト
- 【機能詳細】
-
指定した列の名前を,HiRDBの列名記述領域の内容で返します。HiRDBサーバからこのドライバに送られる,列名記述領域(SQLCNDA)中のSQLNAMEから,検索項目の名称を取得(かつJavaの内部コードに変換)して返します。ただし,SELECT文で集合関数,値式,WRITE指定を使用した場合,28バイトまで返し,29バイト目以降は,サーバ,クライアント間の通信時に切り捨てられます。また,HiRDBサーバから受け取った次の先頭文字を,このドライバは無視します。
-
△△
-
△■
(凡例)△:半角空白 ■:0xff
指定した列に対するこのメソッドの返却値の内容については,「列名記述領域の構成と内容」を参照してください。
Arrayオブジェクトから取得したResultSetクラスの1列目は,JDBCドライバが生成する列であり,列名として"JDBC_Array_Index"を返します。
-
- 【発生する例外】
-
column指定値が0以下,又は列数より大きい場合,SQLExceptionを投入します。
(g) getColumnType(int column)
- 【機能】
-
指定した列のSQLデータ型を返します。列のデータ型と返却値の対応については,「SQLデータ型のマッピング」を参照してください。ただし,繰返し列の場合は"java.sql.Array"を返却します。
- 【形式】
public synchronized int getColumnType(int column) throws SQLException
- 【引数】
-
- int column:
-
1から始まる列番号
- 【戻り値】
-
- int型:
-
java.sql.TypesからのSQL型
- 【発生する例外】
-
column指定値が0以下,又は列数より大きい場合,SQLExceptionを投入します。
(h) getColumnTypeName(int column)
- 【機能】
-
指定された列の,データベース固有の形名を返します。
- 【形式】
public synchronized String getColumnTypeName(int column) throws SQLException
- 【引数】
-
- int column:
-
1から始まる列番号
- 【戻り値】
-
Stringオブジェクト
- 【機能詳細】
-
指定された列の,データベース固有の形名を返します。列のデータ型と返却値を次の表に示します。
表17‒65 getColumnTypeNameで返却する文字列 列のHiRDBのデータ型
返却する文字列
BLOB
"BLOB"
BINARY
"BINARY"
INTEGER
"INTEGER"
SMALLINT
"SMALLINT"
FLOAT
"FLOAT"
REAL
"REAL"
DECIMAL
"DECIMAL"
CHAR
"CHAR"
MCHAR
"MCHAR"
NCHAR
"NCHAR"
VARCHAR
"VARCHAR"
MVARCHAR
"MVARCHAR"
NVARCHAR
"NVARCHAR"
DATE
"DATE"
TIME
"TIME"
TIMESTAMP
"TIMESTAMP"
BOOLEAN(DatabaseMetaDataから生成したResultSetにだけ存在する列)
"BOOLEAN"
- 【発生する例外】
-
column指定値が0以下,又は列数より大きい場合,SQLExceptionを投入します。
(i) getPrecision(int column)
- 【機能】
-
指定された列のサイズを返します。
- 【形式】
public synchronized int getPrecision(int column) throws SQLException
- 【引数】
-
- int column:
-
1から始まる列番号
- 【戻り値】
-
- int型:
-
列のサイズ
- 【機能詳細】
-
指定された列のサイズを返します。返却する値を次の表に示します。
表17‒66 getPrecisionの返却値 列のHiRDBのデータ型
返却する値
返却値の単位
BLOB(n),BINARY(n)
n
バイト数
INTEGER
10
10進けた数
SMALLINT
5
10進けた数
FLOAT,DOUBLE PRECISION
15
10進けた数
SMALLFLT,REAL
7
10進けた数
DECIMAL(n,m),NUMERIC(n,m)
n
10進けた数
CHAR(n),MCHAR(n),VARCHAR(n),MVARCHAR(n)
n
文字数
NCHAR(n),NVARCHAR(n)
JDBC2.0:n×2
バイト数
JDBC4.0:n
文字数
DATE
10
文字数
TIME
8
文字数
TIMESTAMP(n)
n>0の場合:19+(n+1)
n=0の場合:19
文字数
BOOLEAN(DatabaseMetaDataから生成したResultSetにだけ存在する列)
1
バイト数
- 【発生する例外】
-
column指定値が0以下,又は列数より大きい場合,SQLExceptionを投入します。
(j) getScale(int column)
- 【機能】
-
指定された列の,小数点以下のけた数を返します。
- 【形式】
public synchronized int getScale(int column) throws SQLException
- 【引数】
-
- int column:
-
1から始まる列番号
- 【戻り値】
-
- int型:
-
列の10進けた数
- 【機能詳細】
-
指定された列の,小数点以下のけた数を返します。列のデータ型と返却値を次の表に示します。
表17‒67 getScaleで返却する値 列のHiRDBのデータ型
返却する値
DECIMAL
NUMERIC
小数点以下のけた数
TIMESTAMP
ミリ秒以下のけた数
上記以外
0
- 【発生する例外】
-
column指定値が0以下,又は列数より大きい場合,SQLExceptionを投入します。
(k) getSchemaName(int column)
- 【機能】
-
指定された列のテーブルスキーマを返します。
- 【形式】
public synchronized String getSchemaName(int column) throws SQLException
- 【引数】
-
- int column:
-
1から始まる列番号
- 【戻り値】
-
Stringオブジェクト
- 【機能詳細】
-
常にnullを返します。
- 【発生する例外】
-
column指定値が0以下,又は列数より大きい場合,SQLExceptionを投入します。
(l) getTableName(int column)
- 【機能】
-
指定された列のテーブル名を返します。
- 【形式】
public synchronized String getTableName(int column) throws SQLException
- 【引数】
-
- int column:
-
1から始まる列番号
- 【戻り値】
-
Stringオブジェクト
- 【機能詳細】
-
常にnullを返します。
- 【発生する例外】
-
column指定値が0以下,又は列数より大きい場合,SQLExceptionを投入します。
(m) isAutoIncrement(int column)
- 【機能】
-
指定された列が自動的に番号付けされて,読み込み専用として扱われるかどうかを返します。
- 【形式】
public synchronized boolean isAutoIncrement(int column) throws SQLException
- 【引数】
-
- int column:
-
1から始まる列番号
- 【戻り値】
-
- boolean型:
-
true:指定された列は自動的に番号付けされて,読み込み専用として扱われます。
false:指定された列は自動的に番号付けされないか,又は読み込み専用として扱われません。
- 【機能詳細】
-
常にfalseを返します。
- 【発生する例外】
-
column指定値が0以下,又は列数より大きい場合,SQLExceptionを投入します。
(n) isCaseSensitive(int column)
- 【機能】
-
列の大文字と小文字が区別されるかどうかを返します。
- 【形式】
public synchronized boolean isCaseSensitive(int column) throws SQLException
- 【引数】
-
- int column:
-
1から始まる列番号
- 【戻り値】
-
- boolean型:
-
true:列の大文字と小文字が区別されます。
false:列の大文字と小文字が区別されません。
- 【機能詳細】
-
常にfalseを返します。
- 【発生する例外】
-
column指定値が0以下,又は列数より大きい場合,SQLExceptionを投入します。
(o) isCurrency(int column)
- 【機能】
-
指定された列が,通貨の値かどうか返します。
- 【形式】
public synchronized boolean isCurrency(int column) throws SQLException
- 【引数】
-
- int column:
-
1から始まる列番号
- 【戻り値】
-
- boolean型:
-
true:列が通貨の値を示します。
false:列が通貨の値を示しません。
- 【機能詳細】
-
常にfalseを返します。
- 【発生する例外】
-
column指定値が0以下,又は列数より大きい場合,SQLExceptionを投入します。
(p) isDefinitelyWritable(int column)
- 【機能】
-
指定された列の書き込みが,成功するかどうかを返します。
- 【形式】
public synchronized boolean isDefinitelyWritable(int column) throws SQLException
- 【引数】
-
- int column:
-
1から始まる列番号
- 【戻り値】
-
- boolean型:
-
true:列の書き込みが成功します。
false:列の書き込みが成功するとは限りません。
- 【機能詳細】
-
常にfalseを返します。
- 【発生する例外】
-
column指定値が0以下,又は列数より大きい場合,SQLExceptionを投入します。
(q) isNullable(int column)
- 【機能】
-
指定した列にNULLをセットできるかどうかを返します。
- 【形式】
public synchronized int isNullable(int column) throws SQLException
- 【引数】
-
- int column:
-
1から始まる列番号
- 【戻り値】
-
- int型:
-
ResultSetMetaData.columnNoNulls:NULL値をセットできません。
ResultSetMetaData.columnNullable:NULL値をセットできます。
- 【発生する例外】
-
column指定値が0以下,又は列数より大きい場合,SQLExceptionを投入します。
(r) isReadOnly(int column)
- 【機能】
-
指定された列が,読み取り専用かどうかを返します。
- 【形式】
public synchronized boolean isReadOnly(int column) throws SQLException
- 【引数】
-
- int column:
-
1から始まる列番号
- 【戻り値】
-
- boolean型:
-
true:読み取り専用です。
false:読み取り専用とは限りません。
- 【機能詳細】
-
常にfalseを返します。
- 【発生する例外】
-
column指定値が0以下,又は列数より大きい場合,SQLExceptionを投入します。
(s) isSearchable(int column)
- 【機能】
-
指定された列をwhere節で使用できるかどうかを返します。
- 【形式】
public synchronized boolean isSearchable(int column) throws SQLException
- 【引数】
-
- int column:
-
1から始まる列番号
- 【戻り値】
-
- boolean型:
-
true:where節で使用できます。
false:where節で使用できません。
- 【機能詳細】
-
DatabaseMetaDataから生成したResultSetの場合,falseを返します。
DatabaseMetaDataから生成したResultSetではない場合,trueを返します。
- 【発生する例外】
-
column指定値が0以下,又は列数より大きい場合,SQLExceptionを投入します。
(t) isSigned(int column)
- 【機能】
-
指定された列の値が,符号付数値かどうかを返します。
- 【形式】
public synchronized boolean isSigned(int column) throws SQLException
- 【引数】
-
- int column:
-
1から始まる列番号
- 【戻り値】
-
- boolean型:
-
true:符号付数値です。
false:符号付数値ではありません。
- 【機能詳細】
-
指定された列の値が,符号付数値かどうかを返します。列のデータ型と返却値を次の表に示します。
表17‒68 isSignedで返却する値 列のHiRDBのデータ型
返却する値
INTEGER
SMALLINT
FLOAT
DOUBLE PRECISION
REAL
SMALLFLT
DECIMAL
NUMERIC
true
上記以外
false
- 【発生する例外】
-
column指定値が0以下,又は列数より大きい場合,SQLExceptionを投入します。
(u) isWritable(int column)
- 【機能】
-
指定された列への書き込みを,成功させることができるかどうかを返します。
- 【形式】
public synchronized boolean isWritable(int column) throws SQLException
- 【引数】
-
- int column:
-
1から始まる列番号
- 【戻り値】
-
- boolean型:
-
true:書き込みを成功させることができます。
false:書き込みを成功させることができません。
- 【機能詳細】
-
常にfalseを返します。
- 【発生する例外】
-
column指定値が0以下,又は列数より大きい場合,SQLExceptionを投入します。
(3) パッケージ名称及びクラス名称
このインタフェースを実装するパッケージ名称とクラス名称を次に示します。
パッケージ名称:JP.co.Hitachi.soft.HiRDB.JDBC
クラス名称:PrdbResultSetMetaData
(4) 注意事項
(a) getColumnName,getColumnLabelメソッド
getColumnName,及びgetColumnLabelメソッドは,HiRDBサーバからJDBCドライバに送られる列名記述領域(SQLCNDA)中のSQLNAMEから検索項目の名称を取得し,Javaの内部コードに変換して返却します。指定した列に対するこれらのメソッドの返却値の内容は,「列名記述領域の構成と内容」を参照してください。