搞定“另一个 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对象。
应该说,第二种解决办法更好一点。
转载于:https://www.cnblogs.com/ishare/archive/2009/04/28/1445341.html
搞定“另一个 OleDbParameterCollection 中已包含 OleDbParameter。”的两种办法。相关推荐
- 另一个 OleDbParameterCollection 中已包含 OleDbParameter 错误分析及解决办法
程序非常简单,就是从一个表中取出一个符合要求的数据,如果取到,就把该数据对应的计数加1. 也就是执行不同的两个SQL语句操作同一个表,并且这两个SQL的参数是一样的.在一个函数里完成这个调用. 执行第 ...
- 另一个 OleDbParameterCollection 中已包含 OleDbParameter
今天调试程序,遇到一个奇怪的异常. 程序非常简单,就是从一个表中取出一个符合要求的数据,如果取到,就把该数据对应的计数加1. 也就是执行不同的两个SQL语句操作同一个表,并且这两个SQL的参数是一样的 ...
- [转]另一个SqlParameterCollection 中已包含 SqlParameter[解决方案]
本着代码重用,减少变量的创建,希望参数能够重复使用 DataBase db = new DataBase(); SqlParameter[] prams ={ db.MakeInPar ...
- EF另一个 SqlParameterCollection 中已包含 SqlParameter。
代码: SqlParameter[] commandParameters = new SqlParameter[]{new SqlParameter("@CultID",filte ...
- 另一个SqlParameterCollection 中已包含 SqlParameter[解决方案]
另一个SqlParameterCollection 中已包含 SqlParameter[解决方案] 参考文章: (1)另一个SqlParameterCollection 中已包含 SqlParamet ...
- mysql idataparameter_[转]另一个SqlParameterCollection 中已包含 SqlParameter[解决方案]
本着代码重用,减少变量的创建,希望参数能够重复使用 DataBase db = new DataBase(); SqlParameter[] prams ={ db.MakeInParam(" ...
- C#数据库插入多条数据,抛出异常:另一个 SqlParameterCollection 中已包含 SqlParameter
解决办法很简单:添加语句:cmd.Parameters.Clear(); 原理:在SqlCommand使用完后清理SqlParameter. 代码示例: //定义连接数据库的配置字符串,需要填入你的连 ...
- 另一个 OracleParameterCollection 中已包含 OracleParameter
出现这个错误的时候,我按照百度来的方法 在finally里面加cmd.Parameters.Clear(); 在 foreach (OracleParameter parm in cmdParms){ ...
- 计算一个连通分量中节点的个数的两种方法
POJ 1611 The Suspects(并查集) 2014年03月11日 11:17:28 阅读数:1027 POJ 1611 The Suspects(并查集) http://poj.org/p ...
最新文章
- 洛谷P4053 [JSOI2007]建筑抢修
- 分享6 个值得收藏的 Python 代码
- excel中使用CORREL函数计算两个时间序列数据列之间的滚动相关性(Rolling correlations)、例如,计算两种商品销售额之间的3个月的滚动相关性
- HDLBits 系列(4)如何设计一定不会产生Latch的组合逻辑?
- 初次使用Android Studio问题,Android Studio往项目中添加图片
- java示例_Java入门示例
- 《秋暮登北楼》王武陵
- 计算广告 pdf_小学生PDF格式的试卷怎么编辑修改
- 【NLP】基于GloVe词向量的迁移学习
- C++ TR1、TR2与boost的关系
- SwiftUI之如何创建常量绑定与自定义绑定
- php object添加到数组,PHP Object转换为数组array
- 高校实验室管理系统_史上最全面的实验室信息管理系统(LIMS)全解
- 电脑开机3秒就重启循环_电脑修好后客户不愿支付上门费,行,那电脑开机60秒自动关机吧!...
- java jar命令_Java命令行之jar命令
- SolarWinds 事件新动态:研究员发现新的C2基础设施
- 质疑“扩版=质量下降”——以《中国农学通报》和《安徽农业科学》为例
- 语言怎么得到直流电压并采样_250V10A高频直流电源/大电流直流稳压稳流电源
- linux查找进程并删除文件,Linux find 查找 并删除文件 杀掉进程
- 修改群晖mac 及 sn