18.7.7 データ型の対応
ここでは,JDBCドライバのデータ型について説明します。
JDBCドライバでは,JDBCのデータ型とDABrokerでサポートするデータベースのデータ型をマッピングして処理を実行しています。JDBCのデータ型とDABrokerでサポートするデータ型は完全に一致していません。
なお,DABroker Libraryでサポートする文字型データのコード体系は,ASCII,シフトJIS,EUCJIS,UTF-8,およびChinese Simpleです。
(1) JDBCのデータ型とDABrokerでサポートするデータ型の対応
次に,JDBCのデータ型とDABrokerでサポートするデータ型の対応をデータベースごとに示します。
(a) HiRDBの場合
DABrokerでサポートするデータ型 |
JDBCのデータ型 |
---|---|
INTEGER |
INTEGER |
SMALLINT |
SMALLINT |
DECIMAL |
DECIMAL |
FLOAT, DOUBLE PRECISION |
FLOAT |
SMALLFLT, REAL |
REAL |
CHAR |
CHAR |
VARCHAR |
VARCHAR |
NCHAR |
CHAR |
NVARCHAR |
VARCHAR |
MCHAR |
CHAR |
MVARCHAR |
VARCHAR |
DATE |
DATE |
TIME |
TIME |
TIMESTAMP |
TIMESTAMP |
BLOB,BINARY LARGE OBJECT |
LONGVARBINARY |
(b) Oracleの場合
DABrokerでサポートするデータ型 |
JDBCのデータ型 |
---|---|
VARCHAR2 |
VARCHAR |
NUMBER |
NUMERIC,DECIMAL,BIT,TINYINT,SMALLINT,INTEGER,BIGINT |
FLOAT |
FLOAT |
LONG |
LONGVARCHAR |
ROWID |
CHAR |
DATE |
DATE,TIME,TIMESTAMP |
RAW |
VARBINARY |
LONG RAW |
LONGVARBINARY |
CHAR |
CHAR |
NCHAR※ |
CHAR |
NVARCHAR2※ |
VARCHAR |
CLOB※ |
CLOB |
NCLOB※ |
CLOB |
BLOB※ |
BLOB |
BFILE※ |
BLOB |
- 注※
-
接続データベースがOracle9i,またはOracle10gの場合だけ使用できます。
(2) データ型の注意事項
ここでは,データ型についての注意事項を示します。
-
データ型のマッピングは,次のメソッドでデータベースに接続する場合は,データ型の変換をJDBCドライバで実行します。次に示すメソッド実行時のデータ型の扱いについては,JDBCの仕様に依存します。
-
ResultSetクラスのgetXXXメソッド
-
PreparedStatementクラスのsetXXXメソッド
-
CallableStatementクラスのsetXXXメソッド
なお,setXXXメソッド実行時は,JDBCドライバでデータを保持し,execute実行時にデータをDABrokerに転送して,通信回数を削減しています。したがって,setXXXで発生するようなエラーがexecuteの実行時に発生する場合もあります。
-
-
DABrokerがサポートしていないデータ型に対して接続を要求した場合(Statement.execute発行時など)は,DABrokerからエラーが返ります。その後,DABroker Libraryは,SQLExceptionをthrowします。
-
DABroker Libraryがサポートしていない列の属性を含む列情報を取得した場合,DATA_TYPEにOTHER,TYPE_NAMEにOTHERがリターンされます。