Azure Cosmos DB for NoSQL 中的参数化查询
适用范围: NoSQL
Azure Cosmos DB for NoSQL 支持使用带有常用 @ 表示法的参数进行查询。 参数化 SQL 为用户输入提供可靠的处理和转义,可防止通过 SQL 注入发生意外的数据泄露。
示例
例如,可以编写一个将 upperPriceLimit
用作参数的查询,并根据用户输入针对 price
的各种值执行此查询。
SELECT
*
FROM
p
WHERE
(NOT p.onSale) AND
(p.price BETWEEN 0 AND @upperPriceLimit)
然后,可将此请求对象作为参数化 JSON 查询发送到 Azure Cosmos DB for NoSQL。
{
"query": "SELECT * FROM p WHERE (NOT p.onSale) AND (p.price BETWEEN 0 AND @upperPriceLimit)",
"parameters": [
{
"name": "@upperPriceLimit",
"value": 100
}
]
}
下一示例使用参数化查询设置 TOP
参数:
{
"query": "SELECT TOP @pageSize * FROM products",
"parameters": [
{
"name": "@pageSize",
"value": 10
}
]
}
参数值可以为任何有效的 JSON:字符串、数字、布尔、null,甚至是数组或嵌套的 JSON。 由于 Azure Cosmos DB for NoSQL 是无架构的,因此不会针对任何类型验证参数。
下面是每个 Azure Cosmos DB for NoSQL SDK 中参数化查询的示例: