【发布时间】:2012-02-13 08:53:37
【问题描述】:
全部,
我有以下BulkCopy操作:
// Convert the FlexGrid to a DataTable.
DataTable currData = (DataTable)c1ErrFlexGrid.DataSource;
// Insert the data into the database.
SqlBulkCopy SqlBulkIns = new SqlBulkCopy(strConnString, SqlBulkCopyOptions.Default);
SqlBulkIns.BatchSize = 5000;
SqlBulkIns.DestinationTableName = String.Format("dbo.{0}", strTableName);
SqlBulkIns.WriteToServer(currData);
其中strConnectionString 是已定义且有效的连接字符串。过去,当表 strTableName 存在并且定义了字段时,这工作得很好。我现在希望在运行时定义的DataTable 上执行这个BulkCopy 操作;即,无需在 SQL 中预定义表结构。这可能吗?如果有,怎么做?
感谢您的宝贵时间。
【问题讨论】:
-
您的意思是要创建一个表并将数据从数据表中批量加载到其中吗? (即sql server中不存在该表)?
-
你的意思是,你想问用户一个表名,你的程序实际上会创建一个与
c1ErrFlexGrid.DataSource相同模式的表,然后填充它? -
是的,你都对......如果表存在于 SQL Server 中,则上述代码有效。我想知道当表当前不存在时如何将
DataTable批量加载到 SQL Server 中,而不预先定义它。 -
除了提前手动创建表(基于您的数据表模式)之外,没有简单的方法可以做到这一点。您需要一些代码来检查表是否存在,如果不存在则创建它。
-
我担心有人会这么说!谢谢你的时间。如果您将此作为答案,我将很乐意接受...
标签: c# sql datatable sqlbulkcopy