已有打开的与此命令相关联的 DataReader,必须首先将它关闭。

che2piaopiao 2013-10-08 11:21:55
1 ExecuteReader 要求已打开且可用的连接。连接的当前状态为正在连接。
2 已有打开的与此命令相关联的 DataReader,必须首先将它关闭。

经常报这2个错误。大家帮我看看是不是代码哪里有问题。。



private static SqlConnection connection;
public static SqlConnection Connection
{
get
{
string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
if (connection == null)
{
connection = new SqlConnection(connectionString);
connection.Open();
}
else if (connection.State == System.Data.ConnectionState.Closed)
{
connection.Open();
}
else if (connection.State == System.Data.ConnectionState.Broken)
{
connection.Close();
connection.Open();
}
return connection;
}
}

//其它的就是调用CONNECTION的了。下面的应该没问题
public static int ExecuteCommand(string safeSql)
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
int result = cmd.ExecuteNonQuery();
return result;
}




public static int ExecuteCommand(string sql, params SqlParameter[] values)
{
SqlCommand cmd = new SqlCommand(sql, Connection);
cmd.Parameters.AddRange(values);
return cmd.ExecuteNonQuery();
}

public static int GetScalar(string safeSql)
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
int result = Convert.ToInt32(cmd.ExecuteScalar());
return result;
}



...全文
511 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
宝_爸 2013-10-08
  • 打赏
  • 举报
回复
类似下面这样,不需要自己写个static Connection. ADO.net的Connection有连接池的,connection创建时先从链接池中找connection string一样的Connection对象。 public static int ExecuteCommand(string safeSql) { using (Connection con = new Connection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString)) { SqlCommand cmd = new SqlCommand(safeSql, con); int result = cmd.ExecuteNonQuery(); return result; } }
che2piaopiao 2013-10-08
  • 打赏
  • 举报
回复
引用 2 楼 tcmakebest 的回复:
不要共用 connection,需要用的时候就 new 一个。 不要一早就打开 connection,需要打开的时候才打开,及时并且要确保 finally {关闭}。
能否写个例子我看看
bdmh 2013-10-08
  • 打赏
  • 举报
回复
搞那么多 connection.Open 干嘛,保证只有一个地方open
金色海洋 2013-10-08
  • 打赏
  • 举报
回复
习惯不对,连接那能一直open呀。用的时候在open,用完了立刻close
tcmakebest 2013-10-08
  • 打赏
  • 举报
回复
不要共用 connection,需要用的时候就 new 一个。 不要一早就打开 connection,需要打开的时候才打开,及时并且要确保 finally {关闭}。
QQlvbo 2013-10-08
  • 打赏
  • 举报
回复
建议楼主使用using(SqlConnection conn = new SqlConnection)这样在using结束时就会自动关闭当前的数据库连接了。
内容概要:本文聚焦于氢燃料电池极化曲线参数的辨识与性能评估,采用人工蜂群算法(ABC)结合Matlab编程实现。研究基于Amphlett半经验模型构建质子交换膜燃料电池(PEMFC)的极化特性模型,通过优化算法对模型中的高维非线性参数进行全局辨识,旨在精确还原燃料电池的实际输出电压-电流关系。文中系统分析了人工蜂群算法在参数反演过程中的收敛性、敏感性与可辨识性,验证了其在多参数耦合、强非线性系统建模中的优越性能。同时,通过对辨识后的模型进行多维度性能评估,如残差分析、拟合优度检验与工况适应性测试,全面衡量模型精度与实用性,为燃料电池系统的设计、控制与优化提供可靠的理论依据与数据支撑。; 适合人群:具备一定Matlab编程基础,从事新能源、燃料电池、系统建模或智能优化算法研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握基于智能优化算法的复杂电化学系统参数辨识方法;② 学习利用Amphlett等半经验模型进行PEMFC建模与仿真;③ 理解人工蜂群算法在解决高维非线性优化问题中的应用技巧与性能分析方法;④ 实现燃料电池性能的精确评估与预测。; 阅读建议:本资源以Matlab代码实现为核心,强调算法应用与实践操作。学习者应在掌握基本电化学原理和优化算法概念的基础上,结合提供的代码进行调试与仿真,重点关注目标函数的构建、参数初始化范围的设定以及算法收敛过程的可视化分析,以深入理解参数辨识的内在机理。

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧