PDA

View Full Version : تبدیل کدهای ارتباط با بانک اطلاعاتی به کلاس



forodo
سه شنبه 25 تیر 1392, 15:00 عصر
سلام
یه پروژه ای هستش که از ارتباط با بانک اطلاعاتی زیاد استفاده می کنم.
می خواستم برای راحتی اونا رو به یک کلاس تبدیل کنم.
لطفاً بنده را راهنمایی کنید.

/////OleDbConnection objconnection =



new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\Radman.mdb;Persist" +



" Security Info=True;Jet OLEDB:Database Password=123456");



/////OleDbDataAdapter objDataAdapter = new OleDbDataAdapter();



/////DataSet objDataSet = new DataSet();



/////objDataAdapter.SelectCommand = new OleDbCommand();



/////objDataAdapter.SelectCommand.Connection = objconnection;



/////objDataAdapter.SelectCommand.CommandText =



@"SELECT tblDarkhastTahiyeBilit.ID, tblPersonal.FirstName+' '+tblPersonal.LastName as FullName, tblDarkhastTahiyeBilit.Dates,

tblDarkhastTahiyeBilit.Hours

FROM tblPersonal, tblDarkhastTahiyeBilit

WHERE tblPersonal.Username=tblDarkhastTahiyeBilit.Userna me AND

tblDarkhastTahiyeBilit.EmzaTaideModireZirabtDate IS Null"


;



/////objDataAdapter.SelectCommand.CommandType = CommandType.Text;



/////objconnection.Open();



/////objDataAdapter.Fill(objDataSet, "tblPersonal_tblServisRequest");



/////objconnection.Close();

dgvTayid.DataSource = objDataSet.Tables[

"tblPersonal_tblServisRequest"];

dgvTayid.Columns[

"ID"].Visible = false;

dgvTayid.Columns[

"FullName"].HeaderText = "نام درخواست کننده";

dgvTayid.Columns[

"FullName"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

dgvTayid.Columns[

"Dates"].HeaderText = "تاریخ درخواست";

dgvTayid.Columns[

"Hours"].HeaderText = "زمان درخواست";


اونایی که به صورت کامنت درآوردم رو می خوام داخل یک کلاس باشه.
با تشکر

forodo
سه شنبه 25 تیر 1392, 16:00 عصر
کممممممممممممممممک!

erfan_urchin
سه شنبه 25 تیر 1392, 16:23 عصر
خب مشکل چیه؟؟؟ دوتا NameSpace زیر رو به کلاست اضافه کن و کلاست رو Public کن و بعد استفاده کن ازش
using System.Data;
using System.Data.OleDb;

forodo
سه شنبه 25 تیر 1392, 16:38 عصر
نه
منظورم اینه که یه کلاس درست کنم بعد اون کدهایی رو که کامنت کردم رو اونجا قرار بدم و هر موقع که می خوام از بانک اطلاعاتی استفاده کنم فقط اون تابعی که در کلاس گذاشتم برای کدها رو فراخونی کنم .
یعنی وقتی می خوام اون کدای بالا رو بنویستم فقط :
یک خط برای ساختن شی از کلاس
یک خط برای فراخونی تابع مورد نظرم از کلاس
خطوطی که کامنت نکردم.
همین
آخه تو این پروژه هی بخوام کانکشن رو بنویسم بعد باز کنم بعد اجرا کنم بعد دوباره ببندم و همه اون دستوراتی که در همه جاییی که از دیتابیس می خوام استفاده کنم خیلی کدهای الکی زیاد می شه میخوام تعداد خطوط رو تا حد امکان کم کنم.

sohil_ww
سه شنبه 25 تیر 1392, 16:55 عصر
خوب کلاس تو بساز برای ساخت کلاس به صورت عکس زیر عمل کن
107337

بعد از ساخت کلاس name space های که دوستمون گفتنو اضافه کن متد ها رو ایجاد کن

forodo
سه شنبه 25 تیر 1392, 17:07 عصر
از زحمتی که کشیدی و عکس گذاشتی ممنونم ولی روش ساخت کلاس رو می دونم چیزی که نمی دونم اینه که چطور می تونم اون کدای مورد نظر رو داخل کلاس بگذارم چون قبلاً این کار رو کردم ولی ایراد می گرفت.
لطفاً کلاسی که می گم رو برای بنده قرار دهید.
با تشکر

sohil_ww
سه شنبه 25 تیر 1392, 17:18 عصر
ایراد می گرفت.

چه ایرادی
شما شروع کن تا سطح سوادم کمکت می کنم یا ارور ها رو بزار اساتید اینجا کمکت می کنن (اینجوری یادگیریش واست شرین تره) اگه بخوام کلاس بهت بدم احساس گام به گام که تو دوران مدرسه داشتیم بهم دست می ده !

roolinjax
سه شنبه 25 تیر 1392, 18:10 عصر
سلام
اگر درست متوجه سوالتون شده باشم باید در جواب بگم که تنها راهش اینه که متغیرها و اشیاء بانکتون (connection , DataAdapter , DataSet , Command , ...) رو باید به صورت استاتیک تعریف کنید. مثل کد زیر :
public static OleDbCommand cmd = new OleDbCommand();
در غیر اینصورت برای هربار استفاده باید یه نمونه از روی شیء کلاس مورد نظر بسازی که خوب دیگه این نمونه اشیاء و متغیرهای خودشو داره و ربطی به شیء دیگه نداره اما اگر استاتیک تعریف کنید دیگه نیازی به نمونه سازی نیست و به صورت زیر مقداردهی یا دسترسی میشه :
Class1.cmd.CommandText = "select * from tbl1";