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 |
− |
− |
− |
− |
○ |
− |
− |
− |
− |
○ |
- (凡例)
-
○:値に関係なく,オーバフローしません。
×:値によっては,オーバフローすることがあります。
−:この組み合わせでは使用できません。