ホームページ >Java >&#&チュートリアル >PreparedStatements で「executeQuery(String)」によって SQL 構文エラーが発生するのはなぜですか?

PreparedStatements で「executeQuery(String)」によって SQL 構文エラーが発生するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-06 11:24:16529ブラウズ

Why Does `executeQuery(String)` Cause SQL Syntax Errors with PreparedStatements?

PreparedStatement の実行で構文エラーを引き起こす不正なメソッド呼び出し

PreparedStatement を使用して SQL クエリを実行する場合、正しい構文と実行方法を遵守して回避することが重要です構文エラー。

を試行すると、よくある問題が 1 つ発生します。 PreparedStatement オブジェクトでexecuteQuery(String)を呼び出してクエリを実行します。これは、準備されたクエリを元のクエリでオーバーライドするため、正しくありません。

正しいアプローチは、次に示すように、引数なしでメソッドexecuteQuery()を呼び出すことです。

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

Byこの調整を行うと、準備されたクエリが正しく実行され、「SQL 構文にエラーがあります」という問題が排除されます。エラー。

追加の注意事項:

  • try-with で Connection、Statement、および ResultSet オブジェクトを閉じて、適切なリソース管理を確保することが重要です。
  • あなたの場合の具体的なエラー メッセージは、「SQL 構文にエラーがあります。チェックしてください」です。 「? または MemberName = ?」の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを参照してください。行 1" は、MySQL が認識できない構文要素「?」を検出したことを示します。準備されたクエリでは、正しいパラメータ バインディングの必要性が強調されています。

以上がPreparedStatements で「executeQuery(String)」によって SQL 構文エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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