“已经打开了DataReader";ASP.NET中嵌套SqlDataReader的异常 [英] "already an open DataReader" exception with nested SqlDataReader in ASP.NET
问题描述
我想在下面的代码中使用嵌套的SqlDataReader,但是我做不到.我得到"System.InvalidOperationException:已经有与此命令关联的打开的DataReader,必须首先关闭它".任何建议
I wanted to use nested SqlDataReader in the code below but I couldn't make it.I get "System.InvalidOperationException: There is already an open DataReader associated with this Command which must be closed first" with the code. Any Suggestions
c = "select user_Reps.rep_key,Officers.Officer_Name from user_Reps left join Officers on user_Reps.rep_key = Officers.Officer_code where [user_key]="+userCode;
if (c == null)
c = sr.ReadToEnd();
try
{
SqlCommand cmd = new SqlCommand(c, cn);
cn.Open();
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
SqlDataReader rdr2;
while (rdr.Read())
{
string c2 = "select Active_Clients.Clients_code,Active_Clients.Clients_Name,Active_Clients.Geo_code from Active_Clients where Active_Clients.[Officer_code] =" + rdr.GetValue(0) + " order by Clients_Name";
SqlCommand cmd2 = new SqlCommand(c2, cn);
rdr2 = cmd2.ExecuteReader(CommandBehavior.CloseConnection);
Dictionary<string, object> d = new Dictionary<string, object>(rdr.FieldCount+rdr2.FieldCount);
while (rdr2.Read())
{
int i = 0;
for (; i < rdr.FieldCount; i++)
{
d[rdr.GetName(i)] = rdr.GetValue(i);
}
for (; i < rdr2.FieldCount; i++)
{
d[rdr2.GetName(i)] = rdr2.GetValue(i);
}
list.Add(d);
}
rdr2.Close();
//list.Add(d);
}
JavaScriptSerializer j = new JavaScriptSerializer();
Response.Write(j.Serialize(list.ToArray()));
}
推荐答案
错误消息有点误导.除非连接字符串中有 MultipleActiveResultSets = True
,否则每个连接只能有一个活动结果集.情况仍然如此,如果每个读者都拥有单独的SqlCommand对象.
The error message is a bit misleading. Unless you have MultipleActiveResultSets=True
in your connection string, you can have only one active result set per connection. This is still the case, if every reader hat it's own separate SqlCommand object.
这篇关于“已经打开了DataReader";ASP.NET中嵌套SqlDataReader的异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!