繁体   English   中英

C#如何将没有UDT的DataTable参数传递给SQL Server

[英]C# how to pass a DataTable parameter without a UDT to SQL Server

我正在尝试从 API 动态批量合并数据到数据库中。

我已经编写了使用反射在 C# 中创建DataTable变量的代码,并且我正在生成一些 SQL 以在 SQL Server 中进行合并并将DataTable变量与 SQL 一起传递以执行。

但是,当我尝试将DataTable作为参数传递时,它需要服务器上用户定义表类型UDTTypeName

我想避免必须在服务器上设置UDT ,因为我没有这样做的权限,并且因为数据会定期更改,所以我希望能够动态创建表,并且我希望能够通过来自 C# 的数据类型信息。

有没有一种方法可以使用DataTable类型传递UDT数据类型信息,或者使用 SQL 命令将表传递给数据库的不同方法?

有没有一种方法可以使用 DataTable 类型传递 UDT 数据类型信息,或者使用 SQL 命令将表传递给数据库的不同方法?

您只能将表值参数与用户定义的表类型结合使用。

将数据整体移动到数据库中的另一个主要替代方法是使用BULK COPY - 这早于表值参数。 ADO.NET 直接使用SqlBulkCopy支持 BULK COPY

请注意, SqlBulkCopy旨在直接插入到表中 - 我不相信它可以用于直接执行 sproc,但是您可以使用SqlBulkCopy插入到临时表中,然后在 sproc 中引用该临时表,如果你真希望。

这篇博客文章也有其他建议和示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM