7.6.3 オーバフローが発生したときの処理
ここでは,setXXXおよびgetXXXメソッド実行時のオーバフローの可能性について説明します。
- 〈この項の構成〉
(1) setXXXメソッド(setObjectメソッドを除く)実行時のオーバフローの可能性
setXXXメソッド実行時のオーバフローの可能性(setObjectメソッドを除く)を次の表に示します。
実行するメソッド |
HADBのデータ型 |
|||||||||
---|---|---|---|---|---|---|---|---|---|---|
SMALLINT |
INTEGER |
DOUBLE PRECISION,FLOAT |
DECIMAL,NUMERIC |
CHAR,VARCHAR |
DATE※ |
TIME※ |
TIMESTAMP※ |
ROW |
BINARY,VARBINARY |
|
setByte |
○ |
○ |
○ |
× |
○ |
− |
− |
− |
− |
− |
setShort |
○ |
○ |
○ |
× |
○ |
− |
− |
− |
− |
− |
setInt |
○ |
○ |
○ |
× |
○ |
− |
− |
− |
− |
− |
setLong |
× |
○ |
○ |
× |
○ |
− |
− |
− |
− |
− |
setFloat |
× |
× |
○ |
× |
○ |
− |
− |
− |
− |
− |
setDouble |
× |
× |
○ |
× |
○ |
− |
− |
− |
− |
− |
setBigDecimal |
× |
× |
○ |
× |
○ |
− |
− |
− |
− |
− |
setBoolean |
○ |
○ |
○ |
○ |
○ |
− |
− |
− |
− |
− |
setString |
× |
× |
○ |
× |
○ |
× |
○ |
× |
− |
○ |
setBytes |
− |
− |
− |
− |
− |
− |
− |
− |
○ |
○ |
setDate |
− |
− |
− |
− |
○ |
× |
○ |
× |
− |
− |
setTime |
− |
− |
− |
− |
○ |
− |
○ |
× |
− |
− |
setTimestamp |
− |
− |
− |
− |
○ |
× |
○ |
× |
− |
− |
setAsciiStream |
− |
− |
− |
− |
○ |
− |
− |
− |
− |
○ |
setBinaryStream |
− |
− |
− |
− |
○ |
− |
− |
− |
− |
○ |
setCharacterStream |
− |
− |
− |
− |
○ |
− |
− |
− |
− |
○ |
- (凡例)
-
○:値に関係なく,オーバフローしません。
×:値によっては,オーバフローすることがあります。
−:この組み合わせでは使用できません。
- 注※
-
java.sql.Date,java.sql.Time,またはjava.sql.TimestampクラスのgetTimeメソッドで取得した値が253,402,268,399,999より大きいか,または-62,135,802,000,000より小さいオブジェクトである場合,オーバフローします。なお,getTimeメソッドは,1970年1月1日0時0分0秒(グリニッジ標準時)からのミリ秒数を返します。
253,402,268,399,999はHADBのTIMESTAMP型に格納できる最大値から,-62,135,802,000,000はjava.sql.Timestampクラスで表現できる最小値から,次に示すメソッドで取得できます。
- 253,402,268,399,999:
-
Timestamp.valueOf("9999-12-31 23:59:59.999999").getTime()
- -62,135,802,000,000:
-
Timestamp.valueOf("0001-01-01 00:00:00.0").getTime()
(2) setObjectメソッド実行時のオーバフローの可能性
setObjectメソッド実行時のオーバフローの可能性を次の表に示します。
setObjectメソッドで指定するオブジェクトのデータ型 |
HADBのデータ型 |
|||||||||
---|---|---|---|---|---|---|---|---|---|---|
SMALLINT |
INTEGER |
DOUBLE PRECISION,FLOAT |
DECIMAL,NUMERIC |
CHAR,VARCHAR |
DATE※ |
TIME※ |
TIMESTAMP※ |
ROW |
BINARY,VARBINARY |
|
Byte |
○ |
○ |
○ |
× |
○ |
− |
− |
− |
− |
− |
Short |
○ |
○ |
○ |
× |
○ |
− |
− |
− |
− |
− |
Integer |
○ |
○ |
○ |
× |
○ |
− |
− |
− |
− |
− |
Long |
× |
○ |
○ |
× |
○ |
− |
− |
− |
− |
− |
Decimal |
× |
× |
○ |
× |
○ |
− |
− |
− |
− |
− |
Float |
× |
× |
○ |
× |
○ |
− |
− |
− |
− |
− |
Double |
× |
× |
○ |
× |
○ |
− |
− |
− |
− |
− |
Boolean |
○ |
○ |
○ |
○ |
○ |
− |
− |
− |
− |
− |
String |
× |
× |
○ |
× |
○ |
× |
○ |
× |
− |
− |
Date |
− |
− |
− |
− |
○ |
× |
○ |
× |
− |
− |
Time |
− |
− |
− |
− |
○ |
− |
○ |
− |
− |
− |
Timestamp |
− |
− |
− |
− |
○ |
× |
○ |
× |
− |
− |
byte[] |
− |
− |
− |
− |
○ |
− |
− |
− |
○ |
○ |
- (凡例)
-
○:値に関係なく,オーバフローしません。
×:値によっては,オーバフローすることがあります。
−:この組み合わせでは使用できません。
- 注※
-
java.sql.Date,java.sql.Time,またはjava.sql.TimestampクラスのgetTimeメソッドで取得した値が253,402,268,399,999より大きいか,または-62,135,802,000,000より小さいオブジェクトである場合,オーバフローします。なお,getTimeメソッドは,1970年1月1日0時0分0秒(グリニッジ標準時)からのミリ秒数を返します。
253,402,268,399,999はHADBのTIMESTAMP型に格納できる最大値から,-62,135,802,000,000はjava.sql.Timestampクラスで表現できる最小値から,次に示すメソッドで取得できます。
- 253,402,268,399,999:
-
Timestamp.valueOf("9999-12-31 23:59:59.999999").getTime()
- -62,135,802,000,000:
-
Timestamp.valueOf("0001-01-01 00:00:00.0").getTime()
(3) getXXXメソッド(getObjectメソッドを除く)実行時のオーバフローの可能性
getXXXメソッド実行時のオーバフローの可能性(getObjectメソッドを除く)を次の表に示します。
実行するメソッド |
HADBのデータ型 |
|||||||||
---|---|---|---|---|---|---|---|---|---|---|
SMALLINT |
INTEGER |
DOUBLE PRECISION,FLOAT |
DECIMAL,NUMERIC |
CHAR,VARCHAR |
DATE |
TIME |
TIMESTAMP |
ROW |
BINARY,VARBINARY |
|
getByte |
× |
× |
× |
× |
× |
− |
− |
− |
− |
− |
getShort |
× |
× |
× |
× |
× |
− |
− |
− |
− |
− |
getInt |
○ |
× |
× |
× |
× |
− |
− |
− |
− |
− |
getLong |
○ |
○ |
× |
× |
× |
− |
− |
− |
− |
− |
getFloat |
○ |
○ |
○ |
○ |
○ |
− |
− |
− |
− |
− |
getDouble |
○ |
○ |
○ |
○ |
○ |
− |
− |
− |
− |
− |
getBigDecimal |
○ |
○ |
○ |
○ |
○ |
− |
− |
− |
− |
− |
getBoolean |
○ |
○ |
○ |
○ |
○ |
− |
− |
− |
− |
− |
getString |
○ |
○ |
○ |
○ |
○ |
○ |
○ |
○ |
− |
○ |
getBytes |
− |
− |
− |
− |
− |
− |
− |
− |
○ |
○ |
getDate |
− |
− |
− |
− |
○ |
○ |
○ |
○ |
− |
− |
getTime |
− |
− |
− |
− |
○ |
− |
○ |
○ |
− |
− |
getTimestamp |
− |
− |
− |
− |
○ |
○ |
○ |
○ |
− |
− |
getAsciiStream |
− |
− |
− |
− |
○ |
− |
− |
− |
− |
○ |
getBinaryStream |
− |
− |
− |
− |
○ |
− |
− |
− |
− |
○ |
getCharacterStream |
− |
− |
− |
− |
○ |
− |
− |
− |
− |
○ |
getArray |
− |
− |
− |
− |
○ |
− |
− |
− |
− |
○ |
- (凡例)
-
○:値に関係なく,オーバフローしません。
×:値によっては,オーバフローすることがあります。
−:この組み合わせでは使用できません。
(4) getObjectメソッド実行時のオーバフローの可能性
getObjectメソッド実行時のオーバフローの可能性を次の表に示します。
getObjectメソッドで取得するオブジェクトのデータ型 |
HADBのデータ型 |
|||||||||
---|---|---|---|---|---|---|---|---|---|---|
SMALLINT |
INTEGER |
DOUBLE PRECISION,FLOAT |
DECIMAL,NUMERIC |
CHAR,VARCHAR |
DATE |
TIME |
TIMESTAMP |
ROW |
BINARY,VARBINARY |
|
Byte |
× |
× |
× |
× |
× |
− |
− |
− |
− |
− |
Short |
× |
× |
× |
× |
× |
− |
− |
− |
− |
− |
Int |
○ |
× |
× |
× |
× |
− |
− |
− |
− |
− |
Long |
○ |
○ |
× |
× |
× |
− |
− |
− |
− |
− |
Float |
○ |
○ |
× |
× |
× |
− |
− |
− |
− |
− |
Double |
○ |
○ |
○ |
× |
× |
− |
− |
− |
− |
− |
BigDecimal |
○ |
○ |
○ |
× |
× |
− |
− |
− |
− |
− |
Boolean |
○ |
○ |
○ |
○ |
○ |
− |
− |
− |
− |
− |
String |
○ |
○ |
○ |
○ |
○ |
○ |
○ |
○ |
− |
○ |
Bytes |
− |
− |
− |
− |
− |
− |
− |
− |
○ |
○ |
Date |
− |
− |
− |
− |
○ |
○ |
○ |
○ |
− |
− |
Time |
− |
− |
− |
− |
○ |
− |
○ |
○ |
− |
− |
Timestamp |
− |
− |
− |
− |
○ |
○ |
○ |
○ |
− |
− |
AsciiStream |
− |
− |
− |
− |
○ |
− |
− |
− |
− |
○ |
BinaryStream |
− |
− |
− |
− |
○ |
− |
− |
− |
− |
○ |
Object |
○ |
○ |
○ |
○ |
○ |
○ |
○ |
○ |
○ |
○ |
CharacterStream |
− |
− |
− |
− |
○ |
− |
− |
− |
− |
○ |
- (凡例)
-
○:値に関係なく,オーバフローしません。
×:値によっては,オーバフローすることがあります。
−:この組み合わせでは使用できません。