【发布时间】:2016-01-26 03:21:43
【问题描述】:
我想在 sql server 表中插入一个对象列表。但是,目前,每次插入记录行时,我都必须打开和关闭 sql 连接。
我只是想知道是否有一种方法可以一次将所有对象插入记录列表中?这是代码sn-p。
public void InsertDataToDb()
{
string connectionString = ConfigurationManager.ConnectionStrings["connection"].ConnectionString;
var records = GetRecords();
using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand cmd =
new SqlCommand(
"INSERT INTO TableName (param1, param2, param3) VALUES (@param1, @param2, @param3)");
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
foreach (var item in records)
{
cmd.Parameters.AddWithValue("@param1", item.param1);
cmd.Parameters.AddWithValue("@param2", item.param2);
cmd.Parameters.AddWithValue("@param3", item.param3);
conn.Open();
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
conn.Close();
}
}
}
【问题讨论】:
-
您可以在一个查询中添加多行。只要确保参数是唯一的。
-
另一种方法是使用表值参数创建存储过程
-
@JeroenvanLangen 但是如果我的列表中有 100 条记录,我怎么能一条一条地添加呢?
-
我为你找到了一些信息:stackoverflow.com/questions/2972974/…
-
您可能想看看这篇文章,并考虑在将来不再使用 AddWithValue。 blogs.msmvps.com/jcoehoorn/blog/2014/05/12/…
标签: c# sql sql-server