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 で
各シチュエーション毎の定番の操作を比較した
虎の巻が欲しいところです。。。
そんな逆引きリファレンス出してくれたら、
絶対買うから誰か書いてください(笑)
こける定番 Date と Date。