Parametrisierte Abfragen in Azure Cosmos DB for NoSQL

GILT FÜR: NoSQL

Azure Cosmos DB for NoSQL unterstützt Abfragen mit Parametern, die durch die bekannte @-Notation ausgedrückt werden. Parametrisiertes SQL bietet stabile Fehlerbehandlung und Schutz von Benutzereingaben und verhindert eine versehentliche Offenlegung von Daten durch SQL-Injektion.

Beispiele

Sie können z.B. eine Abfrage erstellen, die lastName und address.state als Parameter verwendet, und sie für unterschiedliche lastName- und address.state-Werte auf Grundlage von Benutzereingaben ausführen.

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

Sie können diese Anforderung dann als parametrisiertes JSON-Abfrageobjekt an Azure Cosmos DB for NoSQL senden.

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

Im folgenden Beispiel wird das Argument TOP mit einer parametrisierten Abfrage festgelegt:

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

Parameterwerte können alle gültigen JSON-Werte sein: Zeichenfolgen, Zahlen, boolesche Werte, Null, gerade Arrays oder verschachteltes JSON. Da Azure Cosmos DB for NoSQL schemalos ist, werden Parameter für keinen Typ überprüft.

Hier sind Beispiele für parametrisierte Abfragen im jeweiligen SDK für Azure Cosmos DB for NoSQL: