MySQL で JDBC を利用した SQL 実行を試みたところ、以下のエラーが発生。

致命的: null
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘???_???’ at line 1


実際にエラーが発生しているコードは「PreparedStatement statement = connect.openStatement(“SELECT COUNT(*) FROM 参加者_テスト”);」で、デバッグでstatementの値を確認すると確かに「SELECT COUNT(*) FROM ???_???」となっていた。

TF-8の宣言を入れないとダメでした。以下はSQLが文字化けしていた時の例。

connect = DriverManager.getConnection("jdbc:mysql://serv/dbname?
  user=sample&password=smpPass");

接続文字列の設定に「&useUnicode=true&characterEncoding=UTF-8」を加え、以下とすることで解決しました。

connect = DriverManager.getConnection("jdbc:mysql://serv/dbname?
  user=sample&password=smpPass&
  useUnicode=true&characterEncoding=UTF-8");

デバッグで確認すると、今度は「SELECT COUNT(*) FROM 参加者_テスト」となっていて文字化けが解消していることが確認できました。処理もエラーとなることなく実行されました。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です