我无法从visual studio 2008中的datareader中检索结果.我在同一个数据库中有几个存储过程.我可以从那些不接收输入参数的值中检索值.但是,当我在带有输入参数的存储过程中使用executreReader()方法时,我得到一个空的datareader.在检查结果集合时,出现消息"IEnumerable返回无结果".我感到困惑,因为我可以在sql server中执行存储过程并返回结果集.我以前能够从Visual Studio中的这些存储过程中检索行,但显然它有一天停止工作.
我已经尝试使用dataadapter用我的结果填充数据集,并使用executereader()方法获取sqldatareader但仍然没有得到任何结果.也没有抛出异常.我的参数都被正确命名,但我应该能够在没有参数的情况下调用这些存储过程并返回未过滤的结果集.我目前使用的代码如下:
string connStr = ConfigurationManager.ConnectionStrings["MyConnectionString"]
.ConnectionString;
SqlConnection connCactus = new SqlConnection(connStr);
SqlCommand cmdPopulateFilterDropDowns = new SqlCommand( "dbo.MyStoredProc",
connCactus);
SqlDataReader rdrFilterSearch = null;
cmdPopulateFilterDropDowns.CommandType = CommandType.StoredProcedure;
connCactus.Open();
rdrFilterSearch = cmdPopulateFilterDropDowns
.ExecuteReader(CommandBehavior.CloseConnection);
return (rdrFilterSearch);
Run Code Online (Sandbox Code Playgroud)
请帮忙!
您是否曾将参数添加到SqlCommand的Parameter集合中?你提到那些不起作用的是那些采用输入参数的,但在你的代码中你没有这样的东西:
cmdPopulateFilterDropDowns.Parameters.AddWithValue(...);
Run Code Online (Sandbox Code Playgroud)
您什么时候收到“IEnumerable 返回无结果”错误?您能否举例说明如何访问 DataReader?
如果在返回之前设置断点并运行会发生什么
rdrFilterSearch.GetString(0);
Run Code Online (Sandbox Code Playgroud)
在立即窗口中?