首页 > 解决方案 > SqlCommand Text 多个查询

问题描述

我正在使用列表集合,我还需要使用参数将集合的每个项目插入到 sql 中。

这是一个例子

foreach (var item in listCollection)
{
    cmd.CommandText += "Insert into WebAppOrders (id) values (@id)";
    cmd.Parameters.Add("@id", SqlDbType.Int).Value = item.id;
}
cmd.ExecuteNonQuery();

我收到一个错误

变量名称“@id”已被声明。变量名称在查询批处理或存储过程中必须是唯一的。

有什么方法可以让我完成这项工作吗?

标签: c#sql-server

解决方案


您可以使用一个简单的 count 变量,然后将其附加到 parameter-name @id

一个样本看起来像......

示例Item类:

public class Item
{
    public Item(int id)
    {
        this.Id = id;
    }

    public int Id { get; set; }
}

模拟:

var listCollection = new List<Item>() { new Item(1), new Item(2), new Item(3), new Item(4) };
using (var connection = new SqlConnection("<your connectionstring>"))
using (var cmd = new SqlCommand("", connection))
{
    connection.Open();

    int i = 0; // count
    foreach (var item in listCollection)
    {
        cmd.CommandText += $"Insert into WebAppOrders (id) values (@id{i})"; // add count here
        cmd.Parameters.Add($"@id{i}", SqlDbType.Int).Value = item.Id; // ... and here
        i++;
    }

    cmd.ExecuteNonQuery();
}

推荐阅读