C# 将通用列表上载到数据库
如何将遗传C# 将通用列表上载到数据库,c#,sql-server,tsql,generics,C#,Sql Server,Tsql,Generics,如何将遗传列表上传到SQL数据库。两种方法都完成了,我的钱就在DataTable上了 看 这有什么作用?它如何帮助OP?显示的代码获取一个数据表并将其推送到数据库。我刚刚从链接中复制了相关代码。我对他的问题的理解是,将数据从应用程序移动到数据库的最佳方式是什么。我不是问SQL Bulk Copy做什么,我是问你的答案如何帮助OP,或者如何将其与他们(未显示)的代码集成。你没有解释前者或后者。唯一不清楚的是OP打算如何实施解决方案。“哪个更好”的问题总是“视情况而定”。我只是提供了我的观察结果,即
列表上传到SQL数据库。两种方法都完成了,我的钱就在DataTable上了
看
这有什么作用?它如何帮助OP?显示的代码获取一个数据表并将其推送到数据库。我刚刚从链接中复制了相关代码。我对他的问题的理解是,将数据从应用程序移动到数据库的最佳方式是什么。我不是问SQL Bulk Copy做什么,我是问你的答案如何帮助OP,或者如何将其与他们(未显示)的代码集成。你没有解释前者或后者。唯一不清楚的是OP打算如何实施解决方案。“哪个更好”的问题总是“视情况而定”。我只是提供了我的观察结果,即从C#完成了参数化sql过程和数据表推送之后,我发现后者在我的经验中“更好”。如果列表很大,那么DataTable不是最佳选择,因为它首先在内存中复制列表。或者,如果需要在联接中使用列表(考虑使用内部联接进行筛选,而不是使用in列表,因为这需要动态SQL),那么此解决方案将根本不起作用,即使它是有效的。我认为这真的取决于你以后将如何使用数据…我想创建一个类似于此的模板-立即更改传入类型,而无需进行大量更改。胡吉无法添加答案,但这取决于列表的使用方式和大小。在这两种情况下,我都看不出使用DataTable
有什么好处。如果列表很小,那么您拥有的XML很好,或者使用CSV并使用SQLCLR拆分器非常快(我创建的库在免费版本中有String\u Split
和String\u Split4k
)。如果你有一个很大的列表,那么请使用TVPs查看:为什么暂停——“请澄清你的具体问题或添加额外的细节,以突出你需要的内容。正如目前所写的,很难准确说出你的要求。”
// Create a table with some rows.
DataTable newProducts = MakeTable();
// Create the SqlBulkCopy object.
// Note that the column positions in the source DataTable
// match the column positions in the destination table so
// there is no need to map columns.
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
bulkCopy.DestinationTableName =
"dbo.BulkCopyDemoMatchingColumns";
try
{
// Write from the source to the destination.
bulkCopy.WriteToServer(newProducts);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}