我有一个连接到sql数据库的ASP.NET 2.0网站.我已经将sql服务器从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中是否有效?我首先要确保它确实如此.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。