gpt4 book ai didi

.net - SqlCommand.ExecuteReader() 什么时候返回 null?

转载 作者:行者123 更新时间:2023-12-04 00:49:12 25 4
gpt4 key购买 nike

使用时调用SqlCommand.ExecuteReader()方法,ReSharper 告诉我,当我之后使用 SqlDataReader 对象时,我有一个可能的 NullReference 异常。

因此,使用以下代码:

using (SqlConnection connection = GetConnection())
{
using (SqlCommand cmd = connection.CreateCommand())
{
cmd.CommandText = ; //snip

using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
//snip
}
}
}
}
while (reader.Read())下划线。

我的问题是阅读器对象何时会为空?我从来没有遇到过它,文档也没有提到它可能是。我应该检查它是否为空还是可以安全忽略?

为什么 ReSharper 会认为它可能为空,例如它允许我使用 SqlCommand 而不建议检查它是否为空?我猜 ExecuteReader 方法上有一个属性。

最佳答案

我已经确定了 ExecuteReader() 可以返回 null 的一个原因。

在我得到空值的情况下,我已经向我的客户发送了一个脚本来更新存储过程。我的客户的 Sql Server (2000) 设置为 DB 用户需要执行存储过程的权限。当他们更新 SP 时,权限被删除并且没有重新分配。在这种情况下,SqlCommand.ExecuteReader() 返回 null。

重新分配权限解决了这个问题。

关于.net - SqlCommand.ExecuteReader() 什么时候返回 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1072093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com