jafarpalideh
چهارشنبه 19 مهر 1396, 09:04 صبح
با سلام .
من یه حلقه ی For دارم که میاد و Insert رو انجام میده . به توصیه یکی از دوستان کانکشن رو بیرون حلقه باز و بسته کردم . ولی بازم هنگام وارد کردن داده به ازای 1500 بار اجرای حلقه 20 ثانیه طول میکشه!!!!! راه حل بهتری وجود داره ؟
کد ها رو میزارم .
/////////////////تبدیل تاریخ میلادی به شمسی////////////////
public string MiladiToShamsi(DateTime _date)
{
PersianCalendar pc = new PersianCalendar();
StringBuilder sb = new StringBuilder();
sb.Append(pc.GetYear(_date).ToString("0000"));
sb.Append("/");
sb.Append(pc.GetMonth(_date).ToString("00"));
sb.Append("/");
sb.Append(pc.GetDayOfMonth(_date).ToString("00"));
return sb.ToString();
}
//////////////////گرفتن تاریخ شروع و پایان////////////////////
string PreventiveId = dataGridView1.CurrentRow.Cells["PreventiveId"].Value.ToString();
int period = Convert.ToInt32(dataGridView1.CurrentRow.Cells["PeriodDay"].Value.ToString());
string startDate =shamsitomiladi( txtDateBegin.Text);
string endDate =shamsitomiladi( txtDateEnd.Text);
DateTime dtStart = DateTime.Parse(startDate);
DateTime dtEnd = DateTime.Parse(endDate);
PersianCalendar pc = new PersianCalendar();
sconnection = new SqlConnection();
sconnection.ConnectionString = PM.Properties.Settings.Default.ConPM;
if (sconnection.State == ConnectionState.Closed)
{
sconnection.Open();
}
for (DateTime nextdate = dtStart; nextdate <= dtEnd; nextdate = pc.AddDays(nextdate, period))
{
string Insert2 = "Insert into TblPreventiveDay values ('{0}','{1}','{2}','{3}')";
string shamsi = MiladiToShamsi(nextdate);
Insert2 = string.Format(Insert2, PreventiveId, shamsi, 0, 0);
Function.DoDml2(Insert2, sconnection);
}
sconnection.Close();
MessageBox.Show("پیشگیرانه طی دوره روزانه ایجاد شد");
////////////////////////////////////////////////////////
public static void DoDml2(string Query,SqlConnection con)
{
SqlCommand cmd = new SqlCommand(Query, con);
cmd.ExecuteNonQuery();
}
من یه حلقه ی For دارم که میاد و Insert رو انجام میده . به توصیه یکی از دوستان کانکشن رو بیرون حلقه باز و بسته کردم . ولی بازم هنگام وارد کردن داده به ازای 1500 بار اجرای حلقه 20 ثانیه طول میکشه!!!!! راه حل بهتری وجود داره ؟
کد ها رو میزارم .
/////////////////تبدیل تاریخ میلادی به شمسی////////////////
public string MiladiToShamsi(DateTime _date)
{
PersianCalendar pc = new PersianCalendar();
StringBuilder sb = new StringBuilder();
sb.Append(pc.GetYear(_date).ToString("0000"));
sb.Append("/");
sb.Append(pc.GetMonth(_date).ToString("00"));
sb.Append("/");
sb.Append(pc.GetDayOfMonth(_date).ToString("00"));
return sb.ToString();
}
//////////////////گرفتن تاریخ شروع و پایان////////////////////
string PreventiveId = dataGridView1.CurrentRow.Cells["PreventiveId"].Value.ToString();
int period = Convert.ToInt32(dataGridView1.CurrentRow.Cells["PeriodDay"].Value.ToString());
string startDate =shamsitomiladi( txtDateBegin.Text);
string endDate =shamsitomiladi( txtDateEnd.Text);
DateTime dtStart = DateTime.Parse(startDate);
DateTime dtEnd = DateTime.Parse(endDate);
PersianCalendar pc = new PersianCalendar();
sconnection = new SqlConnection();
sconnection.ConnectionString = PM.Properties.Settings.Default.ConPM;
if (sconnection.State == ConnectionState.Closed)
{
sconnection.Open();
}
for (DateTime nextdate = dtStart; nextdate <= dtEnd; nextdate = pc.AddDays(nextdate, period))
{
string Insert2 = "Insert into TblPreventiveDay values ('{0}','{1}','{2}','{3}')";
string shamsi = MiladiToShamsi(nextdate);
Insert2 = string.Format(Insert2, PreventiveId, shamsi, 0, 0);
Function.DoDml2(Insert2, sconnection);
}
sconnection.Close();
MessageBox.Show("پیشگیرانه طی دوره روزانه ایجاد شد");
////////////////////////////////////////////////////////
public static void DoDml2(string Query,SqlConnection con)
{
SqlCommand cmd = new SqlCommand(Query, con);
cmd.ExecuteNonQuery();
}