[英]insert large data to database using dataset
如何从数据集中插入大约 300 条记录到数据库中? 大约需要 5 分钟,我想知道有什么方法可以改进使用数据集的过程?
编辑:这是我的代码,当用户 klik 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;
}
谢谢
您可以使用SqlBulkCopy
类有效地将数据复制到您的数据库。
var bulkCopy = new SqlBulkCopy(yourConnection);
bulkCopy.DestinationTableName = "dbo.YourTable";
var table = GetLastSkalaGaji();
bulkCopy.WriteToServer(table);
我刚刚找到了解决方案,当调用方法 InsertSkalaGaji 时,在 Adapter.Update(myDataSet.SkalaGaji) 之前我创建了一个仅包含插入行的新 SkalaGajiDataTable
代码:
MyDataSet.SkalaGajiDataTable newSkalaGaji = (MyDataSet.SkalaGajiDataTable)
myDataSet.SkalaGaji.GetChanges(DataRowState.Added);
int rowsAffected = Adapter.Update(newSkalaGaji);
并插入大约 300 条记录,只需要 4 秒 谢谢大家
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.