m_royana
یک شنبه 12 مرداد 1393, 18:50 عصر
با سلام
من برنامه ای دارم و مجبورم حداقل ماهی یک بار یکی از جداول بانک اس کیو ال (که روی سرور شبکه قرار دارد) رو خالی کنم و مجددا با اطلاعاتی که از یک فایل اکسس برمیدارم پر کنم.
با استفاده از حلقه ای اطلاعات رو سطر به سطر از اکسس می خونم و در اس کیو ال insert می کنم.
حالا مشکل اینجاست که در حین این جابجایی به مرور سرعت کاهش پیدا می کنه و وقتی به حدود 80٪ میرسه ( بعد از حدود 15 ساعت ) دیگه هیچی ثبت نمیکنه. البته خطایی هم نمیده.
خیلی جستجو کردم اما به نتیجه ای نرسیدم.
سی شارپ 2008 - اس کیو ال سرور 2005 - اکسس 2010
اینم کدم :
private void button2_Click(object sender, EventArgs e)
{
try
{
SqlCommand com = new SqlCommand("delete from m_moshtarakin", CON);
CON.Open();
com.ExecuteNonQuery();
CON.Close();
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
Thread thread1 = new Thread(upp);
thread1.Start();
}
.................................................. .................................................. .................................................. ....................................
public void upp()
{
try
{
string ramz;
string parvande;
string onvan;
string address;
string tarefe;
string faaz;
string amper;
string dimand;
string nahiye;
string roozkar;
string mamoor;
string serial;
string sakhtemani;
int row = dataGridView1.RowCount;
int i = 0;
for (i = 0; i < row; i++)
{
label6.Text = dataGridView2.RowCount.ToString();
decimal a1 = dataGridView1.RowCount;
decimal a2 = i;
decimal a3;
try
{
a3 = ((a2 * 100) / a1);
label2.Text = a3.ToString();
}
catch
{ }
ramz = dataGridView1[0, i].Value.ToString();
parvande = dataGridView1[1, i].Value.ToString();
onvan = ConvertCharFaToAr(dataGridView1[2, i].Value.ToString());
address = ConvertCharFaToAr(dataGridView1[3, i].Value.ToString());
tarefe = dataGridView1[4, i].Value.ToString();
faaz = dataGridView1[5, i].Value.ToString();
amper = dataGridView1[6, i].Value.ToString();
dimand = dataGridView1[7, i].Value.ToString();
nahiye = dataGridView1[8, i].Value.ToString();
roozkar = dataGridView1[9, i].Value.ToString();
mamoor = dataGridView1[10, i].Value.ToString();
serial = dataGridView1[11, i].Value.ToString();
sakhtemani = dataGridView1[12, i].Value.ToString();
newRow = sql_DS.Tables["m_moshtarakin"].NewRow();
SqlCommand cmdClasf;
strSql = "insert into m_moshtarakin(" + "ramz," + "parvande," + "onvan," + "address," + "tarefe," + "faaz," + "amper," + "dimand," + "nahiye," + "roozkar," + "mamoor," + "serial," + "sakhtemani" +
")VALUES('" + ramz + "','" + parvande + "','" + onvan + "','" + address + "','" + tarefe + "','" + faaz + "','" + amper + "','" + dimand + "','" + nahiye + "','" + roozkar + "','" + mamoor + "','" + serial + "','" + sakhtemani + "')";
CON.Open();
cmdClasf = new SqlCommand(strSql, CON);
cmdClasf.ExecuteNonQuery();
CON.Close();
sql_DS.Clear();
sql_DA.Fill(sql_DS, "m_moshtarakin");
sql_CB = new SqlCommandBuilder(sql_DA);
sql_DA.Update(sql_DS, "m_moshtarakin");
CON.Close();
label6.Text = i.ToString();
}
}
catch (Exception ex)
{
CON.Close();
MessageBox.Show(ex.ToString());
}
}
اساتید گرامی راهنمایی بفرمایید چطوری مشکل رو حل کنم ؟
من برنامه ای دارم و مجبورم حداقل ماهی یک بار یکی از جداول بانک اس کیو ال (که روی سرور شبکه قرار دارد) رو خالی کنم و مجددا با اطلاعاتی که از یک فایل اکسس برمیدارم پر کنم.
با استفاده از حلقه ای اطلاعات رو سطر به سطر از اکسس می خونم و در اس کیو ال insert می کنم.
حالا مشکل اینجاست که در حین این جابجایی به مرور سرعت کاهش پیدا می کنه و وقتی به حدود 80٪ میرسه ( بعد از حدود 15 ساعت ) دیگه هیچی ثبت نمیکنه. البته خطایی هم نمیده.
خیلی جستجو کردم اما به نتیجه ای نرسیدم.
سی شارپ 2008 - اس کیو ال سرور 2005 - اکسس 2010
اینم کدم :
private void button2_Click(object sender, EventArgs e)
{
try
{
SqlCommand com = new SqlCommand("delete from m_moshtarakin", CON);
CON.Open();
com.ExecuteNonQuery();
CON.Close();
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
Thread thread1 = new Thread(upp);
thread1.Start();
}
.................................................. .................................................. .................................................. ....................................
public void upp()
{
try
{
string ramz;
string parvande;
string onvan;
string address;
string tarefe;
string faaz;
string amper;
string dimand;
string nahiye;
string roozkar;
string mamoor;
string serial;
string sakhtemani;
int row = dataGridView1.RowCount;
int i = 0;
for (i = 0; i < row; i++)
{
label6.Text = dataGridView2.RowCount.ToString();
decimal a1 = dataGridView1.RowCount;
decimal a2 = i;
decimal a3;
try
{
a3 = ((a2 * 100) / a1);
label2.Text = a3.ToString();
}
catch
{ }
ramz = dataGridView1[0, i].Value.ToString();
parvande = dataGridView1[1, i].Value.ToString();
onvan = ConvertCharFaToAr(dataGridView1[2, i].Value.ToString());
address = ConvertCharFaToAr(dataGridView1[3, i].Value.ToString());
tarefe = dataGridView1[4, i].Value.ToString();
faaz = dataGridView1[5, i].Value.ToString();
amper = dataGridView1[6, i].Value.ToString();
dimand = dataGridView1[7, i].Value.ToString();
nahiye = dataGridView1[8, i].Value.ToString();
roozkar = dataGridView1[9, i].Value.ToString();
mamoor = dataGridView1[10, i].Value.ToString();
serial = dataGridView1[11, i].Value.ToString();
sakhtemani = dataGridView1[12, i].Value.ToString();
newRow = sql_DS.Tables["m_moshtarakin"].NewRow();
SqlCommand cmdClasf;
strSql = "insert into m_moshtarakin(" + "ramz," + "parvande," + "onvan," + "address," + "tarefe," + "faaz," + "amper," + "dimand," + "nahiye," + "roozkar," + "mamoor," + "serial," + "sakhtemani" +
")VALUES('" + ramz + "','" + parvande + "','" + onvan + "','" + address + "','" + tarefe + "','" + faaz + "','" + amper + "','" + dimand + "','" + nahiye + "','" + roozkar + "','" + mamoor + "','" + serial + "','" + sakhtemani + "')";
CON.Open();
cmdClasf = new SqlCommand(strSql, CON);
cmdClasf.ExecuteNonQuery();
CON.Close();
sql_DS.Clear();
sql_DA.Fill(sql_DS, "m_moshtarakin");
sql_CB = new SqlCommandBuilder(sql_DA);
sql_DA.Update(sql_DS, "m_moshtarakin");
CON.Close();
label6.Text = i.ToString();
}
}
catch (Exception ex)
{
CON.Close();
MessageBox.Show(ex.ToString());
}
}
اساتید گرامی راهنمایی بفرمایید چطوری مشکل رو حل کنم ؟