MySQL の構文をJavaのfor文でラクラク作る方法
簡単に
String b = "";
に対して、
for() b = b + 「ほにゃらら」;
です。
詳しく
MySQL とデータをやり取りするための構文が結構面倒ですよね。具体的にいうと、Statement クラスやPreparedStatement クラスに送るString の文字列が
String sql = "INSERT INTO edm VALUES (NULL,'" + title + "', '" + artist1 + "', '" + artist2 + "', '" + artist3 + "', '" + artist4 + "'";
こんな感じでありえないほど複雑になります。どうして複雑になるのかというと、SQL へ送信する文を""で囲むため、その中にJava の変数を直接入れることはできません。(printf関数使えばいけないことはないですが)。となると、変数が入るたび、いったん""を区切って+ しなければならず煩雑になってしまいます。
これはまだかわいい方で、私の作りたいデータベースは
- 曲のタイトル名(String title)
- 曲のアーティスト名(String artist[4])
- 曲のムード(Boolean mood[21])
を送信したいわけです。アーティストまでならまだしも、ムード21個って。。
これが面倒すぎたわけです。仮にもプログラマですから冗長的なコーディングは避けたいわけです。どれほど冗長的か、面倒ですが書いてみました。
キモッッッッッッッッ!!!
これではもし間違えていた時の修正も、配列の数を変えようと思った時も、非常に修正が困難です。だが、何よりもカッコ悪い。見栄えが悪すぎますよね。
どうしようかなと考えた時このサイトがヒットしました。
なるほど!String型の変数を用意しておいて、そこに「+」で後ろに付け加えてfor文回していけばいいのか!非常に明快ですね。
ここまでシンプルになりました。
かなりスッキリしましたし、修正も簡単ですね!一発で代入しようとダブルクォーテーションを連発したり、printf()関数で%を連発したりせずとも、簡単にSQL構文を書くことに成功しました。
まとめ
ということで、SQL文で同じようなものを連ねて書くときは「for文で str = str + α」と回していけばいいんだな〜と思ってください。
これは何もSQL文だけではなく、幅広く使えそうなので是非覚えておきたい書き方です。