我有一个SqlCommand
可能会返回零个或多个行集。如果偶然地SqlCommand
将返回正确的零行集*并且我调用其ExecuteReader
方法会发生什么?我是否收到无法阅读的SqlDataReader
,或者我是否收到例外情况?
以防万一:零行集与一个包含完全零行的行集不同。
答案 0 :(得分:3)
没有行集,您的reader.FieldCount
将为零。如果使用数据集而不是阅读器,则将获得没有行集的空数据集。
答案 1 :(得分:1)
SqlDataReader.Read()
以及HasRows
将返回false
:
var reader = command.ExecuteReader();
if (reader.HasRows) // false
{
while (reader.Read()) // false
{
// will never reach
}
}
答案 2 :(得分:1)
您仍应该收到SqlDataReader对象。当你尝试:
using (SqlCommand command = new SqlCommand( /* params */))
using (SqlDataReader reader = command.ExecuteReader())
{
if (reader.HasRows) // check to see if we have any rows
{
while (reader.Read())
{
// process
}
}
}
...当Read()
将返回false
时,您只会“摔倒”。