C# 多线程 操作数据 报ExecuteReader 必须有开启与可用的连接。连接目前的状态已关闭
我这边写了好几个多线程多线程的方法操作数据库都是可是有一个操作数据的方法老是报错方法List<Email>listemail=newList<Email>();lock(...
我这边写了好几个多线程
多线程的方法 操作数据库 都是可是有一个操作数据的方法老是报错
方法 List<Email> listemail = new List<Email>();
lock (obj)
{
using (SqlDataReader sdr = DbHlper.ExecuteReader(sql,CommandType.Text))
{
while (sdr.Read())
{
Email email = new Email(
sdr["id"].ToString(),
sdr["Email_BT"].ToString()
);
listemail.Add(email);
}
}
数据库
SqlCommand com = new SqlCommand(sql,Con);
lock (obj)
{
com.CommandType = type;
com.Parameters.AddRange(spr);
return com.ExecuteReader();
}
只有这个一个方法报错
不知道是哪的问题 展开
多线程的方法 操作数据库 都是可是有一个操作数据的方法老是报错
方法 List<Email> listemail = new List<Email>();
lock (obj)
{
using (SqlDataReader sdr = DbHlper.ExecuteReader(sql,CommandType.Text))
{
while (sdr.Read())
{
Email email = new Email(
sdr["id"].ToString(),
sdr["Email_BT"].ToString()
);
listemail.Add(email);
}
}
数据库
SqlCommand com = new SqlCommand(sql,Con);
lock (obj)
{
com.CommandType = type;
com.Parameters.AddRange(spr);
return com.ExecuteReader();
}
只有这个一个方法报错
不知道是哪的问题 展开
1个回答
推荐于2016-10-16
展开全部
这句之前调用 DbHlper.open();
using (SqlDataReader sdr = DbHlper.ExecuteReader(sql,CommandType.Text))
using (SqlDataReader sdr = DbHlper.ExecuteReader(sql,CommandType.Text))
更多追问追答
追问
SqlCommand com = new SqlCommand(sql,Con);
这里其实已经open 了
追答
那你得加锁才行,.ExecuteReader同一时间只能有一个的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询