程序非常简单,就是从一个表中取出一个符合要求的数据,如果取到,就把该数据对应的计数加1。
也就是执行不同的两个SQL语句操作同一个表,并且这两个SQL的参数是一样的。在一个函数里完成这个调用。
执行第二个SQL调用时,老是提示“另一个 OleDbParameterCollection 中已包含 OleDbParameter。”
非常奇怪,两个SQL语句正确,参数设定正确,分开执行正确,一起执行就出错,百思不得其解。

在网上搜索,得到第一个解决办法:

foreach (OleDbParameter Param in ParamList) 

    //cmd.Parameters.Add(Param); 
    cmd.Parameters.AddWithValue(Param.ParameterName, Param.Value); 
}

把上面注释语句更改一下,没有异常了。虽然问题没有了,可是觉得很奇怪。继续搜索,

看到一个牛人的分析:OleDbParameter还有parent的。

第二个解决办法:

对上一个使用了 OleDbParameter 的 OleDbCommand,在使用完成之后,要

cmd.Parameters.Clear();

具体的分析过程就不说了。

学到最重要的一招,就是用Reflector去分析.net的源码。

再对比上面两种解决办法,

Parameters.Add 应该是传递的引用,OleDbCommand在执行过程中,更改了OleDbParameter的成员值,所以,在下一个调用OleDbParameter的OleDbCommand中,执行出错。

Parameters.AddWithValue 应该是内部重新生成一个OleDbParameter对象。

应该说,第二种解决办法更好一点。

本文转自 梦在旅途 博客园博客,原文链接: http://www.cnblogs.com/zuowj/p/3476119.html ,如需转载请自行联系原作者

另一个 OleDbParameterCollection 中已包含 OleDbParameter 错误分析及解决办法相关推荐

  1. 搞定“另一个 OleDbParameterCollection 中已包含 OleDbParameter。”的两种办法。

    今天调试程序,遇到一个奇怪的异常. 程序非常简单,就是从一个表中取出一个符合要求的数据,如果取到,就把该数据对应的计数加1. 也就是执行不同的两个SQL语句操作同一个表,并且这两个SQL的参数是一样的 ...

  2. 另一个 OleDbParameterCollection 中已包含 OleDbParameter

    今天调试程序,遇到一个奇怪的异常. 程序非常简单,就是从一个表中取出一个符合要求的数据,如果取到,就把该数据对应的计数加1. 也就是执行不同的两个SQL语句操作同一个表,并且这两个SQL的参数是一样的 ...

  3. [转]另一个SqlParameterCollection 中已包含 SqlParameter[解决方案]

    本着代码重用,减少变量的创建,希望参数能够重复使用 DataBase db = new DataBase();         SqlParameter[] prams ={ db.MakeInPar ...

  4. EF另一个 SqlParameterCollection 中已包含 SqlParameter。

    代码: SqlParameter[] commandParameters = new SqlParameter[]{new SqlParameter("@CultID",filte ...

  5. 另一个SqlParameterCollection 中已包含 SqlParameter[解决方案]

    另一个SqlParameterCollection 中已包含 SqlParameter[解决方案] 参考文章: (1)另一个SqlParameterCollection 中已包含 SqlParamet ...

  6. mysql idataparameter_[转]另一个SqlParameterCollection 中已包含 SqlParameter[解决方案]

    本着代码重用,减少变量的创建,希望参数能够重复使用 DataBase db = new DataBase(); SqlParameter[] prams ={ db.MakeInParam(" ...

  7. C#数据库插入多条数据,抛出异常:另一个 SqlParameterCollection 中已包含 SqlParameter

    解决办法很简单:添加语句:cmd.Parameters.Clear(); 原理:在SqlCommand使用完后清理SqlParameter. 代码示例: //定义连接数据库的配置字符串,需要填入你的连 ...

  8. 另一个 OracleParameterCollection 中已包含 OracleParameter

    出现这个错误的时候,我按照百度来的方法 在finally里面加cmd.Parameters.Clear(); 在 foreach (OracleParameter parm in cmdParms){ ...

  9. 关于python django开发过程中的常见的问题及解决办法总结

    以下网址基本已包含大部分常见问题及解决办法,后续会更新 http://www.cnblogs.com/lilinpging/p/7804137.html http://www.cnblogs.com/ ...

最新文章

  1. 当容器应用越发广泛,我们又该如何监测容器?
  2. 我的世界修改服务器头像,我的世界单机模式更换头像的方法 各种怪物的头等来换...
  3. 复合型法matlab,复合形法程序出错求大神改错急急急
  4. Dw序号列表如何通过html语言加,使用DW软件实现html编码转换的详细步骤
  5. 设为首页收藏本站js代码(引自ecshop模板堂(ecmoban.com)
  6. 2017.4.18-morning
  7. 伦茨8400变频器面板按键说明_国产变频器按键的各个功能
  8. 第一课 矩阵的行图像与列图像(麻省理工公开课:线性代数)【转载】
  9. 页面加载过程中触发的事件
  10. win7自带桌面便签
  11. 房友手机服务器安装文件,房友软件服务器地址
  12. 采用大规模或超大规模集成电路的计算机,采用大规模或超大规模集成电路的计算机属于_____计算机。...
  13. 机器学习篇-船长总结(hsrjdz01)
  14. 石家庄科技工程职业学院计算机系,石家庄科技工程职业学院学生社团
  15. 21个MySQL表设计的经验准则
  16. 自定义组件中添加其他组件-1 83课 左边部分,右边部分的测试
  17. android视频开发面试!金三银四我带你去BAT面试现场,附带学习经验
  18. 克里金(Kriging)插值的原理与公式推导_转
  19. mysql排除id_从MySQL查询中排除多个ID
  20. Java基础入门第三版黑马课后习题(编程部分)

热门文章

  1. Windows7中出现的KERNELBASE.dll错误的解决方法
  2. 骚操作!用 CPU 烤肉,这位程序员做到了!
  3. TLR8小分子抑制剂或将治愈自身免疫病 | MedChemExpress
  4. echarts字体适配,页面文字适配
  5. 记录自己看selenium源码的一些收获(五)RemoteWebDriver类
  6. linux下ipvsadm命令,ipvsadm命令
  7. 家园共育——托班宝宝入园早知道
  8. 【WIN32编程】利用汇编写cs1.6辅助
  9. 基于opencv与MFC实现的双人五子棋
  10. 19 款仿 Bootstrap 后台管理主题免费下载