ホームページ >Java >&#&チュートリアル >Java の PreparedStatement で「'?' 付近の MySQL 構文エラー」が発生するのはなぜですか?

Java の PreparedStatement で「'?' 付近の MySQL 構文エラー」が発生するのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-11 15:43:11341ブラウズ

Why Am I Getting a

PreparedStatement の実行時に MySQL 構文エラー:「SQL 構文にエラーがあります」

PreparedStatement を使用してクエリを実行すると、ユーザーは「MySQLSyntaxErrorException Near "?"」エラーが発生する可能性があります。このエラーは、SQL クエリの構文エラーを示します。

この特定の問題では、コードは '?`占位符を使用してクエリ パラメータを置換しようとしますが、PreparedStatement がこれらのプレースホルダを正しく置換していません。

問題は、executeQuery() メソッドの呼び出しにあります。このコードは、s.executeQuery() の代わりに s.executeQuery(query) を呼び出すことにより、準備されたクエリを元のクエリで上書きします。準備されたクエリを実行するには、引数のないexecuteQuery() メソッドを使用する必要があります。

PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);        
rs = s.executeQuery(); // Correct

さらに、閉じられていない接続、ステートメント、結果セットが原因で、コードでリソースがリークしている可能性があります。リソースの枯渇を防ぐために、リソースはfinallyブロックで閉じる必要があります。

try {
  ...
} finally {
  if (rs != null) rs.close();
  if (s != null) s.close();
  if (conn != null) conn.close();
}

以上がJava の PreparedStatement で「'?' 付近の MySQL 構文エラー」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。