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同一时间只能有一个的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
浙江启扬智能科技有限公司
2023-06-12 广告
2023-06-12 广告
Linux 嵌入式系统中,USB 启动模式能够烧写 ARM 的 uboot 的原因主要有以下几个方面:1. USB 启动模式相对于传统的 BIOS 启动模式来说,具有更高的兼容性和灵活性,可以支持更多的硬件设备和操作系统。2. USB 启动...
点击进入详情页
本回答由浙江启扬智能科技有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询