2005年7月 6日

こける定番 Date と Date。

Javaの学校って言うと、イメージが違うかもしれませんが。

日々は課題が与えられたら、黙々とコーディング作業で
たまに不明な点は先生に聞きに行ったり、
コードのダメ出ししてもらう…という
ほとんど会社にいるのと同じ状態。

いやはや、すごい勢いで進化してるのが自分でわかります。
昨日の私も、過去の私。
プリントはメモだらけで、まとめる暇もない。

独語で大学での勉学は、studieren(研究する・勉強する)であって
lernen(覚える・習う)や auswendig lernen(暗記する)ではない。
そういう感じに近いです。

目指すは、可読性の高さと柔軟性、加えて高速で負荷の少ないやさしい物。
…って、むずかすぅぃぃいいいいいーーーっ。気が遠くなります(笑)

で、今日つまずいたのは、java.sql.Date と java.util.Date の違い。

以前、会社の上司さんが、
DB接続に関して、いろいろ細かく教えてくださって。

その中で、覚えているのは、2つのポイント。
1つは、コネクションプールサーバーで、
もう1つは、プリペアドステートメント。

この後者は、繰り返し発行する可能性のあるSQL文があったとして、
そのSQL文の、毎回値が変更される部分に、
代わりのシンボル ? を書いておくと、その値が代入されて実行されるというヤツ。

で、昨日はJavaのPreparedStatementを教えてもらって
スーパークラスに組み込んで使ってたら、
代入する値が Date の時にこけていた次第。

ほんで、Date って普通(?)は、
java.util.Date クラスの Date を使ってるんだけど、
PreparedStetement を使う時、
つまり、DB関連の時には、java.sql.Date を使わないとアカン。

しかし、これがダイレクトに、java.util.Date から java.sql.Date に
変換出来ないので、例によってググりまくって結果…

 java.util.Date utilDate = new java.util.Date(); // java.util.Date のDate
 java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime()); // java.sql.Date の Date に変換

…という変換をかます事になった次第。

詳細は、util の Date を一度秒にしてから
それを sql の Date に変換しているのだそうな。

かくして、めでたく、PreparedStatement の
setDate メソッドも使えるようになり…

 pstmt.setDate(index, sqlDate);

…てな感じに使って、問題解決。

他にもいろいろ問題が発生しては解決していってますが
なんかうまくまとめられてないんで、そのうちに。

ってーか、perl と PHP と Java で
各シチュエーション毎の定番の操作を比較した
虎の巻が欲しいところです。。。
そんな逆引きリファレンス出してくれたら、
絶対買うから誰か書いてください(笑)

Posted by anigon at 10:07 PM

「ボンヤリ。」へ戻る | 「テロ。」へ進む

上へ戻る