c# – 自SQL 2008升级以来,SqlDataReader.HasRows返回false
发布时间:2020-12-15 22:56:04 所属栏目:百科 来源:网络整理
导读:我有一个连接到SQL数据库的ASP.NET 2.0网站.我已经将SQL服务器从2000升级到2008,从那时起,一页拒绝工作. 我解决了问题是,即使数据集不为空,对SqlDataReader.HasRows的调用也返回false并且删除检查允许循环通过reader.Read()来访问预期的数据. _connectionStr
我有一个连接到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中是否有效?我首先要确保它确实如此.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
推荐文章
站长推荐
- ruby-on-rails – 如何在rails中添加禁用的提交按
- 当我没有正确声明变量时,让VB编译器发出警告
- ruby-on-rails – Rails 4:fields_for in field
- Reactor Cooling ZOJ - 2314 上下界网络流
- ios – 无法找到或生成匹配的歌曲资产Xcode 7.2.
- 使用没有ajax的javascript调用C#代码隐藏方法
- sqlite入门基础(二):sqlite3_get_table,sqlite3
- cocos2dx 在button回调函数里removeFromParent崩
- XML的注释格式一般是这样 <!-- 设置右对齐 -->
- sublime中支持React的Snippets片段插件--ReactJS
热点阅读