MySQL Connector/J は、MySQL データタイプと Java データタイプ間の変換の扱い方に柔軟に対応します。
丸めやオーバフロー、もしくは精度の損失がおこることはありますが、一般的に、どんな MySQL データタイプでも java.lang.String に変換することが可能で、また、いかなる数値タイプも Java 数値タイプに自由に変換することができます。
Connector/J 3.1.0 からは、プロパティ
jdbcCompliantTruncation を
false
に設定して接続の構成に使用し、その動作を規制しない限り、JDBC
ドライバは JDBC
仕様で要求される通り警告を発行、もしくは
DataTruncation 例外を投入します。
常に作動が保証されている変換は、次の表の通りです :
接続プロパティ - その他.
これらの MySQL データタイプは | 常時以下の Java タイプへの変換が可能 |
CHAR, VARCHAR, BLOB, TEXT, ENUM, and SET |
java.lang.String, java.io.InputStream, java.io.Reader,
java.sql.Blob, java.sql.Clob |
FLOAT, REAL, DOUBLE PRECISION, NUMERIC, DECIMAL, TINYINT,
SMALLINT, MEDIUMINT, INTEGER, BIGINT |
java.lang.String, java.lang.Short, java.lang.Integer,
java.lang.Long, java.lang.Double,
java.math.BigDecimal |
DATE, TIME, DATETIME, TIMESTAMP |
java.lang.String, java.sql.Date, java.sql.Timestamp |
変換の対象になる MySQL データタイプより低い精度または容量を持つ Java 数値データタイプを選択した場合、丸め、オーバフロー、もしくは制度の損失が起こることがあります。
ResultSet.getObject()
メソッドは、適切な JDBC
仕様にしたがって、MySQL と Java
タイプ間のタイプ変換を使用します。ResultSet-
MetaData.GetColumnClassName()
によって戻される値も以下に記載されています。java.sql.Types
のクラスに関する詳細は、Java
2 Platform Types をご覧ください。
ResultSet.getObject() の MySQL タイプ から Java タイプへ.
MySQL タイプ名 | GetColumnClassName
の戻り値 |
Java クラスとして返還 |
BIT(1) ( MySQL-5.0 から ) | BIT | java.lang.Boolean |
BIT( > 1) ( MySQL-5.0 から ) | BIT | byte[] |
TINYINT | TINYINT |
java.lang.Boolean 構成プロパティ
tinyInt1isBit が
true ( デフォルト )
に設定され、格納サイズが 1
の場合。それ以外では
java.lang.Integer
|
BOOL, BOOLEAN | TINYINT | 上記 TINYINT 参照。TINYINT(1) のエイリアス。現行。 |
SMALLINT[(M)] [UNSIGNED] | SMALLINT [UNSIGNED] |
java.lang.Integer ( UNSIGNED
である場合、ない場合両方 ) |
MEDIUMINT[(M)] [UNSIGNED] | MEDIUMINT [UNSIGNED] |
java.lang.Integer, UNSIGNED であれば
java.lang.Long
|
INT,INTEGER[(M)] [UNSIGNED] | INTEGER [UNSIGNED] |
java.lang.Integer , UNSIGNED であれば
java.lang.Long
|
BIGINT[(M)] [UNSIGNED] | BIGINT [UNSIGNED] |
java.lang.Long , UNSIGNED であれば
java.math.BigInteger
|
FLOAT[(M,D)] | FLOAT | java.lang.Float |
DOUBLE[(M,B)] | DOUBLE | java.lang.Double |
DECIMAL[(M[,D])] | DECIMAL | java.math.BigDecimal |
DATE | DATE | java.sql.Date |
DATETIME | DATETIME | java.sql.Timestamp |
TIMESTAMP[(M)] | TIMESTAMP | java.sql.Timestamp |
TIME | TIME | java.sql.Time |
YEAR[(2|4)] | YEAR |
yearIsDateType 構成プロパティが false
に設定されている場合、戻されるオブジェクトのタイプは
java.sql.Short 。true (
デフォルト ) の場合のオブジェクト
タイプは java.sql.Date (
日付設定は 1 月 1 日の深夜まで ) 。 |
CHAR(M) | CHAR |
java.lang.String ( カラムの文字セットが
BINARY の場合は
byte[] が戻される ) |
VARCHAR(M) [BINARY] | VARCHAR |
java.lang.String ( カラムの文字セットが
BINARY の場合は
byte[] が戻される ) |
BINARY(M) | BINARY | byte[] |
VARBINARY(M) | VARBINARY | byte[] |
TINYBLOB | TINYBLOB | byte[] |
TINYTEXT | VARCHAR | java.lang.String |
BLOB | BLOB | byte[] |
TEXT | VARCHAR | java.lang.String |
MEDIUMBLOB | MEDIUMBLOB | byte[] |
MEDIUMTEXT | VARCHAR | java.lang.String |
LONGBLOB | LONGBLOB | byte[] |
LONGTEXT | VARCHAR | java.lang.String |
ENUM('value1','value2',...) | CHAR | java.lang.String |
SET('value1','value2',...) | CHAR | java.lang.String |