スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド

[目次][索引][前へ][次へ]

18.8.2 検索データ取得時のマッピング

ResultSetクラス,及びCallableStatementクラスのgetXXXメソッドと,JDBCのSQLデータ型とのマッピングを次の表に示します。マッピングできないJDBCのSQLデータ型に対してgetXXXメソッドが呼び出された場合は,SQLExceptionを投入します。

表18-66 getXXXメソッドとJDBCのSQLデータ型とのマッピング(1/2)

getXXXメソッド JDBCのSQLデータ型
SMALLINT INTEGER FLOAT REAL DECIMAL CHAR
getByte ○ ○ ○ ○ ○ ○※1
getShort ◎ ○ ○ ○ ○ ○※1
getInt ○ ◎ ○ ○ ○ ○※1
getLong ○ ○ ○ ○ ○ ○※1
getFloat ○ ○ ○ ◎ ○ ○※1
getDouble ○ ○ ◎ ○ ○ ○※1
getBigDecimal ○ ○ ○ ○ ◎ ○※1
getBoolean ○ ○ ○ ○ ○ ○
getString ○ ○ ○ ○ ○ ◎
getBytes × × × × × ×
getDate × × × × × ○※1
getTime × × × × × ○※1
getTimestamp × × × × × ○※1
getAsciiStream × × × × × ○
getBinaryStream × × × × × ×
getObject ○ ○ ○ ○ ○ ○
getCharacterStream × × × × × ○
getArray × × × × × ×
getBlob × × × × × ×

表18-67 getXXXメソッドとJDBCのSQLデータ型とのマッピング(2/2)

getXXXメソッド JDBCのSQLデータ型
VARCHAR DATE TIME TIMESTAMP LONGVARBINARY ARRAY
getByte ○※1 × × × × ×
getShort ○※1 × × × × ×
getInt ○※1 × × × × ×
getLong ○※1 × × × × ×
getFloat ○※1 × × × × ×
getDouble ○※1 × × × × ×
getBigDecimal ○※1 × × × × ×
getBoolean ○ × × × × ×
getString ◎ ○ ○ ○ ○ ×
getBytes × × × × ○ ×
getDate ○※1 ◎※2 × ○ × ×
getTime ○※1 × ◎ ○ × ×
getTimestamp ○※1 ○ × ◎ × ×
getAsciiStream ○ × × × ○ ×
getBinaryStream × × × × ◎ ×
getObject ○ ○ ○ ○ ○ ×
getCharacterStream ○ × × × ○ ×
getArray × × × × × ◎
getBlob × × × × ○ ×

(凡例)
◎:マッピングすることを推奨します。
○:マッピングできます。ただし,変換元データの形式によっては,データの欠落や変換エラーとなることがあるため,注意してください。
×:マッピングできません。

注※1
このメソッドでの変換の際に,データベースから取得した文字列データの前後に半角スペースがある場合は,半角スペースを取り除きます。また,半角スペースを取り除いた後,getXXXメソッドが返却するJavaのデータ型に変換します。
Javaのデータ型に変換する場合の注意事項を次に示します。
  • 文字列データに小数点以下の表現がある場合,getByteメソッド,getIntメソッド,getShortメソッド,又はgetLongメソッドを実行すると,小数点以下を切り捨てて整数だけを変換し,返却します。
  • 文字列データに全角文字が含まれている場合,変換しないでSQLExceptionを投入します。全角文字には,HiRDBのデータ型であるNCHAR型の列に列の定義長よりも短い文字列を格納している場合に補完する全角スペースも含みます。
  • 文字列データをJavaのデータ型に変換した結果,オーバフローが発生する場合は,SQLExceptionを投入します。

注※2
JDBC SQLタイプがDATE型の場合,setDateメソッドにjava.util.Calendarオブジェクトを指定して実行すると,指定したjava.util.Calendarオブジェクトを使用してデータを変換し,時刻データを切り捨てて日付データだけをデータベースに格納します。このとき,時刻データを切り捨てるため,getDateメソッドにjava.util.Calendarオブジェクトを指定して,setDateメソッドで格納したデータを取得しても,setDateメソッドに指定した日付と異なる日付を取得する場合があります。
(例)
日本標準時をデフォルトのタイムゾーンとするUAPで,setDateメソッド,及びgetDateメソッドに世界標準時のタイムゾーンを持つjava.util.Calendarオブジェクトを指定した場合の例を次に示します。
setDateメソッドに「2005-10-03」を表すjava.sql.Dateオブジェクトを指定して実行した場合,JDBCドライバは時刻部分に「00:00:00」を補完した後,タイムゾーンの違いによって9時間遅らせて「2005-10-02 15:00:00」とし,日付部分「2005-10-02」をデータベースに格納します。このデータをgetDateメソッドで取得した場合,データベースから日付部分「2005-10-02」を取得し,時刻部分に「00:00:00」を補完した後,タイムゾーンの違いによって9時間進めて「2005-10-02 09:00:00」とします。これによって,getDateメソッドの戻り値のjava.sql.Dateオブジェクトには,「2005-10-02」が設定されるため,setDateメソッドに指定した「2005-10-03」とは異なります。