1

在 c# 中运行 sqlbulkcopy 时出现错误:WriteToServer: Connection property has not been initialized。

它发生在 WriteToServer 命令中。连接已打开。

using (SqlBulkCopy s = new SqlBulkCopy(conn))
{
  foreach (DataTable dt in ds.Tables)
  {

    s.DestinationTableName = "tmp_" + dt.TableName;
    s.NotifyAfter = 5000;
    s.SqlRowsCopied += new SqlRowsCopiedEventHandler(s_SqlRowsCopied);
    s.WriteToServer(dt);
    s.Close();
  }
}

正确代码:

using (SqlBulkCopy s = new SqlBulkCopy(conn))
{
  foreach (DataTable dt in ds.Tables)
  {
    s.DestinationTableName = "tmp_" + dt.TableName;
    s.NotifyAfter = 5000;
    s.SqlRowsCopied += new SqlRowsCopiedEventHandler(s_SqlRowsCopied);
    s.WriteToServer(dt);
  }
  s.Close();
}
4

1 回答 1

1

乍一看,我猜想foreach循环的第一遍执行正确,然后s.Close();清理SqlBulkCopy实例并清除其Connection属性,从而在第二遍创建异常。

于 2010-01-14T01:43:11.070 回答