-2

如何从数据集中插入大约 300 条记录到数据库中?大约需要 5 分钟,我想知道有什么方法可以使用数据集改进这个过程吗?

编辑:这是我的代码,当用户单击 sav 时,它将执行以下过程:

public void ProcessSkalaGaji(MyDataSet myDataSet, DateTime tanggalBerlaku, decimal percentage)
{
   GenerateNewSkalaGaji(myDataSet, tanggalBerlaku, percentage);
   InsertSkalaGaji(myDataSet);
}

private void GenerateNewSkalaGaji(MyDataSet myDataSet, DateTime tanggalBerlaku, decimal percentage)
{
   // GetLastSkalaGaji returns about 300 rows
   MyDataSet.SkalaGajiDataTable skalaGajiTable = GetLastSkalaGaji();

   foreach (MyDataSet.SkalaGajiRow skalaGajiRow in skalaGajiTable.Rows)
   {
      MyDataSet.SkalaGajiRow newSkalaGajiRow = myDataSet.SkalaGaji.NewSkalaGajiRow();
      newSkalaGajiRow.TanggalBerlaku = tanggalBerlaku;
      newSkalaGajiRow.Golongan = skalaGajiRow.Golongan;
      newSkalaGajiRow.MasaKerja = skalaGajiRow.MasaKerja;
      newSkalaGajiRow.GajiPokok = skalaGajiRow.GajiPokok + (skalaGajiRow.GajiPokok * percentage / 100);

      myDataSet.SkalaGaji.AddSkalaGajiRow(newSkalaGajiRow);
   }
}

private string InsertSkalaGaji(MyDataSet myDataSet)
{
   string errorMsg = string.Empty;

   if (myDataSet.HasChanges() && !myDataSet.HasErrors)
   {
      int rowsAffected = Adapter.Update(myDataSet.SkalaGaji);

      if (rowsAffected == 0)
      {
         errorMsg = "No rows inserted! Please contact your administrator";
      }
   }

   return errorMsg;
}

谢谢

4

2 回答 2

1

您可以使用SqlBulkCopy类有效地将数据复制到数据库。

var bulkCopy = new SqlBulkCopy(yourConnection);
bulkCopy.DestinationTableName = "dbo.YourTable";
var table = GetLastSkalaGaji();
bulkCopy.WriteToServer(table);
于 2012-11-24T11:56:21.610 回答
0

我刚刚找到了解决方案,当调用方法 InsertSkalaGaji 时,在 Adapter.Update(myDataSet.SkalaGaji) 之前我创建了一个只包含插入行的新 SkalaGajiDataTable

代码:

MyDataSet.SkalaGajiDataTable newSkalaGaji = (MyDataSet.SkalaGajiDataTable)
myDataSet.SkalaGaji.GetChanges(DataRowState.Added);

int rowsAffected = Adapter.Update(newSkalaGaji);

并插入大约 300 条记录,只需要 4 秒谢谢大家

于 2012-11-25T15:59:26.460 回答