問題タブ [bind-variables]
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.
pentaho - MonetDB の case ステートメントで変数をバインドする
MonetDB でバインド変数を使用する際に奇妙な制限に遭遇したようです。where field=${var} と言って通常の方法でバインド変数を使用すると、機能します。しかし、この場合ではありません:
以下にサンプルを示します。
そして、ここにエラーがあります:
Pentaho 経由で最新バージョンの jdbc ドライバー (2.9) を使用します。
sqlite - sqlite で QlineEdit と bindit から整数として値を取得する
フォームからデータを入力しようとしました " QlineEdit からの整数を意味します "
プログラムは正常にコンパイルされますが、フォームとデータ全体を開くと、プログラムがクラッシュします
彼女はエラーです
彼女の私のコード *
oracle - インデックスを適切に使用していない Oracle バインド変数の問題
私のシナリオでは、次のクエリは高速に実行されます (7,000 万行のテーブルで 0.5 秒)。
また、バインド変数を使用して高速に実行することもできます:
列にインデックスがあるため、これらは高速に実行されpurchase_id
ます。(読み続けます...)
任意の列で「フィルタリング」できるクエリを作成する必要があります。これは、複数の入力変数を提供し、そうでない限りそれぞれをフィルタリングすることを意味しますnull
。これは最初はうまくいきます。
たとえば、次のクエリも高速 (0.5 秒) に実行されます。
しかし、バインド変数またはストアド プロシージャのいずれかによってクエリをパラメーター化しようとすると、インデックスを無視しているかのように、クエリが劇的に遅くなります (1.5 分)。
現在、私のアプリケーションでは、適切なパフォーマンスを得るために、実行時にクエリを動的に構築する必要があります。これは、パラメーター化されたクエリのすべての利点が失われ、SQL インジェクションについて心配する必要があることを意味します。
同じロジックを維持しながら、動的に構築されたクエリを回避することは可能ですか?
java - 「エスケープ」バインド変数 ? JDBC SQL 検索で
だから私は Java でコーディングしており、SQL で JDBC を使用してデータベースからデータを取得しています。データベースのデータまたは列名を変更できません。データベースの別の列が必要であると今日言われるまで、すべてが完全に機能していました。
そのため、選択ステートメントに列名を追加しようとしましたが、エラーが発生しました:
「java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] パラメーターが少なすぎます。2 が予想されます。」
列の変数と名前は次のとおりです。 String est = "\"Estimates Complete?\"";
したがって、多くの調査の結果、JDBC には「バインド変数」と呼ばれるものがあるようです。そのうちの1つです。バインド変数の作成方法に関するフォーラムの投稿と回答を見つけ続けていますが、それらを「エスケープ」する方法については何もありません。見積完了の値を変更できませんか? 列であり、私のプログラムに必要です。
String est = "Estimates Complete?"; を試すと、次のエラーが表示されます。
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]COUNT フィールドが正しくありません
それが可能かどうか知っている人はいますか?ありがとう。
編集:コード例:
sql - SQL インジェクション攻撃の例?
データベースを侵害するための SQL インジェクション攻撃の例は?
バインド変数を使用しても防止できない SQL インジェクション攻撃の種類とその理由は?
バインド変数は、SQL インジェクション攻撃の防止にどのように役立ちますか?
pdo - mysqli と PDO の bindValue と bindParam は変数の型を無視する
私の場合、指定された型が無意味に見える場合、PDO と mysqli で特定の変数型をバインドする意味の一部を理解するのに問題があります。次のコードでは、バインドされた型 ( i
or などs
) は無視されます。データベースのテーブル行「wert_sortierung」は INT(11) です。$val_int
が本当に整数であるかどうかに関係なく、 , / または を介してバインドする場合、i
クエリs
はPDO::PARAM_INT
常に_STR
機能し、中断もエラーも警告もなく、バインディングとデータベースまたは変数自体の型が適合しません。
誰かが私の推論の誤りを指摘してください。
c++ - Oracle OCI、バインド変数、ID IN (1, 2, 3) などのクエリ
簡潔なバージョン:
次の Java 手法の C++ OCI 適応を探しています。このコードでは、数値の配列 (配列のサイズは異なる場合があります) を非 PL/SQLSELECT
ステートメントにバインドし、結果の配列をWHERE ID IN (...)
スタイル チェックで使用できます。 .
http://rafudb.blogspot.com/2011/10/variable-inlist.html
元の質問:
OCI を介して Oracle と通信する C++ アプリがあります。テキストを連結して SQL クエリを生成する古いコードを修正しようとしています。代わりに、可能な限りバインド変数を使用したいと考えています。適切な解決策がない特定のケースが 1 つ発生しました。
(1, 4, 10, 30, 93)
パーツが 1vector<int>
つまたはその他の柔軟なサイズのデータ コンテナーから取得される場所。常に 5 つの値になることがわかっている場合は、次のようにすることができます。
しかし、それは 1 つかもしれませんし、10 個かもしれませんし、ゼロかもしれません。明らかに、クエリを文字列として構築している場合は、必要な数だけ追加できますが、可能であればそれを避け、変数をバインドするだけに固執することが目標です。
これを達成する良い方法はありますか?たとえば、OCI では、配列をバインドしてからサブ選択できますか?
:1
OCI配列はどこにありますか? (おそらく構文は異なるでしょう。) 誰もこれについて経験がありますか? 生の OCI を書くのに苦労する傾向があるので、サンプル コードは天の恵みです。ありがとう :)
編集:可能であれば、PL/SQLプロシージャによって解析される文字列にバインドするよりもうまくやりたいです。多くの場合、4000 文字の制限を超えてしまうと確信しています。また、それは、私が慣れている種類の文字列操作を、私が慣れていない別の種類の操作と交換しているだけのようにも感じます (そして、私にはできません)。簡単にデバッグできます)。可能であれば、値の配列 (または何らかの形式のデータセット) を 1 つの標準 SQL ステートメントにバインドしたいと考えています。
EDIT 2:いくつかの調査により、次のリンクが判明しましたが、これは私が望むことをしているように見えますが、Java で: http://rafudb.blogspot.com/2011/10/variable-inlist.html 誰もこれを適応させる方法を知っていますか? C++ OCI へのアプローチ?
sql - dbms_sql.execute が実行されたコード PL/SQL を検証します。
dbms_sql.execute を使用して実行されたコードを追跡する方法はありますか?
たとえば、次のクエリを実行すると:
結果を見つけることができるはずです:
v$sql/v$sql_bind_capture と dba_hist_sqltext/dba_hist_sqlbind を調べてみましたが、異なるバインド変数で同じ sql を実行すると、同じ sql_id を持つ sql が上書きされるため、信頼性がないようです。