JDBCでサポートされるデータ型とは?SQLとJavaの対応表を徹底解説
JDBCとSQLデータ型のマッピング
JDBC(Java Database Connectivity)は、ほぼすべてのSQLデータ型をサポートしています。JDBCドライバがJavaアプリケーションから呼び出しを受け取ると、渡されたJavaのデータ型を、対応するSQLデータ型へ自動的に変換します。この変換処理は「デフォルトマッピング」と呼ばれる規則に従って行われるため、開発者は型変換を意識することなく、Javaのオブジェクトをそのままデータベース操作に利用できます。
以下の表は、JDBCがサポートする主なSQLデータ型と、それに対応するJDBC/Javaのデータ型の一覧です。
| SQLデータ型 | JDBC/Javaデータ型 |
|---|---|
| VARCHAR | java.lang.String |
| CHAR | java.lang.String |
| LONGVARCHAR | java.lang.String |
| BIT | boolean |
| NUMERIC | java.math.BigDecimal |
| TINYINT | byte |
| SMALLINT | short |
| INTEGER | int |
| BIGINT | long |
| REAL | float |
| FLOAT | float |
| DOUBLE | double |
| VARBINARY | byte[ ] |
| BINARY | byte[ ] |
| DATE | java.sql.Date |
| TIME | java.sql.Time |
| TIMESTAMP | java.sql.Timestamp |
| CLOB | java.sql.Clob |
| BLOB | java.sql.Blob |
| ARRAY | java.sql.Array |
| REF | java.sql.Ref |
| STRUCT | java.sql.Struct |
文字列系の型について
VARCHAR・CHAR・LONGVARCHARは、いずれもjava.lang.Stringにマッピングされます。LONGVARCHARのような長いテキストデータを扱う場合は、getString()メソッドやストリーム(getAsciiStream()など)を使って取得すると効率的です。
数値系の型について
整数型はTINYINT→byte、SMALLINT→short、INTEGER→int、BIGINT→longと、サイズに応じてJavaのプリミティブ型へ対応付けられます。また、NUMERICやDECIMALのように精度が重要な数値を扱う場合は、誤差のない演算が可能なjava.math.BigDecimalが使用されます。
日付・時刻系の型について
日付や時刻には、それぞれ専用のクラスが割り当てられています。DATEにはjava.sql.Date、TIMEにはjava.sql.Time、TIMESTAMPには日付と時刻の両方を持つjava.sql.Timestampが対応します。これらはjava.util.Dateのサブクラスとして設計されており、JDBC経由での相互変換も容易です。
バイナリ・大型オブジェクト(LOB)について
BINARYやVARBINARYはバイト配列(byte[])として扱われます。画像や動画などの大きなバイナリデータを格納するBLOB、大量のテキストを格納するCLOBには、それぞれjava.sql.Blob・java.sql.Clobという専用インターフェースが用意されており、ストリームベースの読み書きが可能です。
まとめ
JDBCのデフォルトマッピングを理解しておくと、PreparedStatementへのパラメータ設定やResultSetからの値取得がスムーズになります。なお、必要に応じてsetObject()やgetObject()メソッドを使えば、明示的な型指定による柔軟なデータ操作も可能です。
-
Javaのクラスで使える変数は3種類!ローカル変数・インスタンス変数・static変数の違いを解説
Javaのクラスで扱える変数には、大きく分けて3つの種類があります。それは「ローカル変数(local variables)」「インスタンス変数(instance variables)」「クラス変数/静的変数(class/static variables)」です。それぞれ宣言する場所や生存期間(ライフサイクル)が異なるため、用途に応じて正しく使い分けることが、バグの少ない読みやすいコードを書く第一歩となります。本記事では、各変数の特徴とサンプルコードを交えてわかりやすく解説します。1. ローカル変数(Local Variable)ローカル変数とは、メソッド内・コンストラクタ内・コードブロック(i
-
JavaのJOptionPaneダイアログの種類とは?4つのダイアログの使い方を解説
JOptionPaneクラスとはJOptionPaneは、JComponentクラスのサブクラスであり、シンプルなコードでモーダルダイアログボックスを作成・カスタマイズするためのstaticメソッドを多数提供しています。通常のJDialogを使用するとコードが複雑になりがちですが、JOptionPaneを使えばその複雑さを大幅に軽減できます。また、JOptionPaneは、標準の4種類のアイコン(質問(question)、情報(information)、警告(warning)、エラー(error))のいずれか、あるいはユーザーが指定したカスタムアイコンを表示してダイアログボックスを表示します。