gpt4 book ai didi

c# - SqlBulkCopy 不复制任何数据

转载 作者:行者123 更新时间:2023-11-30 20:01:56 27 4
gpt4 key购买 nike

这是 TABLE1 的架构:

CREATE TABLE [dbo].[TABLE1] 
(
[id] [int] IDENTITY(1, 1) NOT NULL,
[code] [int] NOT NULL,
[description] [varchar](256) NOT NULL,
[value] [numeric](18,2) NOT NULL
)

这是我的 SqlBulkCopy 代码:

DataTable data = new DataTable();
data.Columns.Add("code", typeof(int));
data.Columns.Add("description", typeof(string));
data.Columns.Add("value", typeof(decimal));
foreach (Item item in items)
{
data.Rows.Add(item.Code, item.Description, item.Value);
}

SqlConnection sqlConn = new SqlConnection(_connstr);
sqlConn.Open();
SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn, SqlBulkCopyOptions.TableLock, sqlConn.BeginTransaction());
bulkCopy.DestinationTableName = "TABLE1";
bulkCopy.ColumnMappings.Clear();
foreach (DataColumn col in dt.Columns)
{
bulkCopy.ColumnMappings.Add(new SqlBulkCopyColumnMapping(col.ColumnName, col.ColumnName));
}

bulkCopy.WriteToServer(dt);
sqlConn.Close();

通过它进行调试时,一切看起来都很好,但是在调用 WriteToServer 函数之后,没有数据被添加到数据库中。我试过不重置列映射,但由于 IDENTITY 列而导致错误。不确定还有什么问题。

最佳答案

看起来您从未提交交易。您需要存储对您启动的事务的引用,并提交它:

var transaction = sqlConn.BeginTransaction();
SqlBulkCopy bulkCopy = new SqlBulkCopy(
sqlConn,
SqlBulkCopyOptions.TableLock,
transaction
);

然后

transaction.Commit();

在调用执行批量复制之后和关闭连接之前。

关于c# - SqlBulkCopy 不复制任何数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17710475/

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