- PR -

MySQL Connector/Jについて

1
投稿者投稿内容
Tom
会議室デビュー日: 2002/12/29
投稿数: 3
投稿日時: 2003-04-10 14:00
現在、DAOパターンを改良し、より再利用性を高めるクラス郡を
勉強しております。
テスト環境としてMySQL+MySQL Connector/Jを使用している
のですが、SQL型とJavaクラスのマッピングについてつまづいて
います。
JDBCのAPIには、ResultSetのgetObject()において
JDBCタイプがTINYINTのフィールドはIntegerにマッピング
されるとありますが、上記テスト環境の場合、SQLタイプがTINYINT
のフィールドに対してgetObject()を行うとjava.lang.Byteクラス
で値が帰ってきます。
これはConnector/Jの実装ミスでしょうか?
Connector/Jのリファレンスなどがあれば、良いのですが、見つける
ことができませんでした。

非常に限られた環境での問題ですが、もし少しでも情報などを
お持ちの方がおられましたら、是非ご享受ください。
Tom
会議室デビュー日: 2002/12/29
投稿数: 3
投稿日時: 2003-04-12 12:40
自己レスです。

JDBC API 入門の表8.9.3によると
TINYINTのフィールドに対して、ResultSet.getObject()を
行うとjava.lang.Integer型で返ってくる仕様のようです。

しかし、Connector/Jのソースを見ると、ResultSet.getObject()は
表8.9.6にあるSQLタイプ別の推奨されるgetXXX()メソッドを利用
していました。

よって、TINYINTには、getByte()が使われていたためByte型で
返ってきたようです。

なぜ、TINYINTにはgetByte()、SMALLINTにはgetShort()、
INTEGERにはgetInt()が推奨されているにもかかわらず、
getObject()を使用した場合はどのフィールドもIntegerが
返ってくる仕様なのかと疑問に感じました。
1

スキルアップ/キャリアアップ(JOB@IT)