スケーラブルデータベースサーバ 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] 未サポートエラー