Documentdb-sql-parameterized
DocumentDB SQL-パラメーター化
リレーショナルデータベースでは、パラメーター化されたクエリは、プレースホルダーがパラメーターに使用され、パラメーター値が実行時に提供されるクエリです。 DocumentDBはパラメーター化されたクエリもサポートしており、パラメーター化されたクエリのパラメーターはおなじみの@表記で表現できます。 パラメーター化されたクエリを使用する最も重要な理由は、SQLインジェクション攻撃を回避することです。 また、ユーザー入力の堅牢な処理とエスケープを提供できます。
Net SDKを使用する例を見てみましょう。 以下は、コレクションを削除するコードです。.
パラメーター化されたクエリの構築は次のとおりです。
collectionIdをハードコーディングしていないため、このメソッドを使用してコレクションを削除できます。 SQL Serverと同様に、パラメータ名の前に「@」記号を使用できます。
上記の例では、Idによって特定のコレクションを照会しています。Idパラメーターは、このSqlQuerySpecのパラメーターのプロパティに割り当てられたこのSqlParameterCollectionで定義されています。 次にSDKは、内部にcollectionIdが埋め込まれたDocumentDBの最終的なクエリ文字列を作成する作業を行います。 クエリを実行し、SelfLinkを使用してコレクションを削除します。
以下は、CreateDocumentClientタスクの実装です。
コードが実行されると、次の出力が生成されます。
別の例を見てみましょう。 パラメーターとして姓と住所の状態を取得し、ユーザー入力に基づいてlastnameとlocation.stateのさまざまな値に対して実行するクエリを作成できます。
このリクエストは、次のコードに示すように、パラメーター化されたJSONクエリとしてDocumentDBに送信できます。