آموزش سیشارپ – بخش ۷۳
مقدمه
در بخش ۷۲ نیز همانند بخشهای پیشین در رابطه با دیتابیس و اضافه کردن آن به پروژه صحبت شد. در این بخش نیز قصد داریم به ادامه مبحث دیتابیس بپردازیم.
ارتباط دیتابیس با پروژه
برای برقرار ارتباط با دیتابیس، ما کلاسی را برای آن در نظر گرفتهایم تا همه ارتباطات را بهدست گیرد. برای اینکار، ابتدا از منوی Project، گزینه Add Class را انتخاب میکنیم.
پنجره زیر برای شما نمایان میشود…
ابتدا از اینکه گزینه Class انتخاب شده باشد اطمینان حاصل فرمایید. پس از آن، در باکس Name، اسم کلاس را DatabaseConnection.cs را قرار دهید. روی Add در نهایت کلیک کنید.
پس از آنکه Add را انتخاب کردید، کلاس جدید در Solution Explorer نمایان خواهد شد.
کلاس را باز کرده تا محتوای آن را ببینید
(کاربران نسخه ۲۰۱۰ از ویژوال استودیو، عبارت Threading.Task را نخواهند دید.)
کلاسی که ساختهایم، همانطور که از نامش پیداست، قرار است در ارتباط با دیتابیس ما را کمک کند. ما به آن متدها، متغیرها و propertyهایی را اضافه میکنیم تا بوسیله آنها، این ارتباط صورت بگیرد.
اولین کاری که میبایست انجام دهیم ساخت دو متغیر است.
private string sql_string;
private string strCon;
همانند شکل زیر در کدهایتان قرار دهید
متغیر sql_string، دستورات SQL را در خود نگهداری خواهد کرد. مثل: SELECT * FROM table
ما این دستورات را از طریق Settings که در بخش قبل توضیح دادیم دریافت خواهیم کرد. متغیر strCon نیز محل دیتابیس را در خود نگهداری میکند که مجدد از Settings جلسه قبل آن را پیدا میکنیم.
کد بعدیای که میبایست اضافه کنیم، یک property که فقط قابلیت نوشتن را داشته باشد. (یعنی get در آن تعریف نشده است.)
public string Sql {
set { sql_string = value;}
}
ما این Property را Sql مینامیم و از جنس رشته خواهد بود. value آن نیز همانطور که در کد مشخص است، در متغیر sql_string ذخیره خواهد شد.
property بعدی نیز connection_string خواهد بود که در مقدار value در متغیر strCon ذخیره خواهد شد. پس کدهای شما میبایست همه بهشکل زیر باشند:
در قدم بعدی، ما به شیءای به نام Dataset نیاز داریم. Dataset اطلاعات دیتابیس را در خود نگهداری میکند. هر سطر در Dataset، سطری از Database را در خود نگهداری خواهد کرد. پس از اینکه عملیات انتقال انجام شد، ارتباط با دیتابیس قطع میشود.
کد زیر را به کلاس اضافه کنید:
public System.Data.DataSet GetConnection
{
get { return MyDataSet();}
}
ما این Property را GetConnection مینامیم که بصورت Read-Only است. (یعنی تنها قابل خواندن است.)
در این Property ما متد MyDataSet را فرا میخوانیم؛ کار این متد ارتباط با دیتابیس و پر کردن DataSet از اطلاعات است. پس کد زیر را نیز بنویسید:
private System.DataSet MyDataSet()
{
}
اگر به متد فوق توجه کنید، به جای اینکه این متد از جنس String یا int باشد، از جنس System.DataSet است.
در قدم اول، کد زیر را داخل این متد اضافه کنید:
System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(strCon);
متغیری که در کد بالا ساختیم نام آن con است. جنس این متغیر از SqlClient.SqlConnection است. ما یک شیء از این نوع میسازیم و متغیر strCon را در سازنده این شیء به SqlClient.SqlConnection پاس میدهیم.
کد بعدی، کد زیر است:
con.Open();
این کد ارتباط را به دیتابیس باز میکند. در واقع، جداول هنوز باز نشدهاند، لذا برای اینکار ما نیاز به یک DataAdapter خواهیم داشت. DataAdapter به این دلیل استفاده میشوند تا جداول را در دیتابیس برای ما باز کند. پس از آن، ما باید این DataAdapter را در refrenceها پروژه قرار دهیم.
پس ما زیر دو متغیر قبل که تعریف کردهایم، متغیر زیر را قرار میدهیم:
System.Data.SqlClient.SqlDataAdapter da_1;
به متد MyDataSet برگردید و کد زیر را بنویسید:
da_1 = new System.Data.SqlClient.SqlDataAdapter(sql_string, con);
در آرگومانهای این متد میگوییم که ما کدام جدول را برای باز شدن میخواهیم.
خط بعدی مورد نیاز، خط کد زیر است:
System.Data.DataSet dat_set = new System.Data.DataSet();
خط فوق یک شیء از DataSet ایجاد میکند که نام آن را dat_set قرار دادهایم. کل متد این DataSet را برخواهد گرداند.
و ۳ خط آخر مورد نیاز، کدهای زیر هستند:
da_1.Fill(dat_set, “Table_Data_1”);
con.Close( );
return dat_set;
خط ابتدا با استفاده از متد Fill، اقدام به پر کردن DataSet میکند. خط بعدی، ارتباط با دیتابیس را قطع میکند و خط پس از آن، مقدار dat_set را برمیگرداند.
کدهای شما سرجمع باید همه بصورت زیر شده باشد
سلام
خیلی ممنون بابت زحماتی که کشیدین ، مطالب خیلی مفید و به زبان ساده بودن و این نقطه قوت این تاپیک هست
فقط لینک قسمت ۴۳ تا ۴۸ خراب هست، لطفا لینکها رو اصلاح کنید و pdf ها رو نیز تکمیل کنید
اگر امکان داره آموزش رو ادامه بدین و تاپیک رو مجددا فعال کنید
با سلام
من تازه با سایت شما آشنا شده ام
آموزش بسیار خوبی دارین
حیفم اومد بابت وقتی که گذاشتین، تشکر نکنم
سلام علیکم
خسته نباشید مطالب ارزنده ومفیدی است
از این همه پشتکار برای آموزش تشکر مینمایم
موفقیت روز افزون شما آرزوی ماست
با تشکر فراوان
فریبرز کاظمی
سلام خسته نباشید ممنون از اموزش های خوب و روانتان میخواستم بدونم میشه یک اموزش برای ساخت فرم ورود و ثبت نام هم بزارید؟
سلام خیلی ممنون از سایت خوبتون . میخواستم ببینم آموزش ها ادامه داره یا خیر؟
سلام من تازه به سیات شما آمده ام میشود از جلسه ۴۳ الی جلسه ۵۰ بریم یفرستید چون از ویب سایت حذف شده منون خوش میشم
آقای موسوی جلسه ی ۴۳ تا ۴۸ لینک نداره
بچه ها عبارت های جلسه ۴۳ تا ۴۹ رو مثل ” استفاده از List ” رو توی گوگل سرچ کنید صفحشون میاد
با سلام و خسته نباشید.
اولا واقعا از زحمات شما ممنونم
ثانیا” می شه خواهش کنم آموزش ها را ادامه بدین. خیلی مفید است.
البته من آموزش مراحل نهایی پروژه یعنی ساخت یک setup کامل و جامع مد نظرم است.
در ۲۰۱۲ به بعد
تو رو خدا آموزش ها را ادامه دهید
در ضمن بعضی بخش ها هم مثل ۴۳ تا ۴۸ لینک ندارند و باز نمی شوند.
لطفا” …
سلام ممنون از سایت خوبتون واقعا خیلی مفید است فقط چرا قسمت های ۴۳ تا ۴۸ لینک نداره تا باز بشه؟ و یک سوال آیا امکان داره فایل pdf آموزش ها رو تا جایی که هست رو بصورت کامل بذارید یعنی جدا جدا نباشه هر قسمت. ممنون میشم
سلام قسمت های ۴۳ تا ۴۸ آموزش رو میشه از طریق گزینه آموزش ویژال استودیو که در قسمت پایین هر بخش است پیدا و باز کرد ولی قسمت ۴۵ اصلا وجود ندارد لطفا راهنمایی کنید و pdf جامع کل آموزش رو بذارید ممنون از زحمتات شما
سلام
عرض خسته نباشید و خداقوت
آموزش هایی که گذاشته اید بسیار مفید بودند از شما به خاطر زمانی که برای این آموزش ها می گذارید متشکرم. تنها انتقادی که از حضرتعالی دارم این است که زمانی که فایل های pdf را قرار می دادید برای خود من سبب می شد تا این فایل ها را در زمان اضافه ام مرور کنم چه خوب می شد که باز در انتهای آموزش ها این فایل ها را به پیوست اضافه می کردید.
باز هم به نوبه خود از حضرتعالی سپاس گزارم.
لینک قسمت های ۴۳ تا ۴۸ مشکل دارد و نمیتوان به آموزش ها دسترسی داشت
عرض سلام و خسته نباشید.
آقا وجدانن این مشکل ما رو حل کن!
من یه فرم رو به عنوان والد تعریف کردم . حالا شکلش ۳d شده . میخوام مثل همون حالت عادی اش باشه بدون افکت .
ممنون میشم راهنمایی کنین.
ادرس سایتی که ازش ترجمه میکنید رو بزارید