java SQLSyntaxErrorException の原因と解決方法【初心者向け】

この記事は約3分で読めます。
記事内に広告が含まれています。

JavaでSQLを実行したときに、次のようなエラーが出ることがあります。

java.sql.SQLSyntaxErrorException

この記事では、

  • SQLSyntaxErrorException の意味
  • よくある原因
  • 解決方法

を初心者向けにわかりやすく解説します。


✅ 結論:SQLの書き方が間違っている

SQLSyntaxErrorException は、

SQLの文法が間違っているとき

に発生するエラーです。

Javaの問題というより、SQL文そのもののミスが原因であることが多いです。


よくあるエラー例

String sql = "SELEC * FROM users";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();

このSQLでは、SELECTSELEC になっています。

このようなスペルミスがあると、SQLSyntaxErrorException が発生します。


よくある原因①:SQLのスペルミス

よくある例:

  • SELECTSELEC
  • FROMFORM
  • WHEREWHRE

SQLのキーワードを間違えると、DBがSQLを正しく読めません。


よくある原因②:テーブル名・カラム名が違う

String sql = "SELECT namee FROM users";

namee というカラムが存在しない場合も、エラーになります。

確認すること

  • テーブル名は正しいか
  • カラム名は正しいか
  • 大文字小文字の扱いは問題ないか

よくある原因③:シングルクォーテーション忘れ

String sql = "SELECT * FROM users WHERE name = Taro";

文字列の値には、通常シングルクォーテーションが必要です。

正しい例

String sql = "SELECT * FROM users WHERE name = 'Taro'";

よくある原因④:SQL文をつなげたときの空白不足

String sql = "SELECT * FROM users" +
             "WHERE id = 1";

この場合、実際には

SELECT * FROM usersWHERE id = 1

となってしまい、SQLが壊れます。

正しい書き方

String sql = "SELECT * FROM users " +
             "WHERE id = 1";

文字列連結するときは、空白が必要かも確認しましょう。


原因を見つけるコツ

SQLSyntaxErrorException が出たら、次を確認すると見つけやすいです。

  • 実際に実行しているSQL文を表示する
  • SQLをDBツールで直接実行してみる
  • スペルミスがないか確認する
  • テーブル名・カラム名が合っているか確認する

まとめ

  • SQLSyntaxErrorException は SQL文のミスで起こる
  • JavaよりもSQLの内容を確認するのが大事
  • スペルミス、カラム名、空白不足は特によくある

このエラーが出たら、

実行しているSQL文をそのまま見直す

これを最初にやるのがおすすめです。

コメント

タイトルとURLをコピーしました