نحوه ذخيره و بازيابی داده توسط ADO.NET New Page 1



ساير




 

 

 

SAKHA RAVESH CO.

 ا مروز

 سه شنبه  5  ارديبهشت  1396  2017  Apr.  25   Tuesday ToDay
صفحه اصلی  مقالات نکته هادايره المعارف خودآموزها | تازه ها خود آزمون ها    
  نسخه قابل چاپ  

    5 4 3 2 1 

 عنوان

 نويسنده

  مشاهده

 تعداد آراء

 امتياز

 ذخيره و بازيابی داده توسط ADO.NET (بخش دوم )

 مديريت وب

21744

25

4.1

با توجه به جایگاه داده در عصر حاضر و  لزوم نگاه جامع به این مقوله مهم ، بر آن شدیم تا محوریت فعالیت های خود را بر  روی این موضوع متمرکز نمائیم . از این رو گروه فابک با شعار فناوری اطلاعات برای کسب وکار شکل گرفت و  خدمات خود  را از طریق  سایت www.fabak.ir  به مخاطبان محترم عرضه می نماید

 

ذخيره و بازيابی داده توسط ADO.NET (بخش دوم)

ذخيره و بازيابی داده توسط ADO.NET (بخش دوم)
در بخش اول اين مقاله با نحوه ايجاد  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 در فرم های وب ،آشنا خواهيم شد.



جستجو

مقالات                 
دايره المعارف       
دوره های آموزشی


 

 

مشاهده گروه ها



              

 

 تهيه شده در شرکت سخا روش -  1382