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がリターンされます。