تبلیغات
آموزشASP.NET - ذخیره و بازیابی داده توسط ADO.NET (بخش سوم)
 
فردا روشن اسن به
آموزشASP.NET
صفحه نخست         تماس با مدیر         پست الکترونیک        RSS         ATOM
 
 
در بخش اول این مقاله با نحوه ایجاد  Connection و  Dataset آشنا شدیم . همانگونه که اشاره گردید از مجموعه های Tables,Rows و Columns برای دستیابی به داده موجود در یک DataSet استفاده می گردد. با استفاده از مجموعه Rows می توان سطرهائی از یک  DataSet را تغییر، حذف و یا سطر جدیدی را به آن اضافه نمود. در ادامه به بررسی نحوه انجام عملیات فوق ، خواهیم پرداخت . در این رابطه از یک بانک اطلاعاتی نمونه ( SQL Server ) با نام Contact ، یک DataSet نمونه با نام Dataset11  ، یک کنترل DataGrid بر روی فرم وب با نام DataGrid1 و سه Button به منظور انجام عملیات افزودن ، ویرایش و حذف سطرهائی از DataSet استفاده شده است :

بانک اطلاعاتی Contact :

Data set نمونه :

فرم وب WebForm2.aspx : ( شامل DataGrid ، سه Button و اشیاء لازم به منظور ارتباط با بانک اطلاعاتی )

تنظیم خصلت های  DataGrid :

اجرای اولیه WebForm2.aspx :

اضافه نمودن رکورد
 برای افزودن یک رکورد به Data Set ، می بایست یک شی جدید Row ، ایجاد و در ادامه آن را به مجموعه Rows مربوط به شی DataSet اضافه نمود. کد زیر، نحوه انجام عملیات فوق را نشان می دهد :

VB.NET ::Add Record

Private Sub butAddRow_Click (ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles butAddrow.Click
 Dim rowNew As DataSet1.ContactRow = DataSet11.Contact.NewRow
rowNew.Fname = "
مدیریت سایت "
rowNew.Lname = "
مدیریت سایت "
rowNew.Email = "Info@Srco.ir"
DataSet11.Contact.Rows.Add(rowNew)
End Sub

پس از فعال نمودن ( کلیک ) دکمه "اضافه نمودن رکورد" ، یک سطر با اطلاعات فوق به  Dataset اضافه شده و در ادامه بهنگام سازی بانک اطلاعاتی از طریق DataSet می شود.

ویرایش یک رکورد
برای تغییر یک سطر در Data Set ، در ابتدا با استفاده از متد FindBy  سطر مربوطه را پیدا نموده ( بر اساس یک کلید جستجو که معمولا" فیلدی است که در بانک اطلاعاتی به عنوان "کلید اولیه " ، تعریف شده است ) و در ادامه می توان  تغییرات دلخواه را بر روی فیلدهای اطلاعاتی ، اعمال نمود( فیلد ID به عنوان DataKeyField در DataSet  تعریف شده است ) .کد زیر، نحوه انجام عملیات فوق را نشان می دهد :

VB.NET ::Update Record

Private Sub butChangeRow_Click (ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles butChangeRow.Click
 Dim rowChange As DataSet1.ContactRow
rowChange = DataSet11.Contact.FindByID("
2")
rowChange.Fname = "
ایران"
 End Sub

در مثال فوق ، سطری که دارای ID با شماره 2 می باشد ، با استفاده از متد FindBy پیدا شده و در ادامه فیلد Fname آن به " ایران" ، تغییر داده می شود. پس از اجرای برنامه و فعال نمودن دکمه " ویرایش رکورد " ، تغییرات در DataSet اعمال و در ادامه بهنگام سازی بانک اطلاعاتی از طریق DataSet می شود.

حذف رکورد
برای حذف یک سطر در Data Set ، در ابتدا با استفاده از متد FindBy  یک سطر از جدول را در اختیار گرفته و در ادامه با استفاده از متد Delete مربوط به شی Row آن را حذف می نمائیم .کد زیر، نحوه انجام عملیات فوق را نشان می دهد :

VB.NET :: Delete Record

Private Sub butDeleteRow_Click (ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles butDeleteRow.Click
   Dim rowDelete As DataSet1.ContactRow
   rowDelete = DataSet11.Contact.FindByID("9")
  rowDelete.Delete()
 End Sub

در مثال فوق ، سطری که دارای ID با شماره 9 می باشد ، با استفاده از متد FindBy ، پیدا شده  و در ادامه امکان حذف آن با استفاده از متد Delete ، فراهم می گردد. پس از اجرای برنامه و فعال نمودن دکمه " حذف رکورد " ، تغییرات در DataSet اعمال و در ادامه بهنگام سازی بانک اطلاعاتی از طریق DataSet انجام می شود.

بهنگام سازی بانک اطلاعاتی از طریق DataSet
با استفاده از متد Update مربوط به Adapter می توان اقدام به بهنگام سازی بانک اطلاعاتی از طریق شی DataSet نمود.عملیات فوق، معمولا" پس از پردازش تمامی رویدادهای کنترل بر روی صفحه انجام می شود ، بنابراین می توان متد Update را  از طریق رویداد Page_PreRender فعال نمود ( فراخوانی ).

VB.NET :: Update Database From DataSet

Private Sub Page_PreRender (ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles MyBase.PreRender
  SqlDataAdapter1.Update(DataSet11)
End Sub

ADO.NET در زمان بهنگام سازی یک بانک اطلاعاتی از طریق  Data Set ، عملیات زیر را انجام می دهد:

  • تشخیص تغییرات بر روی Data Set با بررسی خصلت RowState مربوط به هر یک از اشیاء DataRow
  • فراخوانی InsertCommand,DeleteCommand و یا UpdateCommand مربوط به شی Adapter  به منظور اعمال تغییرات لازم دربانک اطلاعاتی
  • Reset نمودن خصلت های RowState بهنگام شده مربوط به اشیاء DataRow به UnChanged

خصلت های InsertCommand,DeleteCommand و UpdateCommand مربوط به شی Adapter به صورت اتوماتیک و از طریق شی SelectCommand ایجاد می گردند(زمانی که Data Set از طریق یک Adapter ( در حالت Design ) ایجاد می گردد). هر یک از خصلت های فوق ، یک شی OleCommand و یا SqlCommand را ارائه می نمایند . اشیاء Command دارای خصلت های زیر می باشند که نحوه اجرای Command را مشخص می نمایند .

  • خصلت CommandText شامل عبارت SQL و یا نام Stored Procedure به منظور اجرای دستور است.

  • خصلت CommandType نحوه اجرای دستور را با استفاده از تنظیمات زیر مشخص می نماید :
     مقدار  Text ، باعث اجرای دستور به عنوان یک عبارت SQL می گردد ( مقدار پیش فرض )
     مقدار StoredProcedure ، باعث اجرای دستور به عنوان یک Stored Procedure در بانک اطلاعاتی می گردد .
     مقدار TableDirect ، باعث برگرداندن تمامی جدول می گردد . تنظیم فوق صرفا" در رابطه با OLE DB.NET  استفاده می شود ( Data Provider )

می توان محتوی DataSet و نحوه بهنگام سازی داده را با تغییر عبارت SQL استفاده شده توسط این اشیاء ، انجام داد .

به منظور مشاهده و یا تغییر دستورات فوق ، مراحل زیر را دنبال می نمائیم :

  • در پنجره Properties ، بر روی خصلت Command  مورد نظری که قصد تغییر آن را داریم ، کلیک می نمائیم.  ( Double-Click
  • خصلت CommandText را برای Command انتخاب و در ادامه با کلیک نمودن بر روی دکمه مربوطه ( Ellipsis ) ، جعبه محاوره ای Query Builder نمایش داده می شود.

  • انتخاب ستون هائی که قصد استفاده از آنان در Command را داریم ( فعال نمودن Check Box ) ویا تایپ مستقیم عبارت SQL پانل مربوط به Command .

ایجاد یک ارتباط با بانک اطلاعاتی در زمان اجراء
ایجاد اشیاء مربوط به داده در حالت Design روشی مناسب برای فراگیری نحوه دستیابی داده توسط ADO.NET می باشد، چراکه ویژوال استودیو دات نت ، به صورت اتوماتیک اشیاء Connection و Adapter را ایجاد می نماید . برخی از  تتظیمات مربوط به خصلت ها نظیر ConnectionString پیچیده بوده و ایجاد آنان بدون کمک Design mode امری مشکل به نظرمی آید. پس از ایجاد یک Connection در حالت Design ، می توان با استفاده از عملیات Copy&Paste، تنظیمات مربوط به خصلت را به منظور ایجاد Connection مشابه در کد مورد نظر،استفاده نمود . دستیابی به اشیاء داده از طریق  کد، مشابه مراحل گفته شده برای دستیابی به داده در حالت Design می باشد :

  • مرحله اول : ایجاد شی Connection
  • مرحله دوم : ایجاد یک شی Adapter
  • مرحله سوم : ایجاد یک شی Data Set
  • مرحله چهارم : فراخوانی متدها بر روی شی Adapter به منظور پرنمودن و یا بهنگام سازی Data Set
  • مرحله پنجم : استفاده از فرآیند نسبت دهی داده و یا روش های دیگر به منظور نمایش داده از طریق  Data Set

کد زیر اشیاء داده را ایجاد و داده موجود در یک بانک اطلاعاتی SQL را نمایش می دهد :

VB.NET ::Create data objects&Display data

Private Sub Page_Load (ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles MyBase.Load

مرحله اول : ایجاد Connection

Dim sqlConnectContactMgmt As New SqlConnection ("Server=(local) ; database=Contact;Trusted_Connection=yes"

مرحله دوم : ایجاد یک Data Adapter

Dim  sqladapterContactMgmt As New SqlDataAdapter("Select * From Contact",SqlConnectContactMgmt)

مرحله سوم : ایجاد یک Data Set

Dim dsContacts As New DataSet( )

مرحله چهارم : پر نمودن Data Set

sqladapterContactMgmt.Fill ( dsContacts , "Contact")

مرحله پنجم : نمایش اطلاعات در یک Data Grid

  DataGrid1.DataSource = dsContacts.Tables("Contact").DefaultView
  DataGrid1.DataBind( )
End Sub

بهنگام سازی  بانک اطلاعاتی در زمان اجراء
همانگونه که اشاره گردید ، ADO.NET از خصلت های DeleteCommand,InsertCommand و UpdateCommand مربوط به شی Adapter برای بهنگام سازی بانک اطلاعاتی از طریق Data Set استفاده می نماید . زمانی که یک Adapter در زمان اجراء ایجاد می گردد ، می بایست خصلت های فوق را در ابتدا ایجاد تا امکان فراخوانی متد Update مربوط به شی Adapter فراهم گردد . برای ایجاد خصلت های فوق در زمان اجراء مراحل زیر را دنبال می نمائیم :

  • مقداردهی مناسب شی SelectCommand مربوط به Adapter .  تکنولوژی ADO.NET از خصلت CommandText مربوط به شی SelectCommand برای ایجاد تنظیمات لازم در ارتباط با خصلت های  InsertCommand,DeleteCommand  و UpdateCommand استفاده می نماید .

  •  ایجاد یک شی Command Builder برای شی Adapter . شی Command Builder  به نوع Data Provider بستگی دارد : OleDbCommandBuilder و SqlCommandBuilder .

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

VB.NET ::Updating DataBase

Private Sub Page_Load (ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles MyBase.PreRender

مرحله اول : ایجاد Connection

Dim ContactMgmt As New SqlConnection ("Server=(local) ; database=Contact;Trusted_Connection=yes"
Dim  adapterContactMgmt As New SqlDataAdapter("Select * From Contact",ContactMgmt)

مرحله دوم : ایجاد یک Data Set

Dim dsContacts As New DataSet( )
adapterContactMgmt.SelectCommand.CommandText = "SELECT * FROM Contact"

مرحله سوم : ایجاد دستورات Insert ,Delete و Update بصورت اتوماتیک

Dim CmdContanctMgmt As SqlCommandBuilder = New SqlCommandBuilder ( adapterContactMgmt )

مرحله چهارم : ایجاد یک Row جدید

Dim rowInsert As DataRow = dsContacts.Tables("Contact").NewRow
  RowInsert("Fname") = "
مدیریت سایت "
  RowInsert("Lname ") = "
مدیریت سایت"
  RowInsert("Email ") ="Info@Srco.ir"
dsContacts.Tables ("Contact") .Row.Add(RowInsert)

مرحله پنجم : بهنگام سازی بانک اطلاعاتی

adapterContactMgmt.Update(dsContacts.Tables("Contact")

End Sub

در بخش سوم این مقاله با نحوه استفاده از Data Set در فرم های وب ،آشنا خواهیم شد.





نوع مطلب :
برچسب ها :
لینک های مرتبط :


سه شنبه 14 شهریور 1396 11:05 ق.ظ
Everyone loves what you guys tend to be up too.
This type of clever work and coverage! Keep up the fantastic works guys I've added you guys to blogroll.
چهارشنبه 23 فروردین 1396 08:01 ب.ظ
Thanks in favor of sharing such a good thinking, article is pleasant, thats why i
have read it entirely
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر


درباره وبلاگ

سلام من آرش کاکاوند دانشجوی رشته کامپیوتر هستم و ورود شما رابه دنیای aspخوش امدمیگم.حتما نظر بدین تا من کارم رو بهتر ادامه بدم

مدیر وبلاگ : ارش کاکاوند
مطالب اخیر
نویسندگان
صفحات جانبی
نظرسنجی
شما کدام یک از برنامه های زیر را برای طراحی وب انتخاب می کنید؟








جستجو

آمار وبلاگ
کل بازدید :
بازدید امروز :
بازدید دیروز :
بازدید این ماه :
بازدید ماه قبل :
تعداد نویسندگان :
تعداد کل پست ها :
آخرین بازدید :
آخرین بروز رسانی :