假设我有一个ADO.NET DataTable,我通过将其保存到SQL Server数据库中的 new 表来“保持” - 是否有快速的方法这样做?
我意识到我可以编写为'CREATE TABLE'语句生成DDL的代码,方法是循环访问DataColumns集合并计算出正确的类型映射等等......但是我想知道是否存在一个现有方法这样做,还是有人写过的框架?
(注意:我需要能够处理任意列,没有像blob那样过于花哨;只需要常见的列类型,如字符串,数字,指南和日期。程序在运行之前不会知道DataTable中的列是什么 - 因此它们不能被硬编码。)
答案 0 :(得分:3)
ADO.net无法直接在SQL Server中创建表,但是,SMO可以使用Table类的.Create方法执行此操作。不幸的是,没有内置的方法来使用DataTable来定义SMO Table对象。
幸运的是,Nick Tompson在2006年写了这样一个DataTable-to-SMO.Table例程。它是作为对这个MSDN论坛主题http://social.msdn.microsoft.com/forums/en-US/adodotnetdataproviders/thread/4929a0a8-0137-45f6-86e8-d11e220048c3/的回复之一发布的(编辑:我现在可以创建超链接)
另请注意,回复帖子显示了如何向其添加SQLBulkCopy。
答案 1 :(得分:1)
如果表存在,您可以使用SqlBulkCopy
(将接受DataTable
)以最快的方式将数据放入表中(比通过适配器快得多)。我不认为它会创建表格。您可能必须自己编写DDL,或者找到一些现有代码来遍历DataTable.Columns
来执行此操作。
答案 2 :(得分:1)
我认为post可以提供帮助
答案 3 :(得分:0)
我可能更容易将您的DataTable存储为XML。只需创建一个包含XML列的表。