آموزش ASP.Net

آموزش ASP.Net - منابع داده

یک کنترل data source با کنترل های Data bound تعامل و ارتباط برقرار کرده و از این طریق فرایندهای پیچیدۀ مقید سازی و اتصال داده ها (data binding) را مخفی می سازد. اینها ابزاری هستند که داده ها را در اختیار کنترل های data bound قرار می دهند و اجرای عملیلاتی همچون درج (insertion)، حذف (deletion)، مرتب سازی (sorting) و بروز رسانی (update) را پشتیبانی می کنند.

هر کنترل data source یک ارائه دهنده ی داده (data provider) معین از جمله پایگاه داده رابطه ای (relational database)، سندXML یا کلاس سفارشی را دربرمی گیرد و همچنین در انجام عملیات زیر به شما کمک می کند:

  • مدیریت اتصال
  • انتخاب داده
  • ذخیره سازی داده در حافظه ی پنهان (caching)، صفحه بندی (paging) . . ..
  • مدیریت و پردازش داده

کنترل های Data source فراوانی در ASP.NET وجود دارد که امکان دسترسی به داده از SQL Server، سرور های ODBC و OLE DB ، فایل های XML و غیره .. فراهم می کنند.

می توان این کنترل ها را بر مبنای نوع داده به دو دسته تقسیم کرد:

  • کنترل های منبع داده سلسله مراتبی (Hierarchical data source controls)
  • کنترل های منبع داده مبتنی بر جدول (Table-based data source controls)

کنترل های داده ای (data source control) که ویژۀ داده های سلسله مراتبی (Hierarchical data)  بکار می روند به ترتیب زیر می باشند:

  • XMLDataSource : اجازه اتصال به فایل ها و رشته های xml با / بدون اطلاعات شِما (schema)  را می دهد.
  • SiteMapDataSource:  اجازه اتصال به ارائه دهندۀ داده (data provider) که اطلاعات نقشۀ سایت (site map) را تامین می کنند را فراهم می آورد.

کنترل های داده ای که برای داده های مبتنی بر جدول بکار می روند، ذیل فهرست شده اند:

<td">کنترل های داده

شرح

SqlDataSource

کنترل SqlDataSource برای اتصال به يک پايگاه داده SQL Server ، OLB DB ، ACCESS و یا Oracle استفاده می شود . اين کنترل قادر به دريافت داده از منابع نام برده و نیز حذف ، اضافه و یا بهروز رسانی اطلاعات در آنها را می باشد.

قابلیت اتصال به یک تامیین کننده ی داده ADO.NET را فراهم می کند که داده های SQL را برمی گرداند. داده های SQL می تواند شامل منابع داده ای باشد که از طریق OLEDB و QDBC قابل دسترسی است.

ObjectDataSource

این کنترل امکان اتصال به یک شئ.Net business سفارشی را بوجود آورده که داده برمی گرداند. به عبارتی دیگر این کنترل نشانگر یک business object است که داده در معماری های برنامه ی تحت وب چند لایه ای در اختیار کنترل های data-bound می گذارد.

LinqdataSource

امکان متصل شدن و دسترسی به نتایج یک query (پرسمان) Linq-to-SQL (از linq به sql) را فراهم می آورد.

این کنترل با ارائه ی امکان استفاده از LINQ در صفحات asp.net از طریق متن نشانه گذاری شده (markup text) داده ها را از data object بازیابی کرده و آن ها را اصلاح می کند.

AccessDataSource

اتصال به پایگاه داده ی Microsoft Access را امکان پذیر می کند. کنترل AccessDataSource يک نسخه ويژه از کنترل SqlDataSource است که برای اتصال به يک پايگاه داده Microsoft Access تعبیه شده است و قادر به برقراری ارتباط با فایل های mdb. می باشد(مشابه کنترل SqlDataSource ، می توان دستورات صريح و مستقیمی برای اعمال مختلف اين کنترل از جمله Select ، Insert ، Update به زبان SQL تعيين کرد).

 

Data Source Views

Data source views در واقع اشیایی از کلاس DataSourceView هستند که بیانگر view های (نمایه) سفارشی از عملیات مختلف مربوط به داده همچون مرتب سازی (sort)، فیلتر کردن (filtering) و غیره .. می باشد.

DataSourceView در حقیقت کلاس پایه تمامی کلاس های data source view می باشد. کلاس مذکور قابلیت های مختلف کنترل های data source را تعریف می کند.

این کلاس خاصیت هایی دارد که در جدول زیر برای شما لیست شده:

خواص

شرح

CanDelete

تعیین می کند آیا امکان پاک کردن داده از منبع داده زیرین (underlying data source) وجود دارد یاخیر.

این خاصیت مقداری برمی گرداند که نشان می دهد آیا شئ DataSourceView مرتبط با شئ DataSourceControl جاری از عملیات ExecuteDelete پشتیبانی می کند یا خیر.

CanInsert

مقداری برمی گرداند که این مقدار نشان می دهد آیا امکان درج داده در پایگاه داده زیرین (underlying database) وجود دارد یا خیر.
مقداری بازیابی می کند که تعیین می کند آیا کنترل منبع داده مربوطه (data source control) با پیکربندی کنونی قابلیت اجرای عملیات درج (insertion operation) را دارد یا خیر.

CanPage

این خاصیت تعیین می کند آیا امکان صفحه بندی (paging) در data source زیرین وجود دارد یا خیر. مقداری برگردانده می شود که این مقدار مشخص می کند آیا شئ DataSourceView مرتبط با شئ DataSourceControl جاری از قابلیت صفحه بندی به وسیله ی داده ای که از متد ExecuteSelect بازیابی کرده پشتیبانی می کند یا خیر.

CanRetrieveTotalRowCount

مشخص می کند آیا امکان بازیابی اطلاعات درباره ی تعداد کل سطرهای داده (data row) وجود دارد یا خیر.

CanSort

این خاصیت تعیین می کند آیا امکان مرتب سازی داده وجود دارد یا خیر.

CanUpdate

این property تعیین می کند آیا امکان بروز رسانی داده وجود دارد یا خیر.

Events

این خاصیت فهرستی از delegate های مدیریت کننده ی رخداد(event-handler) برمی گرداند که برای data source view بکار گرفته می شود.

Name

این خاصیت اسم data source view را برمی گرداند.

 

جدول زیر متدها این کلاس DataSourceView را ارائه می دهد:

متدها

شرح

CanExecute

تعیین می کند آیا دستور (command) مشخص شده می تواند اجرا شود یا خیر.

ExecuteCommand

این تابع دستور (command) معین را اجرا می کند.

ExecuteDelete

عملیات پاک کردن (deletion) را روی لیست داده ای که متصل به شئ DataSourceView است اجرا می کند.

ExecuteInsert

عملیات درج را روی لیست داده پیاده می کند.

ExecuteSelect

لیستی از داده ها از محل ذخیره سازی داده (data storage) انتخاب کرده و برمی گرداند.

ExecuteUpdate

عمل بروز رسانی داده ها را روی لیست داده که متعلق به شئ DataSourceView می باشد اجرا می کند.

Delete

این تابع عملیات پاک کردن (deletion) را به طور ناهمزمان روی لیست داده (مربوط به شئ DataSourceView) پیاده (اجرا) می کند.

Insert

عملیات درج را روی داده های مربوط به شئ DataSourceView اجرا می کند.

Select

دادۀ درخواست (query) شده را باز می گرداند.

لیستی از داده ها به طور ناهمگام از محل ذخیره ی داده برمی گرداند.

Update

داده های مربوط به شئ DataSourceView را بروز رسانی می کند / عملیات بروز رسانی را روی داده ی های مرتبط با شئ DataSourceView اجرا می کند.

OnDataSourceViewChanged

این تابع رخداد ) event (DataSourceViewChanged را فعال می کند.

RaiseUnsupportedCapabilitiesError

این تابع توسط متد RaiseUnsupportedCapabilitiesError به منظور مقایسه ی قابلیت های مورد نیاز (درخواست شده ی) عملیات ExecuteSelect با قابلیت هایی که توسط view پشتیبانی می شود فراخوانده می شود.

 

کنترل SqlDataSource

کنترل SqlDataSource برای اتصال به يک پايگاه داده SQL Server ، OLB DB ، ACCESS و یا Oracle استفاده می شود . اين کنترل قادر به دريافت داده از منابع نام برده و نیز حذف ، اضافه و یا بهروز رسانی اطلاعات در آنها را می باشد. اتصال و دسترسی به داده با بکارگیری دو خاصیت ConnectionString و ProviderName امکان پذیر می باشد.

همان طور که مشاهده می کنید تکه کد زیر نحوه ی کلی نگارش (syntax) کنترل مزبور را نمایش می دهد:

<asp:SqlDataSource runat="server" ID="MySqlSource"
   ProviderName='<%$ ConnectionStrings:LocalNWind.ProviderName  %>'
   ConnectionString='<%$ ConnectionStrings:LocalNWind %>'
   SelectionCommand= "SELECT * FROM EMPLOYEES" />

<asp:GridView ID="GridView1" runat="server" DataSourceID="MySqlSource" />

پیکربندی عملیات مختلف که روی داده های زیرین (underlying data) پیاده می شود به مجموعه خاصیت های کنترل data source بستگی دارد.
مجموعه خاصیت های کنترل SqlDataSource که رابط برنامه نویسی (programming interface) این کنترل را فراهم می کنند، در جدول زیر مشاهده می کنید:

Property Group (مجموعه خاصیت)

شرح

DeleteCommand,

DeleteParameters,

DeleteCommandType

نوع، پارامتر و دستور SQL ویژه ی پاک کردن سطرها را خوانده یا تنظیم می کند.

FilterExpression,

FilterParameters

پارامترها و رشته های filtering (فیلتر) داده را بازیابی کرده یا مقداردهی می کند.

InsertCommand,

InsertParameters,

InsertCommandType

نوع (type)، پارامترها و دستور SQL ویژه ی درج (insert) سطر (row) در پایگاه داده را برگردانده یا تنظیم می کند.

                                    

SelectCommand,

SelectParameters,

SelectCommandType

نوع (type)، پارامتر و دستور SQL ویژه ی بازیابی سطرها از پایگاه داده را بازگردانی کرده یا مقداردهی می کند.

SortParameterName

اسم پارامتر ورودی (input parameter) که رویه ی آماده (stored procedure) دستور (command) مورد نظر از آن به منظور مرتب سازی داده ها کمک می گیرد، بازیابی کرده یا تنظیم می کند.

UpdateCommand,

UpdateParameters,

UpdateCommandType

نوع (type)،پارامترها و دستور SQL ویژه ی بروز رسانی سطرهای (row) پایگاه داده را بازگردانده یا مقداردهی می کند.

 

در تکه کد (code snippet) زیر مشاهده می کنید که یک کنترل data source (منبع داده) به منظور دستکاری و مدیریت داده (data manipulation) فعال سازی شده:

<asp:SqlDataSource runat="server" ID= "MySqlSource"
   ProviderName='<%$ ConnectionStrings:LocalNWind.ProviderName  %>'
   ConnectionString=' <%$ ConnectionStrings:LocalNWind %>'
   SelectCommand= "SELECT * FROM EMPLOYEES"
   UpdateCommand= "UPDATE EMPLOYEES SET LASTNAME=@lame"
   DeleteCommand= "DELETE FROM EMPLOYEES WHERE EMPLOYEEID=@eid"
   FilterExpression= "EMPLOYEEID > 10">
   .....
   .....
</asp:SqlDataSource>

 

کنترل ObjectDataSource

کنترل ObjectDataSource با فعال سازی کلاس های user-dfined (کلاس های تعریف و ارائه شده توسط کاربر) خروجی (output) توابع کلاس های مذکور را به کنترل های data bound مربوط ساخته و متصل می کند. رابط برنامه سازی (programming interface) این کلاس تقریبا با کنترل SqlDataSource یکسان است.

زیر دو جنبه ی بسیار مهم متصل یا مقید سازی business object ها را مشاهده می کنید:

  • کلاس مورد نظر باید یک سازنده (constructor) پیش فرض داشته باشد، ناپایدار (stateless) بوده و متدهایی داشته باشد که بتوان برای انتخاب، بروز رسانی، درج و حذف semantics (لغات و معانی) نگاشت کرد.
  • شئ مورد نظر باید آیتم ها را به صورت تکی بروز رسانی کند، عملیات دسته ای و گروهی پشتیبانی نمی شوند.

در این مرحله برای آشنایی هر چه بیشتر شما یک مثال کاربردی ارائه می دهیم. کلاس Student کلاسی است که باید با یک object data source بکار گرفته شود. کلاس ذکر شده دارای سه خاصیت (property) می باشد:  student id، name و city . این کلاس همچنین دارای یک سازنده (constructor) پیش فرض و متد GetStudents برای بازیابی داده است:

کلاس Student:

public class Student
{
   public int StudentID { get; set; }
   public string Name { get; set; }
   public string City { get; set; }
   
   public Student()
   { }
   
   public DataSet GetStudents()
   {
      DataSet ds = new DataSet();
      DataTable dt = new DataTable("Students");
      
      dt.Columns.Add("StudentID", typeof(System.Int32));
      dt.Columns.Add("StudentName", typeof(System.String));
      dt.Columns.Add("StudentCity", typeof(System.String));
      dt.Rows.Add(new object[] { 1, "M. H. Kabir", "Calcutta" });
      dt.Rows.Add(new object[] { 2, "Ayan J. Sarkar", "Calcutta" });
      ds.Tables.Add(dt);
      
      return ds;
   }
}

با دنبال کردن مراحل زیر شئ مورد نظر را به object data source متصل ساخته و داده ها را بازیابی کنید:

  • ابتدا یک وب سایت جدید ایجاد کنید.
  • حال یک کلاس (Students.cs) به وب سایت خود اضافه کنید. برای این منظور در پنجره ی solution explorer روی پروژه راست کلیک کرده، یک قالب کلاس (class template) اضافه کنید، سپس کد فوق را در آن جای گذاری کنید.
  • Solution را ساخته تا application مورد نظر بتواند از ارجاع (reference) به کلاس استفاده کند.
  • یک کنترل object data source در فرم وب (web form) قرار دهید.
  • با انتخاب object، data source را پیکربندی (configure) کنید.

selecting the object

  • متد یا متدهایی را برای اجرای عملیات مختلف روی داده انتخاب کنید. در این مثال تنها یک متد بکار رفته است.

select data method

  • اکنون یک کنترل data bound همچون grid view روی صفحه قرار داده و object data source را به عنوان منبع داده ی زیرین (underlying datasource) انتخاب کنید.

data bound control

  • در این مرحله design view ظاهری همچون تصویر زیر خواهد داشت:

object data source

  • پروژه را اجرا کنید، خواهی دید که tuple های (مجموعه ای از مقادیر مرتبط با هم) hard code شده از کلاس students بازیابی می شود.

object data result

 

کنترل AccessDataSource

اتصال به پایگاه دادۀ Microsoft Access را امکان پذیر می کند. کنترل AccessDataSource يک نسخه ويژه از کنترل SqlDataSource است که برای اتصال به يک پايگاه داده Microsoft Access تعبیه شده است و قادر به برقراری ارتباط با فایل های mdb. می باشد. این کنترل در واقع مبتنی بر پایگاه داده ی SqlDataSource بوده و رابط برنامه نویسی (programming interface) ساده تری نسبت به آن ارائه می دهد.

تکه کد زیر دستور نگارش کنترل مزبور را به نمایش می گذارد:

<asp:AccessDataSource ID="AccessDataSource1 runat="server" 
   DataFile="~/App_Data/ASPDotNetStepByStep.mdb" SelectCommand="SELECT * FROM  [DotNetReferences]">
</asp:AccessDataSource>

توجه داشته باشید که کنترل AccessDataSource فقط پایگاه داده را در حالت read-only اجرا می کند. با این وجود می توان از آن برای اجرای عملیاتی همچون درج (insertion)، بروز رسانی (update) یا حذف (delete) استفاده کرد. این کار با استفاده از دستورات ADO.NET و مجموعه ای از پارامترها (parameter collection) امکان پذیر می باشد.

بروز رسانی برای پایگاه داده ی Access به خصوص از داخل یک اپلیکیشن ASP.NET مشکل ساز است زیرا که پایگاه دادۀ Access تنها یک فایل ساده است و همچنین حساب (account) پیش فرض ASP.NET  ممکن است مجوز نوشتن را در فایل پایگاه داده نداشته باشد.

در صورتی که سوال و یا نظری دارید، از بخش نظرات با ما در میان بگذارید.

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

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

مبحث آموزشی

آموزش ASP.Net

Learn ASP.Net

سرفصل ها

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

کلیک کنید و سوالات خود را از ما بپرسید
لطفا فرم سوال را پر کنید

سوال شما با موفقیت ثبت شد. برای اینکه بتوانیم به شما اطلاع رسانی کنیم، موارد زیر را وارد کنید:

لطفا چند لحظه منتظر بمانید ...