gpt4 book ai didi

c# - INSERT 到表变量不允许的标识列

转载 作者:太空狗 更新时间:2023-10-29 22:01:11 26 4
gpt4 key购买 nike

我正在从大型 Excel 工作表导入数据并将其存储在 stateTable 中。现在我必须将这些数据推送到数据库表中。该表确实有一个标识列 (1,1)。

我在数据库中创建了一个类似的表类型和一个将参数作为表类型插入到特定表中的过程。我还设置了标识插入。

我的代码是:

using (SqlCommand command = new SqlCommand("InsertStateTable") {
CommandType = CommandType.StoredProcedure})
{
SqlParameter param = command.Parameters.AddWithValue("@statetable", dt);
param.TypeName = "StateTable";
param.SqlDbType = SqlDbType.Structured;
command.Connection = con;
con.Open();
command.ExecuteNonQuery();
con.Close();
}

但是出现的错误是“插入到表变量不允许的标识列。”我浏览了很多网站,但没有给出具体原因......

提前致谢。

最佳答案

错误很明显:不允许您做您想做的事。基本上,您将不得不找到一种不依赖于将标识值插入表变量/表值参数的设计。我的建议是创建一个单独的表变量(与表值参数无关),它具有相同的数据,但没有 IDENTITY 列,所以...

declare @foo table (id int not null, name nvarchar(200) not null /* etc */)
insert @foo (id, name /* etc */)
select id, name /* etc */ from @statetable

此时 @foo 拥有原始数据,但没有标识列 - 然后您可以使用 @foo 做任何您想做的事情。

如果没有看到您对身份插入做了什么,很难进一步评论。

关于c# - INSERT 到表变量不允许的标识列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15967218/

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