我有一个SQL,它是一个DB表,并检索information....very basic。
我可以看到,在调试时,读取器有来自DB表的结果,但出于某种原因,它总是跳过"While Reader.Read“,然后跳过并关闭连接--从不读取数据。
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("lbx_EmailDomains_SELECT", con);
cmd.CommandType = CommandType.StoredProcedure;
con.Open();
SqlDataReader reader = cmd.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
// Never Reaches Here
}
}
reader.Close();
con.Close();更新:删除reader.HasRows修复了问题.
发布于 2012-09-12 22:35:47
我的猜测是,实际上它还没有到reader.Read()那么远。我怀疑reader.HasRows返回false,正是因为您还没有调用reader.Read()。
老实说,我不认为HasRows的测试是有用的--我只想摆脱它。
请注意,最好使用using语句并消除手动Close()调用,这样即使发生异常,连接/读取器也将关闭。
编辑:根据评论:
HasRows显然是在reader.Read()返回false之前返回trueHasRows测试显然解决了问题。很奇怪。我想知道这里有没有我们不知道的调试器交互.
https://stackoverflow.com/questions/12397036
复制相似问题