MySQL プリペアド ステートメント: 「MySQLSyntaxErrorException」エラーの克服
JDBC for MySQL でプリペアド ステートメントを利用する場合、適切な構文と使用法。開発者が直面する一般的なエラーの 1 つは、「MySQLSyntaxErrorException」です。このエラーの特定のインスタンスと対応する解決策を見てみましょう。
問題:
MySQL コネクタを使用する Java ベースのアプリケーションで、実行時に「MySQLSyntaxErrorException」が発生します。準備された声明。このコードでは、データの取得に次のステートメントを使用します:
<code class="java">PreparedStatement stmt = con.prepareStatement(selectSQL); stmt.setInt(1, ad_id); rs = stmt.executeQuery(selectSQL);</code>
実行すると、エラーがスローされます。
エラー メッセージ:
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
解決策:
エラーは準備されたステートメントを実行する構文内にあります。具体的には、次の行は正しくありません:
<code class="java">rs = stmt.executeQuery(selectSQL);</code>
準備されたステートメントを実行するための正しい構文は次のとおりです:
<code class="java">rs = stmt.executeQuery();</code>
executeQuery メソッドから selectSQL 引数を省略すると、ステートメントが実行されます。
説明:
準備されたステートメントでは、SQL クエリはステートメントの準備中に渡され、パラメーターはsetX メソッド (setInt など)。結果セットを取得するには、executeQuery メソッドを使用します。このメソッドは引数なしで呼び出す必要があります。元のコードでは、executeQuery メソッド呼び出しに SQL クエリ文字列が誤って含まれており、構文エラーが発生しました。
以上がMySQL JDBC のプリペアド ステートメントが「MySQLSyntaxErrorException」をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。