2015-04-17 98 views
2

我有一个Windows窗体应用程序来自动化某些任务,一部分是用大量的信息填充SQL Server表(有时少于10,但我看到一个超过1000行的情况!)列表(T)与DataTable填充数据库

今天我有一个List(of T)来执行这个任务。 “T”是一个有8个字符串参数的类。

在“保存”功能我解析列表构造一个SQL查询插入一个表中的信息。

但是在DB中插入的过程有时需要几秒钟才能完成,即使只有几行插入,特别是在SQL服务器过载的情况下。使用带有8个字符串列的DataTable来存储数据并用于填充数据库更好吗?我也很欣赏其他建议。

问候

+0

插入超过1000条记录可能会持续几秒钟。那太久了?你可以使用'DataTable'并设置数据适配器的['UpdateBatchSize'](https://msdn.microsoft.com/en-us/library/system.data.common.dbdataadapter.updatebatchsize%28v=vs.110%29 .aspx)为1000.这应该更有效率。但'SQLBulkCopy'是最有效的方法。 –

回答

3

在VB侧使用的结构不会有所作为。 如果你想要一个更快的方法,你可以看看SQLBulkCopyClass来帮助你。

https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy%28v=vs.110%29.aspx

+0

这个SQLBulkCopyClass非常有趣。解决这个问题,因为直接接受一个DataTable并且似乎适用于其他项目,我在其中有几个“excel to SQL”导入类。唯一的问题是某些外部客户端数据库,只能通过WebService或VPN访问,并且需要传递普通SQL插入。 –