gpt4 book ai didi

c# - 将对象列表插入 SQL Server 表

转载 作者:太空狗 更新时间:2023-10-29 18:13:09 25 4
gpt4 key购买 nike

我想将对象列表插入到 sql server 表中。但是,目前,每次插入记录行时,我都必须打开和关闭 sql 连接。

我只是想知道是否有一种方法可以一次插入记录列表中的所有对象?这是代码片段。

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();
}
}
}

最佳答案

我正在对您的数据类型做出假设(根据实际的 DbType 是什么,根据需要更改它们),但应该这样做:

    public void InsertDataToDb()
{
string connectionString = ConfigurationManager.ConnectionStrings["connection"].
ConnectionString;
var records = GetRecords();

using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();

SqlCommand cmd =
new SqlCommand(
"INSERT INTO TableName (param1, param2, param3) " +
" VALUES (@param1, @param2, @param3)");
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
cmd.Parameters.Add("@param1", DbType.String);
cmd.Parameters.Add("@param2", DbType.String);
cmd.Parameters.Add("@param3", DbType.String);

foreach (var item in records)
{
cmd.Parameters[0].Value = item.param1;
cmd.Parameters[1].Value = item.param2;
cmd.Parameters[2].Value = item.param3;

cmd.ExecuteNonQuery();
}

conn.Close();
}
}

我还建议调用一个事务,以便所有 100 次插入都可以作为一个事务完成。

-- 编辑--

关于交易,这里是关于如何添加它的:

conn.Open();   // already there -- to show you where to start the transaction

SqlTransaction trans = conn.BeginTransaction();
string sql = "INSERT INTO TableName (param1, param2, param3) " +
"VALUES (@param1, @param2, @param3)";

SqlCommand cmd = new SqlCommand(sql, conn, trans);

然后,在您关闭连接之前(或在事务中的最后一条语句之后,它可以包括选择、更新等):

trans.Commit();

关于c# - 将对象列表插入 SQL Server 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33355705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com