How to insert about 300 record from dataset into database? It takes so long about 5 minute I want to know is there any way to improve the process using dataset?
edit: this is my code, when user klik sav, it will do the following process:
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;
}
Thanks
You can use SqlBulkCopy
class to efficiently copy data to your database.
var bulkCopy = new SqlBulkCopy(yourConnection);
bulkCopy.DestinationTableName = "dbo.YourTable";
var table = GetLastSkalaGaji();
bulkCopy.WriteToServer(table);