可以';t求解“t”;Sqlparameter已包含在另一个SqlparameterCollection中;
本文关键字:包含 另一个 SqlparameterCollection 求解 可以 Sqlparameter | 更新日期: 2023-09-27 17:58:48
我在windows服务中使用两个线程(来自同一类)。我总是收到相同的错误消息:
"The SqlParameter is already contained by another SqlParameterCollection.
at System.Data.SqlClient.SqlParameterCollection.Validate(Int32 index, Object value)
at System.Data.SqlClient.SqlParameterCollection.Add(Object value)
at System.Data.SqlClient.SqlParameterCollection.Add(SqlParameter value)
at DataBaseLayer.SqlDataBaseLayer.FillDataSetFromProcedure(String strStoredProc, ArrayList parameterCollection)
at TestThread.StartThreads()"
我试图通过创建SqlParameters和Arraylist的新实例来解决这个问题。我还试图清除代码中for循环的和处的数组列表。这并不能解决问题。我愿意接受任何建议。
您尝试将SqlParameter
添加到SqlParameterCollection
两次。这可能会发生,也可能不会发生在线程之间。
如果这是一个多线程问题,那么您的所有变量都应该在本地确定范围,因为如果不是,您应该在其访问上实现同步,可能是使用lock
。
如果这不是并发问题,那么应该通过在SqlParameter
变量上执行查找所有引用来轻松识别问题。
无论哪种方式,如果您发布一些代码,我们都可以为您提供更多帮助。
不要在两个线程之间共享相同的sql对象。通过SQL 使用池集合