ホームページ >データベース >mysql チュートリアル >PreparedStatement `executeQuery()`: SQL 文字列パラメーターなしで使用する理由
PreparedStatement 構文エラー: 詳細
PreparedStatement に関連するエラー メッセージが表示されました。コード、特に selectSql1 クエリと select1 メソッドを調べると、微妙な問題が明らかになります。
問題は、PreparedStatement のexecuteQuery メソッドの使用法にあります。 select1 メソッドは現在、
return this.stmt.executeQuery(sql);
の呼び出しを試行しています。ここで、sql は SQL クエリ自体です。これは、PreparedStatement でexecuteQuery メソッドを使用する正しい方法ではありません。
解決策
修正は、その行を次のように更新するだけです:
return this.stmt.executeQuery();
executeQuery メソッドから SQL パラメータを削除することで、PreparedStatement の内部クエリがクエリの代わりに実行されるようになります。生の SQL 文字列。 PreparedStatement は、SQL クエリ内で疑問符 (?) で示されるプレースホルダ パラメータを提供します。これらのパラメータは、randNum などの特定の値にバインドされます。
したがって、このコンテキストでの正しい useQuery 呼び出しにはパラメータがなく、PreparedStatement で次のことが可能になります。パラメータ値がすでにバインドされている内部クエリを実行します。
以上がPreparedStatement `executeQuery()`: SQL 文字列パラメーターなしで使用する理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。