MySQLの更新プログラムがうまく動かなかったワケ

Eclipseのコンソール画面にエラーが出ていたことに、気づかなかった。


情報: このコンテキストの再ロードを開始しました

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'カラム名' at row 1

〜略〜Data too long for column〜略〜
ここに注目すると、日本語に直訳すると、「特定のカラムに入れるデータが大きすぎます」と言う事だと思う。
データベースの型は、char(8)だった。(文字数8文字まで入力可能という意味)
さっそく、データベースを更新する値を見直しすると、"2008/02/01"という文字列だった。
これだと、char(10)になる。(スラッシュを含み、10文字になる。)
これじゃ、DBに値が入るわけが無い。
では、スラッシュを含む値を、DBに入れるには、どうすればよいか。
まず、Javaの、.split()メソッドを使う。
今回は、スラッシュが存在する部分で、文字を分割させる。

/*文字列分割*/
String foo = "2008/02/01";

String[] bar = foo.split("/"); //ここで、スラッシュは分割するために使ったので、もう、使われない。



次に、分割して、スラッシュを省いた文字列を結合させる。

/*文字列結合*/
String baz = bar[0] //2008の部分
+= bar[1] //01の部分
+= bar[2]; //02の部分


すると、bazの値は、"20080201"という文字列なり、char(8)の状態で、bazをDBに入れることが可能となります。
これで、スラッシュを入れた場合でも、値を入れることができます。
しかし、その値をデータベースから取り出すとき、スラッシュがない状態になります。
このままだと、"20080201"となるので、"2008/02/01"とスラッシュの含む値に直さないといけません。
データベースから、"20080201"を取り出したあと、"2008/02/01"へ直す方法。
まず、Javaの、.substring()メソッドを使う。

/*文字列の一部の取得*/
String baz = "20080201";
String hoge = baz.substring(0,4); //1文字目から4文字目を取得。(2008の部分)
hoge += "/"; //hogeの右にスラッシュを追加する。
String piyo = baz.substring(4,6); //4文字目から6文字目を取得。(02の部分)
piyo += "/"; //piyoの右にスラッシュを追加する。
String fuga = baz.substring(6,8); //6文字目から8文字目を取得。(01の部分)


次に、文字列を追加する。

/*文字列の追加*/
String hogera = hoge += piyo += fuga;
これで、hogeraの値が、"2008/02/01"になります。