gpt4 book ai didi

c# - 自 SQL 2008 升级以来,SqlDataReader.HasRows 返回 false

转载 作者:行者123 更新时间:2023-11-30 12:37:41 24 4
gpt4 key购买 nike

我有一个连接到 SQL 数据库的 ASP.NET 2.0 网站。我已经将 SQL Server 从 2000 升级到 2008,从那以后,有一个页面无法正常工作。

我已经解决了问题,即使数据集不为空,对 SqlDataReader.HasRows 的调用也返回 false,删除检查允许通过 reader.Read() 循环访问预期数据。

    _connectionString = WebConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString;
SqlConnection connection = new SqlConnection(_connectionString);
SqlCommand command = new SqlCommand(searchtype, connection);
SqlParameter _parSeachTerm = new SqlParameter("@searchterm", SqlDbType.VarChar, 255);
_parSeachTerm.Value = searchterm;
command.Parameters.Add(_parSeachTerm);
command.CommandType = CommandType.StoredProcedure;
try
{
connection.Open();
SqlDataReader reader = command.ExecuteReader();
if (reader.HasRows) //this always returns false!?
{
while (reader.Read())
{...

有人知道发生了什么事吗? HasRows 返回正确值的其他页面上也有类似的代码块。

编辑- 澄清一下,存储过程确实返回我已确认的结果,因为如果我删除 HasRows 检查,循环运行良好。仅将连接字符串中 SQL 服务器的名称更改为在 SQL 2000 上运行的相同数据库,问题就会消失。我已经检查过 NOCOUNT 已关闭,那么当情况并非如此时,还有什么可以使 HasRows 返回 false??

EDIT2- 这是 SP

CREATE PROCEDURE StaffEnquirySurnameSearch

@searchterm varchar(255)

AS

SELECT AD.Name, AD.Company, AD.telephoneNumber, AD.manager, CVS.Position, CVS.CompanyArea, CVS.Location, CVS.Title, AD.guid AS guid,
AD.firstname, AD.surname
FROM ADCVS AD
LEFT OUTER JOIN CVS ON
AD.Guid=CVS.Guid
WHERE AD.SurName LIKE @searchterm
ORDER BY AD.Surname, AD.Firstname
GO

非常感谢。

最佳答案

如果您直接调用存储过程,比如在 SSMS 中,存储过程是否有效?我首先要确保它确实如此。

关于c# - 自 SQL 2008 升级以来,SqlDataReader.HasRows 返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/197220/

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