ホームページ >データベース >mysql チュートリアル >PreparedStatement `executeQuery()`: SQL 文字列パラメーターなしで使用する理由

PreparedStatement `executeQuery()`: SQL 文字列パラメーターなしで使用する理由

DDD
DDDオリジナル
2024-11-20 13:14:15475ブラウズ

PreparedStatement `executeQuery()`: Why Use It Without a SQL String Parameter?

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 サイトの他の関連記事を参照してください。

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