私は問題があります - 私は自分のSQLクエリを動的に作成し、ユーザーの入力オプションに基づいています。したがって、ユーザーは5つのパラメータを持っています(実際にはそれ以上です)。そして、彼はそれらのいくつか(必要な場合はすべて)を使用するか、またはnoneを選択してクエリの値を指定することができます。そこで、パラメータが選択されているかどうか、値が提供されているかどうかを調べることで、クエリ文字列(WHERE条件の基本)を構築します。しかし今、 'のような特殊文字の問題があります。 replaceAll( "'"、 "\\")を使用しようとする可能性がありますが、これはかなり鈍いですし、preparedStatement.setString()がよりうまく動作することがわかります。しかし、私にとっては、パラメータが提供されているかどうか、また前のパラメータが(もし?の毒を指定してそれを正しいパラメータに接続するために)指定されていれば、再度チェックする必要があります。これは多くの組み合わせを引き起こし、エレガントに見えません。preparedStatem.setString()から文字列を取得できますか?
私の質問は - どういうわけか、preparedStatement.setString()が生成する文字列を受け取ることができますか?または、同じ仕事をし、私に文字列を与えて、手動でクエリに入れることができる同様の関数があります。
イントロが長すぎるかもしれませんが、誰かがより良いアイデアを持っている可能性があります。なぜ私はそれが必要なのか説明したいと思いました。
私は非常にあなたの質問を理解していないが、あなたは絶対に100%のsetStringを使用する必要があります()を自分で行うよりもむしろ。 –
コードの関連部分を含めてください。 –
提供されているパラメータに応じて、 '?'文字を含むクエリ文字列を作成する必要があると思います。クエリ文字列を取得したら、パラメータをもう一度繰り返して、 'setString()'を呼び出します。それがトリックですか? –