当前位置: 首页 > news >正文

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

程序非常简单,就是从一个表中取出一个符合要求的数据,如果取到,就把该数据对应的计数加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 ,如需转载请自行联系原作者

http://www.xdnf.cn/news/851509.html

相关文章:

  • 基于python语言的网页设计(手把手教你设计一个个人博客网站)
  • ASK,OOK,FSK,GFSK简介
  • 几个重要的电子元器件网站
  • 手写识别介绍
  • android:TableLayout表格布局详解
  • matlab usb接口编程,如何使用MATLAB进行USB2.0摄像头的编程
  • STC89C52引脚
  • 查看计算机启动项命令,启动项指令命令有哪些?教你设置电脑Windows开机启动项命令...
  • 玩机搞机---全网最详细的手机全机型 刷机教程一
  • PUBG绝地求生更新很慢、无法更新、更新不动的几个解决措施来了
  • 《Android框架揭秘》——导读
  • Windows2000、XP、2003系统万能Ghost全攻略
  • 用计算机测试生日,超准生日爱情配对测试
  • Android 1分钟教你打造酷炫的引导页(实现ViewPager淡入淡出切换)
  • Vissim4.3之API/SDK编程;Vissim编程;
  • 软件测试(接口测试、性能测试、自动化测试)详解
  • ultraedit
  • 插件界的全家桶,对接华为云能力就用它了
  • yolov5核心代码: anchor匹配策略,compute_loss和build_targets理解
  • 第二阶段学习测试
  • 如何冥想?2500年的智慧——荒岛十日记
  • pointer(指针)- 重置版
  • c#做外挂 step by step(更新至step3:注入)
  • AUS GLOBAL 正式成为西甲球队皇家贝蒂斯官方全球合作伙伴
  • Bootstrap 导航条
  • 电脑电源故障的识别与处理方法
  • 未来宝宝长相预测准吗?快跟我来探索一下
  • VMware WorkStation 8序列号
  • 中山大学人工智能神经网络学习文本情感分类训练
  • 迈克尔·杰克逊Michael Jackson,仅此记念