سلام
من دستور ورود اطلاعات به sqlserver رو توسط کد زیر نوشتم
که درون ان از storedProc استفاده کردم اما مشکلی که اینجا وجود داره مشکل سرعت ورود اطلاعات هستش که مثلا اگر
10000 رکورد اطلاعات رو بخوام وارد کنم سرعت بسیار پایین میاید ممکنه یه بررسی بفرمایید
void ReadToTable()
{
try
{
if (dir != "")
{
dic.Clear();
string[] lines = System.IO.File.ReadAllLines(dir);
foreach (string line in lines)
{
if (!string.IsNullOrEmpty(line))
{
l = line.Split('\t');
l[0] = l[0].Trim();
l[1] = l[1].Trim();
l[2] = l[2].Trim();
l[3] = l[3].Trim();
if (!string.IsNullOrEmpty(l[0]) && l[3] == "1" || l[3] == "0")
{
dic.Add(new KeyValuePair<string, string>(l[0], l[1]));
PersianCalendar persCal = new PersianCalendar();
SqlConnection sqlconn = new SqlConnection(DBsetting.Connstring);
SqlCommand sqlda = new SqlCommand("InsertReadd", sqlconn);
sqlda.CommandType = CommandType.StoredProcedure;
sqlda.Parameters.AddWithValue("@date", l[1]);
sqlda.Parameters.AddWithValue("@IDp", l[0]);
sqlda.Parameters.AddWithValue("@day", GetDayOfWeek(GetPerDate(l[1])));
sqlda.Parameters.AddWithValue("@nobatkari", "");//ntkari[idx].ToString());
sqlda.Connection.Open();
sqlda.ExecuteNonQuery();
sqlda.Connection.Close();
}
else
{
ReadDataAndInsertIntoTable(line);
}
}
}
RefGrid();
foreach (var pair in dic)
{
InsertNobatKari(pair.Key, GetPerDate(pair.Value).ToString());
}
}
}
catch (Exception ex)
{
if (ex.Message.Contains("there is no row at position 0"))
{
MessageBox.Show("لطفا سطر خالی را انتخاب ننمایید");
}
else if (ex.Message.Contains("Cannot insert duplicate key row in object"))
{
MessageBox.Show("امکان ورود سطر تکراری وجود ندارد");
}
else
{
MessageBox.Show(ex.Message);
}
}
}