Delen via


Geparameteriseerde query's in Azure Cosmos DB for NoSQL

VAN TOEPASSING OP: NoSQL

Azure Cosmos DB for NoSQL ondersteunt query's met parameters die worden uitgedrukt in de vertrouwde @-notatie. Geparameteriseerde SQL biedt robuuste verwerking en ontsnapping van gebruikersinvoer en voorkomt onbedoelde blootstelling van gegevens via SQL-injectie.

Voorbeelden

U kunt bijvoorbeeld een query schrijven die als parameter wordt gebruikt upperPriceLimit en deze uitvoeren voor verschillende waarden op basis van price gebruikersinvoer.

SELECT
    *
FROM
    p
WHERE
    (NOT p.onSale) AND
    (p.price BETWEEN 0 AND @upperPriceLimit)

U kunt deze aanvraag vervolgens verzenden naar Azure Cosmos DB for NoSQL als een geparameteriseerd JSON-queryobject.

{
  "query": "SELECT * FROM p WHERE (NOT p.onSale) AND (p.price BETWEEN 0 AND @upperPriceLimit)",
  "parameters": [
    {
      "name": "@upperPriceLimit",
      "value": 100
    }
  ]
}

In dit volgende voorbeeld wordt het TOP argument ingesteld met een geparameteriseerde query:

{
  "query": "SELECT TOP @pageSize * FROM products",
  "parameters": [
    {
      "name": "@pageSize",
      "value": 10
    }
  ]
}

Parameterwaarden kunnen elke geldige JSON zijn: tekenreeksen, getallen, booleaanse waarden, null, zelfs matrices of geneste JSON. Omdat Azure Cosmos DB for NoSQL schemaloos is, worden parameters niet gevalideerd voor elk type.

Hier volgen voorbeelden voor geparameteriseerde query's in elke Azure Cosmos DB for NoSQL SDK: