H2のデータ型とJavaのデータ型の対応
はじめに
H2 Database Engine はサポートしているデータ型が多いです。
多すぎて、Javaのデータ型との対応が覚えられません。
http://www.h2database.com/html/datatypes.htmlの各データ型の項の「See also」の所を読めば対応は書いてあるのですが、ぱっと見でわかりにくいです。
というわけで、自分用にチートシートを作りました。
対象
H2 Database Engine 1.0.79 (2008-09-26)
対応表
各項目の説明は本章の一番下を見てください。
表
H2のデータ型 | See also | 備考 |
---|---|---|
INT | java.lang.Integer | - |
BOOLEAN | java.lang.Boolean | - |
TINYINT | java.lang.Byte | - |
SMALLINT | java.lang.Short | - |
BIGINT | java.lang.Long | - |
IDENTITY | java.lang.Long | - |
DECIMAL | java.math.BigDecimal | - |
DOUBLE | java.lang.Double | - |
REAL | java.lang.Float | - |
TIME | java.sql.Time | java.sql.Timeのインスタンスを生成する際には、年月日の部分は1970年1月1日にしないと挙動不審な動作をします。 |
DATE | java.sql.Date | - |
TIMESTAMP | java.sql.Timestamp | - |
BINARY | - | byte[]と互換性があります。SetXXX時には、java.io.InputStream(抽象クラスです)も使用可能です。 |
OTHER | - | java.lang.Objectと互換性があります。 |
VARCHAR | java.lang.String | SetXXX時には、java.io.Reader(抽象クラスです)も使用可能です。setAsciiStream時には、java.io.InputStream(抽象クラスです)も使用可能です。 |
VARCHAR_IGNORECASE | - | java.lang.Stringと互換性があります。 |
CHAR | - | java.lang.Stringと互換性があります。 |
BLOB | - | ResultSetから取り出す際には、java.sql.Blob(インターフェースです)で取り出します。SetXXX時にはjava.sql.Blob(インターフェースです)、javax.sql.rowset.serial.SerialBlob(J2SE5以降)、byte[]のいずれかを使用します。 |
CLOB | - | ResultSetから取り出す際には、java.sql.Clob(インターフェースです)で取り出します。SetXXX時にはjava.sql.Clob(インターフェースです)、javax.sql.rowset.serial.SerialClob(J2SE5以降)、java.lang.Stringのいずれかを使用します。 |
UUID | - | java.lang.Longと互換性があります。 |
ARRAY | - | java.lang.Objectと互換性があります。紛らわしいですが、java.sql.Arrayとは互換性がありません。 |
表の項目の説明
H2のデータ型 | http://www.h2database.com/html/datatypes.htmlの上部に項目名として取り上げられているものです。 |
---|---|
See also | 「See also」の項の複写です。対応するJavaのデータ型を表します。プリミティブ型で問題なく使える場面もありますので、その辺は適当に。 |
備考 | 備考です。文中のSetXXXはPreparedStatementのSetから始まるメソッドを指しています。具体的なメソッド名は基本的に省略、ということで。私が実験してみた結果とか、ドキュメントから読み取った結果が含まれてますので、参考程度に。私が知らない型変換もあるかもしれません。 |