c# – 自SQL 2008升级以来,SqlDataReader.HasRows返回false
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 自SQL 2008升级以来,SqlDataReader.HasRows返回false,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1554字,纯文字阅读大概需要3分钟。
内容图文
![c# – 自SQL 2008升级以来,SqlDataReader.HasRows返回false](/upload/InfoBanner/zyjiaocheng/903/7a81ecfc609c4e81bc3e9455458c9576.jpg)
我有一个连接到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中是否有效?我首先要确保它确实如此.
内容总结
以上是互联网集市为您收集整理的c# – 自SQL 2008升级以来,SqlDataReader.HasRows返回false全部内容,希望文章能够帮你解决c# – 自SQL 2008升级以来,SqlDataReader.HasRows返回false所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。