相关疑难解决方法(0)

SqlParameter已经包含在另一个SqlParameterCollection中 - 使用(){}作弊吗?

在使用using() {}如下所示的(sic)块时,并假设cmd1它不在第一个using() {}块的范围之外,为什么第二个块会抛出一个带有消息的异常

SqlParameter已包含在另一个SqlParameterCollection中

这是否意味着资源和/或句柄 - 包括SqlParameterCollection附加的参数() - cmd1在块的末尾被销毁时不会被释放?

using (var conn = new SqlConnection("Data Source=.;Initial Catalog=Test;Integrated Security=True"))
{
    var parameters = new SqlParameter[] { new SqlParameter("@ProductId", SqlDbType.Int ) };

    using(var cmd1 = new SqlCommand("SELECT ProductName FROM Products WHERE ProductId = @ProductId"))
    {
        foreach (var parameter in parameters)
        {
            cmd1.Parameters.Add(parameter);                
        }
        // cmd1.Parameters.Clear(); // uncomment to save your skin!
    }

    using (var cmd2 = new SqlCommand("SELECT Review FROM ProductReviews WHERE ProductId …
Run Code Online (Sandbox Code Playgroud)

.net c# sql-server ado.net

76
推荐指数
4
解决办法
9万
查看次数

SqlParameter已经包含在另一个SqlParameterCollection中 - command.Parameters.Clear()不起作用

我在这里绝望了.我无法弄清楚为什么会发生这种异常.我搜索并阅读了这个问题,似乎每个人都设法使用command.Parameters.Clear()来解决它,但这对我不起作用.这是我的代码:

    public class ProductsDataAccess : Connection 
{
    public static SqlParameter[] createParams(Products prod)
    {
        SqlParameter idParam = new SqlParameter("@id", prod.prodID);
        idParam.SqlDbType = System.Data.SqlDbType.VarChar;
        idParam.Size = 45;
        idParam.IsNullable = false;
        idParam.Direction = ParameterDirection.Input;

        SqlParameter nameParam = new SqlParameter("@name", prod.prodName);
        nameParam.SqlDbType = System.Data.SqlDbType.VarChar;
        nameParam.Size = 45;
        nameParam.IsNullable = false;
        nameParam.Direction = ParameterDirection.Input;

        SqlParameter demandParam = new SqlParameter("@demand", prod.demand);
        demandParam.SqlDbType = System.Data.SqlDbType.Int;
        demandParam.IsNullable = false;
        demandParam.Direction = ParameterDirection.Input;

        SqlParameter demandLTParam = new SqlParameter("@demandLT", prod.demandLT);
        demandLTParam.SqlDbType = System.Data.SqlDbType.Int;
        demandLTParam.IsNullable = false;
        demandLTParam.Direction = ParameterDirection.Input;

        SqlParameter …
Run Code Online (Sandbox Code Playgroud)

.net c# sql-server ado.net exception

0
推荐指数
2
解决办法
2万
查看次数

标签 统计

.net ×2

ado.net ×2

c# ×2

sql-server ×2

exception ×1