問題タブ [parameterized-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 投票する
3 に答える
110 参照

prepared-statement - SQLインジェクション攻撃の欠如にエラーはありますか?

プリペアドステートメントやパラメータ化されたクエリなどのクエリを実行するための最も安全な方法を使用してSQLインジェクション攻撃を防ぐ場合、実行中にデータベースエラーが発生しないという保証はありますか?たとえば、レコードの挿入時に特定のタイプに無効なパラメータを送信すると、デフォルト値を使用する代わりにエラーが発生します。例を挙げてもらえますか?

0 投票する
3 に答える
1081 参照

php - SQLインジェクションPHP:パラメーター化されたクエリを使用してユーザー入力を検証する必要がありますか?

たとえば、私はこの入力を持っています:

名前ウォーリー

メールwallycat@example.com'; DROP TABLE ClientTable; PRINT'ひどい!'-

私のパラメータ化されたクエリは次のとおりです。

このパラメーター化されたクエリを使用する場合でも、ユーザー入力を検証する必要がありますか?(この場合、電子メールフィールド)

または、パラメータ化されたクエリを使用しているため、すでに安全です。クエリは次のすべてを単純に格納します。'wallycat@example.com'; DROP TABLE ClientTable; PRINT'Too bad!'-'データベースにありますか?

ありがとうございました!

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

sql - パラメータ化されたSQLのパフォーマンス

私は次のようなクエリがあります

値'XYZ'はユーザーによって入力されます(%と_を含めることができます)

文字列連結を使用してクエリを作成すると、10秒で実行されます。しかし、これは安全ではないため、パラメーター化されたクエリを使用する必要があります。

そのため、odbcコマンドオブジェクトとそのexecuteメソッドを使用してクエリを作成し、パラメーターを渡します。

残念ながら、パラメータ化されたSQL実行メソッドには1分かかります。

このクエリは、ドリルダウン/調査パッケージの一部である多くのクエリの1つであり、すべてのパラメータ化されたクエリで同様の速度低下が発生しました(文字列の連結と比較して)。

時間がどこに向かっているのかを知る(そしてそれを修正する)にはどうすればよいですか?

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

c# - やや一般的なクエリメソッドを作成しようとしています

列に格納されている値だけでなく、テーブル名、列名などを置き換えたいので、これを試しました。

...しかし、取得します。"ORA-00903 invalid table name"

だから、私はC#の方法でやってみました:

...しかし、それも失敗しました、実際には、"ORA-00904 "WHYAMINOTQUOTINGTHEDOT"."EXE": invalid identifier"

私は間違った木を吠えていますか、それとも単に猫をフィリングするために間違った方法を使用していますか?

昔は、文字列を。(Delphi)のようなもので囲むことにより、DBエンジンに渡すのに安全な文字列を作成できましたQueryStr()。に類似したヘルパー関数はありC#/Oracleますか?

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

sql - パラメータ化されたクエリがVBで機能しない

以前は、テキストボックスの値をSQLに直接連結することでこれを実行しようとしていましたが、「必要なパラメーターに値が指定されていません」というメッセージが表示され、代わりにパラメーター化されたクエリを使用する必要があることを読みました。だから私はこれを試しましたが、エラーは発生しませんが、リーダーには何も含まれていません。私はこれまでパラメータ化されたクエリを使用したことがないので、これが機能しない理由について少し迷っています。

編集:上記のコードを変更して、OLEDBがどのように機能するかについて簡単に読んだものから説明しました。これにより、「必要なパラメーターに値が指定されていません」というメッセージが再び表示されます。

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

sql - Ruby on Rails:基本的なパラメーター化されたクエリとURLの形成

Railsデータベースにクエリを実行し、結果をJSONとして返す方法を学習しようとしています。私の例では、パラメータ、都市、州を使用してデータをクエリしたいと思います。

これまでのところ、私のコントローラーでは、次のアクションが機能するようになっています。

これは私のルーティングエントリでもあります。

このリソースは、次のURLで呼び出すことができます。

それはすべて良いことですが、複数のパラメーターでクエリを実行する方法がわかりません。コントローラにAND句を追加するのは簡単なようです。

でも……どうしたらいいのかわからない

a。)ルーティングエントリを正しく記述しますか?b。)ブラウザでテストした場合のURLはどのようになりますか?

レーキルートを理解しようとしましたが、何かが足りないに違いありません。

誰かがアクションがどのように見えるべきかについての基本的な例を提供できますか?ルーティングエントリはどのようになり、リソースにアクセスするためのURLはどのようになりますか?

繰り返しになりますが、SQLで記述されている場合、これが返されたいものです。

助けていただければ幸いです。

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

c# - クエリがパラメータ化されていない場合、オブジェクト(バイト配列)をクエリに渡す方法は?

このクエリを実行する必要があります。

x, y, z etc上記のコードで、クエリ自体に値を渡すにはどうすればよいですか? x, y, z etcint または string ではなく、バイト配列です。私のコードでは、それらは .net Guid フィールドですが、バイト配列に変換してバイナリ値として db に保存しています。

以下に示すように、パラメーター化された方法でこれを行うことで、私が望むものを達成できます。

2番目のアプローチの問題は、比較的遅いことです。IsThisEntryAlreadyAddedここでは、データベースに対してクエリを何度も実行する必要があるだけでなく、この関数を実行してその特定のエントリがまだ追加されていないかどうかを毎回確認する必要があります。

私の質問は、パラメーター化されていないクエリでオブジェクト (私の場合はバイト配列) を渡す方法です。それが不可能な場合、私の質問は、クエリを高速化する代替手段はありますか?

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

asp.net - asp.net C# のパラメーター化された最上位句クエリ

C#でトップ句クエリを使いたい

行のオブジェクトのインスタンスに設定されていないオブジェクト参照を取得しています

ありがとう、

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

c# - C#からのパラメーター化されたクエリでのプレースホルダーの正しい方法

すべてが機能しますが、これは正しい実践/正しいアプローチ/何が理にかなっているのかを知るためだけのものです

私がコードを持っているとしましょう:

そして、残りの部分について、次のうち正しいものはどれですか?:

また

また

(私はそれが3番目ではないことを知っています)2番目は私に正しい方法に見えます。これはすべて、パラメータ化されたパラメータがSQLによってコードから実際にどのように解釈されるかに依存します。何かご意見は?私は特に、コーディングの悪い習慣を笑う知識のある人が好きではないので、ここにいる可能性がある場合は質問しています:)

更新:私が知るように、msdnでさえここでの規則に従わず、1番目と2番目の両方が使用されます。私はそれを明確にする1番目に固執するつもりです。ありがとう

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

sql - SQL-OleDbCommandはSQLパラメータを変更しません

以下は私のSelect*関数のコードです-それはうまく機能し、SQL文字列をSelectFromCompany*からに変更するまですべてうまくいきます

次に、次の手順を実行します

DBMSは「クエリが不完全」を送り続けます-Command変数がqueryパラメータをから@1に変更せずに文字列を送信していると思いますCompany


これが機能するコード(私のもの)です。これはselectではなくinsertステートメントです-間違っている場合は修正してくださいが、SELECTでも機能しないはずです

`