首页 > 解决方案 > 将在 foreach 循环中生成的 Azure Cosmos Db SQL-API 语句转换为参数化语句

问题描述

我正在尝试将以下工作 COSMOS DB SQL 语句转换为 COSMOS DB 的 SQL 中的参数化语句。

我正在努力的部分是在 for each 循环中为参数化查询创建参数。

例如,我有一个Dictionary<string,string>包含我需要搜索的值的键值对的对象。

我通过在 foreach 循环中将对象的键值对添加Dictionary<string,string>到 SQL 语句来构建查询,但为了安全起见,我想将其转换为参数化语句。

所以我需要将下面的查询转换为我正在搜索的索引键和值的参数化查询,但我不知道如何去做。

var searchDictionary = new Dictionary<string, string>();
searchDictionary.Add("Name", "Bob");
searchDictionary.Add("Surname", "Builder");

var Institiute = "test";

StringBuilder sb = new StringBuilder();

sb.Append($"SELECT top 100 * FROM c WHERE c.college =@'{Institiute}'");
foreach (var item in request.IndexData)
{
    sb.Append($" and c.indexData['{item.Key}'] = '{item.Value}'");
}

var sqlQueryText = sb.ToString();

标签: c#azure-cosmosdb-sqlapi

解决方案


推荐阅读