【发布时间】:2024-01-03 04:39:01
【问题描述】:
考虑以下代码:
StringBuilder textResults = new StringBuilder();
using(SqlConnection connection = new SqlConnection(GetEntityConnectionString()))
{
connection.Open();
m.Connection = connection;
SqlDataReader results = m.ExecuteReader();
while (results.Read())
{
textResults.Append(String.Format("{0}", results[0]));
}
}
我在数据库的 Sql Server Mgmt Studio 中使用了活动监视器来检查正在发送的确切查询。然后,我将该查询文本复制到 SSMS 中的查询编辑器窗口,查询返回了预期的结果。但是SqlDataReader results始终为空,表示“枚举没有返回结果”。
我的怀疑是结果没有正确返回,这让我认为上面的代码有问题,而不是查询本身被传递。
在上面的代码中有什么会导致这种情况的吗?还是我忽略了什么?
编辑:
这是 SQLCommand 对象所指示的查询:
SELECT DISTINCT StandardId,Number
FROM vStandardsAndRequirements
WHERE StandardId IN ('@param1','@param2','@param3')
ORDER BY StandardId
这是活动监视器中显示的查询:
SELECT DISTINCT StandardId,Number
FROM vStandardsAndRequirements
WHERE StandardId IN ('ABC-001-0','ABC-001-0.1','ABC-001-0')
ORDER BY StandardId
查询针对的是单个视图。
当我对数据库运行第二个查询时,它返回了 3 行。
SqlDataReader 指示 0 行。
【问题讨论】:
-
也许您应该向我们展示查询和表的外观,很难判断没有查询/DDL 的情况。上面的代码没问题。