ホームページ >Java >&#&チュートリアル >Java の PreparedStatement で「'?' 付近の MySQL 構文エラー」が発生するのはなぜですか?
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 サイトの他の関連記事を参照してください。