問題タブ [sql-parametrized-query]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
228 参照

c# - ユーザー入力を文字列として格納してデータベース フィールドと比較できるようにする、パラメーター化されたクエリの作成

パラメータ化されたクエリに検索キーとして nvarchar 値を追加すると、問題が発生することはほぼ 100% 確信しています。問題は@exp、プレースホルダーを意味するアポストロフィで囲まれている場合、クエリが @exp がプレースホルダーではなく検索キーであると解釈されるという問題が発生します。検索キーがアポストロフィで囲まれていない限り、クエリが構文的に正しくないことを除いて、アポストロフィを削除します。実行計画はすでに評価されており、検索キーの値は文字通りスペイン語ではなく「スペイン語」になるため、パラメーターに挿入される値にアポストロフィを追加することはできないと説明されました。私の質問は、これをどのように回避するかです。この問題のより広範な背景については、以下の説明を参照してください。

タイトルにあるように、パラメータ化を使用するものと使用しないものの 2 つの動的クエリがありますが、どちらのクエリもまったく同じことを行うためのものです。クエリは、特定の言語でプライマリまたはセカンダリの経験を持つメンバーの数を返すために使用されます。

そうは言っても、クエリはこのように設定されています。接続は適切に設定されておりString exp、両方のクエリで使用される値はテスト用にスペイン語にハードコードされています。

パラメータ化を使用しない:

パラメータ化の使用:

私も試しました:

エラーは、パラメーターに値を追加する方法、または検索キーを囲むアポストロフィが必要なコンテキストでパラメーターを SqlCommand に追加する方法に関係していると確信しています。その時点で CommandText にアポストロフィを入れると、プレースホルダーも入れてクエリを実行すると、0 が返されます。取得したコマンド テキストを出力します。

つまり、@exp で経験のあるメンバーを検索していることを意味し、その経験を持つエントリがないため 0 を返します。

この問題について何か助けていただければ幸いです。上記の説明で何か間違ったことを述べた場合は、私に知らせてください。また、なぜ私が間違っていたのかについて説明を提供していただけないでしょうか。

0 投票する
0 に答える
131 参照

c# - 暗号化を使用した MySql のパラメーター化されたクエリにより、不正なシンタックスが発生する

ユーザーのログインとパスワードを保存するテーブルがあります。テスト用に、パスワードは極度の暗号化で保存されます。

たとえば、パスワード「one」は暗号化されています。

これは私がログインを確認する方法です:

password は、暗号化されたバージョンのユーザーのパスワードを含む文字列です。上記のコードは、「パスワードに近いシンタックスが正しくありません」という結果になります。もちろん、「パスワード」パラメーターは期待どおりに解析されていません。MS SQL Server を使用していたとき、上記のコマンドはエラーなしで動作します。

このクエリを安全に実行するにはどうすればよいですか?

ラインも変えてみた

しかし、間違いなく、不正な構文例外が発生します。

0 投票する
2 に答える
1305 参照

c# - パラメーター化された Linq to SQL クエリがパフォーマンスの問題を引き起こす

MSSQL サーバー 2008 に対して実行に 11 分かかる linq クエリがあります。MSSQL プロファイラーを使用して、実行に時間がかかるクエリを見つけ、データベースに対して単独で実行しました。

また、すべてのパラメーターを削除し、値を直接追加して、クエリを実行しました。実行にかかった時間は 1 秒未満でした。

グーグルで検索したところ、where句の値が判明する前にプランがコンパイルされるため、パラメーターを使用するとパフォーマンスに実際に影響を与える可能性があることがわかりました。

Linq to SQL は常にパラメーター化された SQL を実行するため、この場合のパフォーマンスを向上させるにはどうすればよいでしょうか?

インデックスに関する列を改善できるものは見つかりませんでした。Inner Join ステートメントの最初のテーブルには 192,014 行があり、パラメーターのない SQL の実行には 1 秒もかかりません。実行計画のスクリーンショットが添付されています。

編集はスクリーンショットの下にあります。

これは Linq クエリです。

パラメータ付きクエリの実行計画 (linq to sql) 既知の値を使用したクエリの実行計画

編集:スクリーンショットはここでは少し小さくなりました. パラメータ化された SQL には 5 つのパラメータしかありません。

編集 2:実行計画を変更するのは、パラメーター @p0 を持つ Inner Join ステートメントです。値自体を含む @p0 変数のみを削除すると、1 秒以内に実行されます。この値がすべての場合で一定である場合 (調査する必要があります)、この値がパラメーターのように使用されないようにすることはできますか?

0 投票する
2 に答える
938 参照

sql - Lazarus Pascal: パラメータ pp が見つかりません

しばらくの間、Lazarus でパラメーターを使用して SQL クエリを使用してきましたが、このエラーに悩まされています。それはかなり基本的なようですが、私はただ迷っています。

次の Lazarus Pascal コードがあります。

最後の行 (パラメーター pp を使用) が実行されると、プログラムは実行時エラーを報告します。エラーは次のとおりです。

パラメータ pp が見つかりません。

複数のパラメーターを持つクエリがありますが、問題はありません。これだけです。パラメータ名の名前を変更しようとしましたが、同じエラーが発生します。

パラメータの代わりに文字列リテラルを使用するか、次のように連結された文字列を挿入すると、問題なく動作します。

上記の最後の例では、lstCo はドロップダウン リスト ボックスです。コード全体で、dtWeekEndingDate は日付コントロールです。

多分私は何かを監視しています。何か案が?ありがとう!

0 投票する
4 に答える
134 参照

c# - LIKE を使用した SQL パラメータ化クエリ

パラメータを quert に渡そうとしましたが、うまくいきません。それを行う最良の方法は何ですか?文字列を連結したくありません。これが私のクエリです:

LIKE 演算子で値を渡すことができませんでした。また、「?」の代わりに @text を使用してみました。しかし、うまくいきません。助言がありますか?

ちなみに、「?」の近くに不正な構文が表示されます SqlException