- - PR -
MySQL Connector/Jについて
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 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のリファレンスなどがあれば、良いのですが、見つける ことができませんでした。 非常に限られた環境での問題ですが、もし少しでも情報などを お持ちの方がおられましたら、是非ご享受ください。 |
|
投稿日時: 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
