PDA

View Full Version : مبتدی: اتصال به دیتابیس در یک برنامه



Fastdesign
یک شنبه 04 دی 1390, 22:41 عصر
سلام
تو برنامه می خوام چند فرم داشته باشم به این صورت که در هر فرم اطلاعات مربوط به یک جدول برام نمایش بده .
من در فرم اول به دیتابیس متصل شدم و ازطلاعات یک جدول را در گرید نمایش می دم و حالا می خوام در فرمی دیگه (فرم 2) به جدول دیگه وصل شم آیا باید دوباره به دیتابیس وصل بشم یا از همون اتصال قبلی میشه استفاده کرد؟
اگه میشه یک مثال بزنید.

متشکرم

kaka777
یک شنبه 04 دی 1390, 22:49 عصر
سلام
باید دوباره به دیتابیس وصل بشی
منطق کار اینه که هر بار که با دیتابیس کار داری همون جا اتصال برقرار میکنی و بعد از کارت اتصالو میبندی
یه راه غیر منطقی اینه که توو form_load اتصالت رو باز کنی و در form_close() اتصالتو ببندی که اینکار اصلا اصلا توصیه نمیشه
شما هر بار باید اتصال برقرار کنی

xcomlock
یک شنبه 04 دی 1390, 23:01 عصر
اگه از اشیاء غیر متصل داده ای مثل Dataset استفاده میکنید اشکالی نداره اما اگه اشیاء متصل مثل SqlDataReader استفاده میکینید باید اتصال رو ببندین. با این که خود NET. تمام اتصالات رو به صورت خودکار میبنده اما بعد از مدتی امکان داره خطای Timeout expired برای برنامتون پیش بیاد. ولی بهتره همیشه اتصالات رو بعد از تراکنشهاتون ببندین

Fastdesign
یک شنبه 04 دی 1390, 23:01 عصر
پس چرا این کد تو فرم اول اول کار می کنه ولی تو فرم دیگه خطا می گیره :
برای حذف رکورد جدول :
pos = bs.CurrencyManager.Position;
dt.Rows[pos].Delete();
da.Update(dt);
خطا هم از خط سوم می گیره!

xcomlock
یک شنبه 04 دی 1390, 23:06 عصر
میشه کدهای فرم اول و فرم دوم و خطای مربوطه رو اینجا بزارین ؟

Fastdesign
یک شنبه 04 دی 1390, 23:30 عصر
اتصال به دیتابیس و :
cn.ConnectionString =@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=taxi.mdb";
da = new OleDbDataAdapter("select * from Member", cn);
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
da.Fill(dt);

و متغییر ها :
OleDbConnection cn = new OleDbConnection();
OleDbDataAdapter da = new OleDbDataAdapter();
DataTable dt = new DataTable();
BindingSource bs = new BindingSource();
int pos = 0;

متشکرم از همکاریتون

xcomlock
یک شنبه 04 دی 1390, 23:47 عصر
و خطا ؟؟؟؟

Fastdesign
دوشنبه 05 دی 1390, 00:05 صبح
79723
وقتی می خوام حذف کنم این خطا میده !