درخواست های ارتباط
جستجو تنظیمات
لیست دوستان من

برنامه نویسی 3 لایه قسمت 2

0 نظرات

توی جلسه ی قبل یک Connection ایجاد کردیم. برای اینکه بین فرم برنامه و لایه ی دوم که Business هست ارتباط بر قرار بشه و اطلاعات بین اون ها جا به جا بشه به چیزی نیاز داریم به نام Data Object. برای ایجاد دیتا آبجکت نیز ابتدا باید یک کلاس بسازیم. داخل این کلاس متد خاصی قرار نمی دهیم و به هیچ کدام از using ها هم نیاز نداریم. فقط باید چند متغیر public بنویسیم. زمانی که دیتابیس رو درست کردیم، داخل جدولمون چند تا کالن داشتیم مثلا داخل جدول Student که اطلاعات دانش آموزان داخلش ذخیره میشه ID و FirstName و LastName را داریم. اما با آیدی کاری نداریم و داخل دیتابیس اون رو identity specification می کنیم تا درگیر مقدار دهیش نشیم. پس باید به FirstName و LastName مقدار بدیم. برای همین دو متغیر Public از نوع String داخل Data Object تعریف می کنیم. حالا نام و نام خانوادگی دانش آموز از فرم داخل دیتا آبجکت ذخیره می شه. به صورت زیر:

DataObject Dob = new DataObject ();
Dob.FirstName = "Amir Hossein";
Dob.LastName= "Fazlikhani";

می تونیم به جای مقادیر داخل دابل کوتیشن، اون ها رو از کاربر دریافت کنیم یعنی دو تا TextBox بزاریم و مقادیر رو از Text اون ها بگیریم. حالا اطلاعات رفت به دیتا آبجکت. می رسیم به نحوه ی ذخیره ی اون ها داخل دیتابیس. اول از همه نیاز به یه پروسیجر داریم تا با اجرا کردنش مقادیر رو بگیره و Insert کنه داخل جدول دیتابیسمون. نحوه ی ساختن پروسیجر رو توضیح نمی دم چون داخل همین سایت آی تی پرو می تونید به آموزش های Sql server دسترسی داشته باشید. پروسیجرمون بدین صورت شد:

create procedure AddStudent
        @firstname nvarchar(50),
        @lastname nvarchar(50)
as
        insert into Student (FirstName, LastName)
        values (@firstname, @lastname)

حالا میریم سراغ لایه ی سوم یعنی Data Layer. این لایه وظیفه ی ذخیره ی اطلاعات دریافتی از لایه ی Business در دیتابیس رو داره. Business هم که لایه ی دومه اطلاعاتش رو از Data Object دریافت می کنه. اول باید Data Layer رو بنویسیم. برای این کار یک کلاس می سازیم به اسم DataLayer. داخل این کلاس همه ی using هارو پاک می کنیم و فقط دو using زیر رو قرار میدیم:

using System.Data;
using System.Data.SqlClient;

حالا باید برای هر کدوم از کار هامون مثلا Insert و Update و ... یک متد بنویسیم. من فقط Insert رو میگم و با یاد گرفتن اون میتونید بقیش رو هم بنویسید که بیش ترین تفاوت رو توی پروسیجر هاشون دارن و داخل Ado.net فرق چندانی ندارن. پروسیجری که نوشتیم باید دو مقدار firstname و lastname رو دریافت کنه تا بتونه یک خط جدید داخل جدول Insert کنه. پس متد InsertData که ساختیم باید این دو مقدار رو دریافت کنه و تحویل پروسیجر بده. این کار رو داخل دوره های برنامه نویسی شی گرا یا به اختصار oop یاد گرفتید. پس من فقط کدش رو قرار می دم تا ساختارش رو ببینید و گیج نشید.

public void InsertData(string FirstName, string LastName)
{

}

حالا باید طبق چیزایی که توی دوره های Ado.net یاد گرفتید پروسیجر AddStudent رو فرا خوانی کنیم و مقادیر مورد نیاز رو بهش بدیم. اول یه نمونه از روی کلاس DBConnection

که توی جلسه ی قبل ساختیم و برای ایجاد و باز کردن Connection بود

بسازیم. مثل زیر:

DBConnection SqlCon = new DBConnection();

حالا یه SqlCommand می نویسیم تا پروسیجر رو اجرا کنیم. بعد از این کار Connection اون رو باید برابر با متد OpenSqlCon

که برای باز کردن Connection بود

قرار بدیم. بصورت زیر:

Sqlcmd.Connection = SqlCon.OpenSqlCon();

بعد از این کار، باید به کامند خودمون بگیم که می خوایم یه پروسیجر رو اجرا کنیم. بنابراین مثل زیر عمل می کنیم:

Sqlcmd.CommandType = CommandType.StoredProcedure;

بعد از اون باید پروسیجر AddStudent رو به اون معرفی کنیم. مقدار CommandText اون رو برابر با اسم پروسیجر می کنیم. یعنی:

Sqlcmd.CommandText = "InsertStudent";

حالا باید مقادیر مورد نیاز رو بهش بدیم. یعنی پارامتر ها رو اضافه کنیم. دو پارامتر FirstName و LastName. به جای از Add استفاده کنیم و مجبور بشیم نوع پارامتر رو هم بنویسیم از AddWithValue استفاده می کنیم که مقدار رو بهش بدیم و خودش تشخیص بده نوعش چیه. مثل زیر که هر دو پارامتر اضافه شدن:

Sqlcmd.Parameters.AddWithValue("@firstname",FirstName);
Sqlcmd.Parameters.AddWithValue("@lastname",LastName);

حالا کامند رو اجرا می کنیم و با استفاده از متد CloseSqlCon

که برای بستن Connection بود و توی جلسه ی قبل نوشتیم

Connection خودمون رو می بندیم. دقیقا مثل این کد:

Sqlcmd.ExecuteNonQuery();
SqlCon.CloseSqlCon();

کارمون توی لایه ی سوم تموم شده. س میریم سراغ لایه ی میانی که Business بود. توی این لایه همون طور که گفته شد اطلاعات از Data Object دریافت میشه و به لایه ی سوم فرستاده میشه. پس ابتدا کلاس Business رو می سازیم و یه متد می نویسیم به نام Insert که DataObject رو دریافت کنه.

public void Insert(DataObject  dob)
{

}

حالا باید یه نمونه از لایه ی سوم یعنی DataLayer ایجاد کنیم.

DataLayer dl=new DataLayer();

و در آخر هم دو مقدار FirstName و LastName دیتا آبجکت رو به متد InsertData واقع در لایه ی سوم بدیم تا پروسیجر این مقادیر رو دریافت کنه و دانش آموز رو به دیتابیس اضافه کنه. مثل زیر:

dl.InsertData(dob.firstname, dob.lastname);

کل این متد که در لایه ی دوم واقع شده به صورت زیر شد:

public void Insert(DataObject  dob)
{
    DataLayer dl = new DataLayer();
    dl.InsertData(dob.firstname, dob.lastname);
}

حالا باید توی لایه ی اول که همون فرم برناممون بود نمونه ای که از دیتا آبجکت ساخته بودیم و مقادیر مورد نیاز رو بهش داده بودیم رو بفرستیم برای Business. مثل زیر:

Business b = new Business();
b.Insert(Dob);

به صورت کلی:

DataObject Dob = new DataObject();
Dob.FirstName = "Amir Hossein";
Dob.LastName = "Fazlikhani";
Business b = new Business();
b.Insert(Dob);

برنامه نویسی 3 لایه به صورت ساده اینگونه بود. در آینده با یک فیلم آموزشی پروژه محور به صورت گسترده تر توضیح میدم.

آیا این مطلب را پسندیدید؟
ردیف عنوان قیمت
1 برنامه نویسی 3 لایه رایگان
2 برنامه نویسی 3 لایه قسمت 2 رایگان
هیچ نظری ارسال نشده است

برای ارسال نظر ابتدا به سایت وارد شوید

arrow