PDA

View Full Version : دستور insertدر دیتابیس ACCESSدر C#



keshmeshpolo
شنبه 19 مرداد 1392, 21:49 عصر
سلام دوستان من یک سوال داشتم من باید اطلاعات زیادی در یک دیتابیس ACCESSوارد کنم که تعدادTABLEهای دیتابیس هم زیاد است من از دستور زیر استفاده کردم ولی سرعت برنامه خیلی پایین است آیا راهی برای بالارفتن سرعت برنامه پیشنهاد دارین لطفا منو راهنمایی کنین بسیار بسیار ممنون
string strcn = "Provider=Microsoft.Jet.OLEDB.4.0" + ";Data Source=" + path;
OleDbConnection cn = new OleDbConnection(strcn);
cn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = cn;

for (int i = 0; i < 100000; i++)
{

cmd.CommandText = "Insert Into TABLE1 ([ID], [NAME], [NAME2], [NAME3], [NAME4]) values (" + (i + count) + ",'" + TB[0, i] + "',1 , 1 ,20 )";
cmd.ExecuteNonQuery();


cmd.CommandText = "Insert Into TABLE2 ([ID], [NAME], [NAME2], [NAME3], [NAME4]) values (" + (i + count) + ",'" + TB[12, i] + "',1 , 1 ,20 )";
cmd.ExecuteNonQuery();


}

mousa1992
یک شنبه 20 مرداد 1392, 13:57 عصر
سلام
راهی برا افزایش سرعت ثبت وجود نداره اما شما میتونی ثبت داده ها رو پشت برنامه (با استفاده از thread ی غیر از ترد اصلی برنامه ) انجام بدی که فرمتون هنگ نشه و کاربر بتونه به کارش ادامه بده و حتی میتونی ی progressBar هم قرار بدی که درصد پیشرفت کارو هم بتونن ببینن
برای حجم اطلاعات زیاد چرا از دیتابیس sql استفاده نمیکنید؟؟

jmfnima
دوشنبه 21 مرداد 1392, 20:19 عصر
با سلام به شما
دوست عزیز به نظر من کدهای اضافه کردن و حذف کردن و غیره رو در خود اکسس انجام بده و پارامترها رو هم از سی شارپ به اکسس بفرست این کار روی سرعت تاثیر خوبی داره .

مهرداد صفا
دوشنبه 21 مرداد 1392, 20:40 عصر
با سلام.
فرمانها را با استفاده از عملگر "+=" به فرمان قبلی اضافه کنید و به ازای هر مثلا صد دستور یک بار Execute کنید.