c# - 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”已被声明。变量名称在查询批处理或存储过程中必须是唯一的。
有什么方法可以让我完成这项工作吗?
解决方案
您可以使用一个简单的 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();
}
推荐阅读
- css - 如何将border-radius CSS属性添加到下拉蚂蚁设计元素?
- android - 某些设备上的视频冻结问题 ExoPlayer
- r - 在 R studio 中安装简单包时出现警告
- java - 如何比较两个服务的数据,哪个应该做同样的事情?
- gtk - GtkD 功能无法正确显示菜单
- r - 从 R 中的复杂调查设计中抽取样本
- reactjs - 使用 axios 自定义 http 钩子
- javascript - Javascript检测一个词是否是一个词
- amazon-web-services - AWS CloudFormation:Application Load Balancer 的目标组不适用于多个 EC2 实例
- reactjs - 如何在 Ag-Grid React 的列标题中添加全选复选框?