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

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

16.7.3 HiRDB.NETデータプロバイダの型変換

表16-5の.NET Framework型及びアクセサを使用しない場合,HiRDBデータプロバイダ内部で自動的に型変換されます。NET Framework型及びアクセサを使用しない場合とは,CHAR属性の項目を持つ表にInt32型のデータをINSERTしたり,GetInt32メソッドで取得したりすることをいいます。

INSERT時の型変換一覧を表16-6表16-7に,SELECT時の型変換一覧を表16-8表16-9に示します。

なお,表16-6表16-9の記号の意味については,「16.7.3(1)記号の意味」を参照してください。

表16-6 INSERT時の型変換一覧(1/2)

.NET Framework型 HiRDBのデータ型
I SI DE F SF C VC NC NVC
Boolean ×1 ×1 ×1 ×1 ×1 ×1 ×1 ×1 ×1
Int16 ×1 ×1
Int32 △1 ×1 ×1
Int64 △2 △1 ×1 ×1
UInt16 △1 ×1 ×1
UInt32 △2 △1 ×1 ×1
UInt64 △2 △1 ×1 ×1
Single小数部ありデータ △4 △3 ×1 ×1
Single小数部なしデータ △2 △1 ×1 ×1
Double小数部ありデータ △4 △3 ×1 ×1
Double小数部なしデータ △2 △1 ×1 ×1
Decimal小数部ありデータ △4 △3 ×1 ×1
Decimal小数部なしデータ △2 △1 ×1 ×1
Char ○1 ○1 ×1 ×1 ×1
Char[] ×1 ×1 ×1 ×1 ×1 ×1 ×1 ×1 ×1
String △2 △1
DateTime ×1 ×1 ×1 ×1 ×1 ×1 ×1
TimeSpan ×1 ×1 ×1 ×1 ×1 ×1 ×1
Guid ×1 ×1 ×1 ×1 ×1 ×1 ×1
Byte ×1 ×1
Byte[] ×1 ×1 ×1 ×1 ×1 ×1 ×1 ×1 ×1
Sbyte ×1 ×1
SByte[] ×1 ×1 ×1 ×1 ×1 ×1 ×1 ×1 ×1

表16-7 INSERT時の型変換一覧(2/2)

.NET Framework型 HiRDBのデータ型
MC MVC DA T TS IY IHS BI BL
Boolean ×1 ×1 ×1 ×1 ×1 ×1 ×1 ×1 ×1
Int16 ×1 ×1 ×1 ×2 ×2 ×1 ×1
Int32 ×1 ×1 ×1 ×2 ×2 ×1 ×1
Int64 ×1 ×1 ×1 ×2 ×2 ×1 ×1
UInt16 ×1 ×1 ×1 ×2 ×2 ×1 ×1
UInt32 ×1 ×1 ×1 ×2 ×2 ×1 ×1
UInt64 ×1 ×1 ×1 ×2 ×2 ×1 ×1
Single小数部ありデータ ×1 ×1 ×1 ×2 ×2 ×1 ×1
Single小数部なしデータ ×1 ×1 ×1 ×2 ×2 ×1 ×1
Double小数部ありデータ ×1 ×1 ×1 ×2 ×2 ×1 ×1
Double小数部なしデータ ×1 ×1 ×1 ×2 ×2 ×1 ×1
Decimal小数部ありデータ ×1 ×1 ×1 ×2 ×2 ×1 ×1
Decimal小数部なしデータ ×1 ×1 ×1 ×2 ×2 ×1 ×1
Char ×1 ×1 ×1 ×2 ×2 ×1 ×1
Char[] ×1 ×1 ×1 ×1 ×1 ×2 ×2 ×1 ×1
String ×1 ×1
DateTime ×2 ×2 ×1 ×1
TimeSpan ×1 ×1 ×1 ×2 ×1 ×1
Guid ×1 ×1 ×1 ×2 ×2 ×1 ×1
Byte ×1 ×1 ×1 ×2 ×2
Byte[] ×1 ×1 ×1 ×1 ×1 ×2 ×2
Sbyte ×1 ×1 ×1 ×2 ×2
SByte[] ×1 ×1 ×1 ×1 ×1 ×2 ×2

注1 NCHAR/NVARCHARへのINSERT時の注意事項
S-JIS変換後のサイズが奇数バイトのデータは,[Hitachi.HiRDB.HiRDBException]KFPZ24026-E 形式変換エラーになります。

注2 配列INSERT時の注意事項
Object配列型以外は[Hitachi.HiRDB.HiRDBException]KFPZ24026-E 形式変換エラーになります。また,BLOBへの配列インサートはできないため,同じエラーになります。

表16-8 SELECT時の型変換一覧(1/2)

アクセサ HiRDBのデータ型
I SI DE F SF C VC NC NVC
GetBoolean ×3 ×3 ×3 ×3 ×3 ×3 ×3 ×3 ×3
GetByte ×3 ×3 ×3 ×3 ×3 ×3 ×3 ×3 ×3
GetBytes ×1
GetChar ×3 ×3 ×3 ×3 ×3 ×3 ×3 ×3 ×3
GetChars ×1 ×1 ×1 ×1 ×1
GetData ×3 ×3 ×3 ×3 ×3 ×3 ×3 ×3 ×3
GetDateTime ×1 ×1 ×1 ×1 ×1 △6 △6 △6 △6
GetDecimal △7 △7 △7 △7
GetDouble △8 △8 △8 △8
GetFloat △9 △9 △9 △9
GetGuid ×3 ×3 ×3 ×3 ×3 ×3 ×3 ×3 ×3
GetInt16 △1 △1 △1 △1 △1 △1 △1 △1
GetInt32 △2 △2 △2 △2 △2 △2 △2
GetInt64 △10 △10 △10 △10 △10 △10 △10
GetString
GetValue
GetValues

表16-9 SELECT時の型変換一覧(2/2)

アクセサ HiRDBのデータ型
MC MVC DA T TS IY IHS BI BL
GetBoolean ×3 ×3 ×3 ×3 ×3 ×3 ×3 ×3 ×3
GetByte ×3 ×3 ×3 ×3 ×3 ×3 ×3 ×3 ×3
GetBytes ×1 ×1 ×1 ×1 ×1
GetChar ×3 ×3 ×3 ×3 ×3 ×3 ×3 ×3 ×3
GetChars ×1 ×1 ×1 ×1 ×1 ×1 ×1
GetData ×3 ×3 ×3 ×3 ×3 ×3 ×3 ×3 ×3
GetDateTime △6 △6 ×1 ×1 ×1 ×1
GetDecimal △7 △7 ×1 ×1 ×1 ×1 ×1 ×1 ×1
GetDouble △8 △8 ×1 ×1 ×1 ×1 ×1 ×1 ×1
GetFloat △9 △9 ×1 ×1 ×1 ×1 ×1 ×1 ×1
GetGuid ×3 ×3 ×3 ×3 ×3 ×3 ×3 ×3 ×3
GetInt16 △1 △1 ×1 ×1 ×1 ×1 ×1 ×1 ×1
GetInt32 △2 △2 ×1 ×1 ×1 ×1 ×1 ×1 ×1
GetInt64 △10 △10 ×1 ×1 ×1 ×1 ×1 ×1 ×1
GetString
GetValue
GetValues

注1 DATE取得時の注意事項
GetDateTimeメソッドで取得した場合,時刻領域は0時0分0秒が入ります。GetStringメソッドで取得した場合,YYYY/MM/DDのフォーマットで入ります。

注2 TIME/TIMESTAMP取得時の注意事項
GetDateTimeメソッドで取得した場合,日付領域は現在年月日が入ります。GetStringメソッドで取得した場合,次のフォーマットで入ります。
TIME:hh:mm:ss
TIMESTAMP(0):YYYY/MM/DD hh:mm:ss
TIMESTAMP(2):YYYY/MM/DD hh:mm:ss.nn
TIMESTAMP(4):YYYY/MM/DD hh:mm:ss.nnnn
TIMESTAMP(6):YYYY/MM/DD hh:mm:ss.nnnnnn

注3 INTERVALYEARTODAY取得時の注意事項
GetStringメソッドで取得した場合,±YYYY/MM/DDのフォーマットで入ります。

注4 INTERVALHOURTOSECOND取得時の注意事項
GetStringメソッドで取得した場合,±hh:mm:ssのフォーマットで入ります。
<この項の構成>
(1) 記号の意味

(1) 記号の意味

(a) HiRDBのデータ型

HiRDBのデータ型の,記号の意味を次に示します。

記号 意味
I INTEGER
SI SMALLINT
DE DECIMAL,及びLARGE DECIMAL
F FLOAT/DOUBLE PRECISION
SF SMALLFLT,及びREAL
C CHARACTER
VC VARCHAR
NC NCHAR,及びNATIONAL CHARACTER
NVC NVARCHAR
MC MCHAR
MVC MVARCHAR
DA DATE
T TIME
TS TIMESTAMP
IY INTERVAL YEAR TO DAY
IHS INTERVAL HOUR TO SECOND
BI BINARY
BL BLOB
(b) 型変換可否

○は正常,△は条件付きで動作,×はエラーとなります。さらに,これらに番号が付いている場合があります。○,△,及び×に番号が付いている場合の記号の意味を次に示します。

記号 意味
数字の文字コードが入ります。
△1

Int32型,Int64型,Single小数部なしデータ型,Double小数部なしデータ型,Decimal小数部なしデータ型,String小数部なしデータ型の場合
-32768〜32767:正常

UInt16型,UInt32型,UInt64型の場合
0〜32767:正常
範囲外:[Hitachi.HiRDB.HiRDBException]KFPZ24026-E 形式変換エラー
△2

Int64型,Single小数部なしデータ型,Double小数部なしデータ型,Decimal小数部なしデータ型,String小数部なしデータ型の場合
-2147483648〜2147483647:正常

UInt32型,UInt64型の場合
0〜2147483647:正常
範囲外:[Hitachi.HiRDB.HiRDBException]KFPZ24026-E形式変換エラー
△3 -32768〜32767:正常(小数点第一位四捨五入)
範囲外:[Hitachi.HiRDB.HiRDBException]KFPZ24026-E形式変換エラー
△4 -2147483648〜2147483647:正常(小数点第一位四捨五入)
範囲外:[Hitachi.HiRDB.HiRDBException]KFPZ24026-E形式変換エラー
△5 0〜255:正常
範囲外:[Hitachi.HiRDB.HiRDBException]KFPZ24026-E形式変換エラー
△6 DateTime形式データの場合:正常
DateTime形式データ以外:[Hitachi.HiRDB.HiRDBException]KFPZ24026-E形式変換エラー
△7 Decimal形式データの場合:正常
Decimal形式データ以外:[Hitachi.HiRDB.HiRDBException]KFPZ24026-E形式変換エラー
△8 Double形式データの場合:正常
Double形式データ以外:[Hitachi.HiRDB.HiRDBException]KFPZ24026-E形式変換エラー
△9 Float形式データの場合:正常
Float形式データ以外:[Hitachi.HiRDB.HiRDBException]KFPZ24026-E形式変換エラー
△10 -9223372036854775808〜9223372036854775807:正常
範囲外:[Hitachi.HiRDB.HiRDBException]KFPZ24026-E形式変換エラー
×1 [Hitachi.HiRDB.HiRDBException]KFPZ24026-E形式変換エラー
×2 [Hitachi.HiRDB.HiRDBException]KFPZ24107-E Decimal,日時,時間間隔型オーバフロー
[Hitachi.HiRDB.HiRDBException]KFPZ24106-E 日時,時間間隔型フォーマットエラー
×3 [System.NotSupportedException] 未サポートエラー