تبليغاتX
Students Area - Simple LINQ to SQL and ADO.Net in C# Application
کامپیـــــوتر ، فناوری اطلاعات

با سلام خدمت دوستان

تو این پست می خوام راجع به یکی از کارهای جالب مایکروسافت تو ویژوال استودیوی 2008 ، به طور خیلی مختصر و در حد آشنایی ابتدایی صحبت کنم

احتمالا کسانی که با ویژوال استودیوی 2008 کار کردند سرآید  using System.Linq  رو دیدن ولی آیا از خودتون هم پرسیدید که این به چه دردی می خوره ...

من برای کاری نیاز به کار کردن با پایگاه داده داشتم و در محیط ADO.Net مشغول Query نوشتن و کار با پایگاه داده بودم . من خودم هم  تا اون روز زیاد توجهی به این سرآیند نداشتم ... ولی ...

البته Linq این امکان رو برای شما فراهم میکنه که روی لیست و آرایه هم query  بنویسید . که من کاری به اون ندارم ...

من یه پایگاه داده از قبل آماده کردم ... شما یه پروژه ی جدید ایجاد کنید و پایگاه داده ی خودتون رو بهش اضافه کنید ...یادتون نره که سرآیند using System.Data.Sqlclient رو  حتما اضافه کنید . روی فرم تون یه DataGridView و یه Button  از توی toolbox درگ اند در اپ (drag and drop)کنید ... اول کار با ADO.Net رو میگم ...روی دکمه دوبار کلیک کنید تا Event کلیک رو ایجاد کنه ... تو خود همون تابع برای کلیک دکمه این کد ها رو بنویسید ... من هم براتون توضیح مختصری برای هر کدومش میدم ...

DataGridView

ما زمانیکه با SQL Server کار می کنیم اول کار باید به پایگاه داده وصل بشیم ...تا زمانیکه به پایگاه داده اتصال دارید می تونید باهاش کار کنید ... چه قدر خوب میشد که ما یه نسخه از پایگاه داده ای که لازم داریم یا حداقل بخشی از اون رو میتونستیم به صورت آفلاین استفاده کنیم و موقعی که میخواستیم این تغییرات در پایگاه داده ثبت بشه بهش متصل میشدیم و اونها رو سابمیت می کردیم ...  ایده ی ADO.Net هم همینه ما ملزومات خودمون از پایگاه داده رو شامل جداول مورد احتیاج یا کل اون رو توی ram کامپیوتر تون بارگذاری میشه و د تغییرات رو روی اون اعمال میکنیم و بعد از اینکه کار شما تموم شد و یا هر موقع دیگه میتونیم به پایگاه دادمون متصل شیم و تغییرات رو هم روی اون اعمال کنیم ...

برای اتصال به پایگاه داده اول باید یه ConnectionString بسازید این کار رو این طوری انجام بدید ... فقط به جای SellingDB  اسم پایگاه داده ی خودتون رو بزارید.

SqlConnection con=new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\SellingDB.mdf;Integrated Security=True;User Instance=True");

در مرحله بعدی یک query  بنویسید که چه اطلاعاتی رو از کدوم جدول می خواهید بازیابی کنید ...

string query = "SELECT * FROM UserTBL;";

من توی این Query ساده گفتم که تمام اطلاعات جدول UserTBL رو میخوام (این یکی از جداول پایگاه داده ی من می باشد)...

حالا با استفاده از این دوتا (SqlConnection و رشته ی query ) یه دستور sql می سازم ...

SqlCommand cmd = new SqlCommand(query, con);

حالا برای اینکه اطلاعات رو بتونیم تو کامپیوتر خودمون داشته باشیم باید یه شی از DataSet بسازیم و اون رو با یه SqlDataAdapter که به پایگاه داده وصل میشه(با استفاده از ConnectionString) و اطلاعات مورد احتیاجمون رو میگیره (با استفاده از SqlQueryString) و توی یه DataSet یا DataTable میریزه و برا ما نگه میداره ، از اطلاعات درخواستی پر کنیم ... بعد از اینکار حالا میخوایم اطلاعات رو توی DataGridView که قبلا روی فرممون درست کرده بودیم (قصد اعمال تغییرات روی DataSet رو نداریم ولی این کار رو هم به راحتی میتونیم انجام بدیم) ، نشون بدیم.

DataSet ds = new DataSet();

SqlDataAdapter tblAdaptor = new SqlDataAdapter(cmd);     

tblAdaptor.Fill(ds);

DataView dv = ds.Tables[0].DefaultView;

dataGridView1.DataSource = dv; 

حالا تمام این کارا رو با سه خط ساده ی Linq انجام میدیم ... روی پروژتون توی Solution Explorer کلیک راست کنید و گزینه Add New Item رو بزنید در قسمت سمت چپ پنجره ای که جلوتون باز میشه Data رو انتخاب کنید و  Linq to Sql Class رو انتخاب کنید و در پایین اسم دلخواهتون رو به اون بدید(من Mylinq.dbml گذاشتم) و کلید تایید رو بزنید ...

 

 

AddLinq

 

Linq

خب روی دکمه ای که روی فرمتون هست کلیک کنید و کدهای قبلی که نوشتید رو یا کامنت کنید یا پاک کنید ... حالا کد زیر رو تایپ کنید ... خب بعد از اینکه کلاس رو به پروژتون اضافه کردید، خود ویژوال استودیو یک کلاس (برای من) به اسمه      MylinqDataContext  میسازه . یه شی از اون بسازید و query خودتون رو این طوری باید بنویسید.

DargTable

  MylinqDataContext db = new MylinqDataContext();

  var result = from user in db.UserTBL

                           select user;

result مقداریه که برمیگردونه و user هم یه شی از جدول یا جدول هایی هست که جلوی عبارت in میان ...

خب حالا خیلی راحت ما این رو توی DataGridView  نمایش میدیم

 dataGridView1.DataSource = result;

Result

این چیزایی که من گفتم فقط یه دستور select ساده بود شما خودتون میتونید دستورات پیچیده تر رو هم امتحان کنید و ببیند که چطور به شما امکانات code intellisense و راحتی کدنویسی و کم کردن حجم کدنویسی رو میده ...

من این نمونه برنامه رو توی لینک زیر میزارم تا اگه خواستید یه نگاه بندازید ...البته قبلش بگم که توی SQL Server Express Edition وقتی شما ConnectionString می سازید یه ذره الکی گیر میده و بعضی وقتا موقع اتصال به پایگاه داده با خطا مواجه میشد ... این کدها تست شده و سالم هستند... موفق باشید

کد رو از اینجا دانلود کنید

+ نوشته شده در  دوشنبه بیست و هفتم آبان 1387ساعت 2:40 قبل از ظهر  توسط محمـــد |