Vee*_*eer 8 c# sql-server-2008
我正在从大型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();
}
Run Code Online (Sandbox Code Playgroud)
但是出现的错误是 “无法插入表变量中的标识列中”。 我到过很多站点,但没有给出具体原因.....
提前致谢。
这个错误相当明显:你不被允许做你想做的事。基本上,您必须找到一种不依赖于将标识值插入表变量/表值参数的设计。我的建议是创建一个单独的表变量(与表值参数无关),它具有相同的数据,但没有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
Run Code Online (Sandbox Code Playgroud)
此时@foo
有原始数据,但没有标识列 - 然后您可以使用@foo
.
如果不知道您对身份插入做了什么,就很难进一步发表评论。
归档时间: |
|
查看次数: |
6022 次 |
最近记录: |