日期:2014-05-17  浏览次数:20891 次

一个DataTable使用insert和SqlBulkCopy的问题
客户端使用WEBSERVICE把一个DataTable传送到服务器端。然后插入数据库(备注:数据一般在8000条左右)。


以下是服务器端WEBSERVICE部分代码foreach (DataRow dr in dt.Rows)
  {

  Cmd.Parameters.Clear();
  Cmd.CommandText = "insert into deliverydata(orderdate,ordernumber Values(@orderdate,@ordernumber)";


  Cmd.Parameters.Add(new SqlParameter("@orderdate", DateTime.Today.ToShortDateString()));
  Cmd.Parameters.Add(new SqlParameter("@ordernumber", dr["ordernumber"].ToString()));
  int intResult = Cmd.ExecuteNonQuery();

   
  }

ordernumber 是从客户端通过DataTable传送过来的,但是orderdate这种字段,由于可以在服务器端直接获取日期,所以我就不想增加客户端的数据
传输量,就直接在服务器端获取。而且类似orderdate这种字段有好几个。
现在问题是:由于insert的数据没有SqlBulkCopy 快。所以我想改为SqlBulkCopy 代替insert,但是由于SqlBulkCopy 好像需要
提供一个完整的DataTable,那么就表示,我必须把orderdate这类的字段首先在客户端先获取,然后再传输过来,才是一张
完整的DataTable,但是这样便增加了传输的数据量,请问应该如何是好,麻烦高手解答一下,谢谢

------解决方案--------------------
通过临时表导入,然后从临时表往正式表插入。